Java程序

2024-10-19

Java程序(通用12篇)

Java程序 篇1

1 Java历史

Java是由Sun Microsystems公司于1995年5月推出的一种程序设计语言, 主要应用于互联网、个人PC、数据中心、游戏控制台、科学超级计算机。它刚开始的名字叫“Oak”, Java最初是为电视、控制烤面包机等家用电器的交互操作而设计的, 但当时并没有得到成功的推广、随着互联网的发展, Java经过数次的设计和改进后演变成当前受到极大欢迎的Java。

基于Java前身设计的特点, 其具备了可移植性和平台无关性, 成为了可以运行于不同的环境、不同的CPU上的程序语言。当前Java在全球得到了大量的推广和应用, 在计算机应用中发挥着强大的作用。

2 Java的特征

人们在传递信息时常利用自身的器官进行表达, 如声音、情绪、动作、姿态等。但这些声、图、像是转瞬即逝的, 在当前计算机发达的社会, 为保留这些信息并把信息进行传递, 程序语言便应运而生。

程序设计语言是表达软件的工具, 是面向机器的人工语言。Java作为一种高级的程序语言, 在实际应用中拥有面向对象, 简单性, 可移植性, 分布性, 动态性, 健壮性, 体系结构中立性, 安全性等多种优点。

2.1 简单性 (Simple)

Java语言是对C++语言的升华, 有不同与C++语言, 它在C++语言的基础上进行了很大的改进, 在保留了C++语言精华部分的同时也摒弃了C++语言中不常用、不易于理解、繁杂的部分。因为Java是在C++语言的基础上发展的所以懂得C++语言的人如果学校Java就会变的很简单, 同时, 学习Java语言也不需要拥有C++语言基础。

2.2 面向对象 (Object-oriented)

Java语言虽然是杂合语言, 但它是纯面向对象的编程语言。出了基本的数据类型外, 为了使程序语言更容易理解, Java程序语言的编写思想是纯粹面向对象的。

2.3 体系结构中立 (Architecture-neutral)

Java源程序经编译后的字码节与计算机体系结构及平台无关, 可在多种系统上运行。

2.4 可移植性 (Portable)

体系结构的中立性使Java程序可以在不同的平台上运行, 但Java语言的文本是统一的, 在面对不同的机器结构时, 整数32位、长整数64位保持不变。Java系统提供的类库是可以访问任意不同的平台的, Java语言的可移植性实现了软件的“一次开发, 处处运行”。

3 Java运行原理

程序语言是需要经过编译或者解释后才能被电脑执行的, Java程序语言需要经过编译和解释两个过程后才能够被电脑执行, Java源程序准备好, 第一步需要将其翻译成源代码;第二步由虚拟机将源代码转换成电脑能够识别的程序。

Java虚拟机 (Java Virtual Machine) 是想象中的机器, 它的实现需要通过在现实中的计算机上进行软件模拟, Java虚拟机有自己想象中的硬件, 如处理器、堆栈、寄存器等, 还具有相应的指令系统。虚拟机是机器与编译程序之间的连接者, 它具有抽象性, 在编译程序翻译成虚拟机能够识别的源代码之后, 解释器就能够将源代码转换成电脑能够执行的程序。由于编译程序与虚拟机拥有共同的接口, 所以编译程序主要的面向对象即是虚拟机, 只需要生成虚拟机能够理解的程序。在Java中称能够被虚拟机理解的代码为字节码, 虽然各个平台的解释器各不相同, 但是虚拟机都是相同的。Java源程序经过编译器编译后变成虚拟机能够理解的字节码, 虚拟机对字节码进行解释, 虚拟机将字节码发送给解释器, 解释器将其翻译成特定机器能够理解的机器码, 然后进行运行。

Java虚拟机由指令集、寄存器、栈、无用单元收集堆和方法区域五个部分组成, 它是Java语言的基础, Java语言相对于其他的程序语言而言比较容易学习, 使用的概念不多, 较简单。而且Java自身具有自动内存垃圾收集功能, 在运用Java时不需要对内存进行释放。

4 Java编译案例

4.1 Java开发工具

Java可采用的开发工具有多种, Sun公司开发的Java开发工具包JDK (Java Development Kit) 在Java开发中较为常用。

4.2 Java编译

在编写Java程序时, 首先需要按照Java语言的语法规则编写相应的源文件代码利用编译程序将Java源程序编译成可执行的程序, 生成由虚拟的机器代码组成的类文件。下面简要分析简单的Java程序。

使用编辑程序时, 输入上例中的源代码, 并以普通文本格式保存, 且保存时文件名必须为Hello Lucy.java。

然后用编译程序javac.exe编译上述源程序文件, 在Windows系统中输入javacHello Lucy.java

经编译后生成类文件Hello Lucy.class

然后使用解释程序java.exe进行解释运行, 命令为:java Hello Lucy

解释运行后, 屏幕将输出:

Hello, Lucy!

5 结语

Java的诞生是对传统传统计算机模式的挑战, 对计算机软件产业都产生了深远的影响, 随着信息时代的发展, Java在未来的时间里将会有更广阔的应用前景。

摘要:Java是随着软件开发技术的演变而出现的, 它是一种功能强大的新型的面向对象的程序设计语言, 可以解决很多传统上的程序设计难题。本文主要从java语言的历史、特点、编译等方面对Java程序设计进行了简要阐述。

关键词:Java语言,软件开发,程序设计,信息

参考文献

[1]冀振燕, 程虎.Java编译程序技术与Java性能[J].软件学报, 2000 (2) .

[2]闫伟, 谷建华.Java虚拟机即时编译器的一种实现原理[J].微处理机, 2007 (5) .

[3]余俊, 于瑞涛.Java RMI的原理和实现方法[J].青岛大学学报:工程技术版, 1999 (3) .

Java程序 篇2

摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!

关键语句介绍

一、while 语句 一般形式:

whi l e(条件表达式){ 语句体 ……… } 执行过程:

条件表达式为真,执行语句体。否则,退出!

二、do while 语句 一般形式: do { 语句体 …….} while(条件表达式);执行过程:

先执行一次语句体,判断 条件表达式是否为真,为真再执行do语句中的语句体。为假,退出。

需要注意:与whi l e语句区别

黑马程序员合肥中心 编著

1.while(条件表达式)后面有分号;2.不管条件表达式是否为真,语句体均会执行一次。

三、for 语句 一般形式:

for(子句 1;子句 2;子句 3){ 语句体 …… } 执行过程:

四、break、cont inue 语句 break 退出所在循环 : int stopHere = 5;for(int i=1;i<8;i++){ if(i == stopHere){ break;} System.out.println(“i = ” + i);

黑马程序员合肥中心 编著

} //打印结果:5,6,7,8均没有打印出来。

需要注意的一个问题: int stopHere = 5;for(int i = 1;i < 8;i + +){ if(i = = stopHere){ / /语句体 } break;System.out.println(“i = ” + i);} 这个时候编译器会报错:无效的 System.out 输出语句。冷静分析一下:

break 语句会结束循环,所以不会再去执行 System.out 输出语句。编译会认为你在多此一举,sorry 报个错!

continue 退出本次循环,不会退出整个循环: int skipHere = 5;for(int i = 1;i < 8;i + +){ if(i = = skipHere){ continue;}

黑马程序员合肥中心 编著

System.out.println(“i = ” + i);} / /打印结果:除了5没有打印出来。

i = 1 i = 2

五、switch 语句 一般形式: switch(常量){ case 表达式1:语句体1;break;case 表达式2:语句体2;break;.....default : 语句体n;break;}

执行过程: 执行过程:

case 根据自己的表达式看是否匹配常量,如果匹配就执行语句体,否则执行 default 语句。

case 执行类似于并行操作,不是顺序操作。所以各个表达式的值不可以相同。

黑马程序员合肥中心 编著

哪个 case 匹配常量就会执行自己的语句体,不会再去寻找其他 case 语句。注意:

<1> case 穿透:省去break关键字

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 10;05 switch(i){ 06 case 10:

07 System.out.println(“ A”);08 //break;09 case 5: System.out.println(“ B”);11 //break;12 case 7: System.out.println(“ C”);14 //break;15 default : System.out.println(“ error”);17 break;18 }//打印结果:A B C error

<2> 在 Java 编程中 switch 括号中的常量的数据类型只可以为 int 类型或者是 byte、char、short(因为 byte、char、short 可以自动提升为 int),常量类型不可以是 long、float 和 double 等数据类型。<3> 多个 case 可以合并 , 相当于 “ 或 ”,例如下面 i 等于 10、5、7 都可以执行打印语句。

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 5;05 switch(i){ 06 case 10: 07 case 5: 08 case 7:

09 System.out.println(“ C”);10 break;11 default : System.out.println(“ error”);13 break;

黑马程序员合肥中心 编著 }//打印结果:C <4> default 语句可以省,但是不推荐,他后面的 break 可省 <5> case 或者 default 子句中可以写多条语句 case 7: System.out.println(“ C”);if(i == 5){ System.out.println(“ i = ” +i);} break;<6> case 或者 default 子句中还可以嵌套 switch 或者其他语句

六、return 语句

终止方法的运行并指定要返回的数据。两种形式:

<1> return 表达式;

<2> return ;没有任何数据直接返回,结束函数(方法)的执行。

七、if 语句

一般形式:

1.if(条件表达式){ 语句体} 2.if(条件表达式){ 语句体} else{语句体 } 3. if(条件表达式1){ 语句体} else if(条件表达式2){语句体 } else {语句体 }

特别注意:形式3,else与其最近的上个if 配对。例子:

[AppleScript] 纯文本查看 复制代码 ?

黑马程序员合肥中心 编著

01 /**

02 * @author 传智播客 03 */

04 public class TestIF {

05 public static void main(String[] args){ 06 int i = 30;07 if(i < 20){

08 System.out.println(“<20”);09 } else if(i < 50){ System.out.println(“<50”);11 } else if(i < 80){ System.out.println(“<80”);13 } else System.out.println(“>=80”);15 System.out.println(“黑马程序员!”);16 }

如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http:///去了解java基础知识!

浅议Java程序设计教学改革 篇3

关键词:过渡;项目;SIGTS

中图分类号:G434文献标识码:A 文章编号:1009-3044(2007)15-30868-01

The Tray Discussion on Java Programming Education Reform

LU Ping

(Suzhou Institute of Trade&CommerceInformation Department,Suzhou 215009,China)

Abstract: At present, many high schools' programming courses have made arrangement for Java teaching, but some questions may occur in the instruction process: the content is too much, the class is insufficient and the student's programming ability is weak and so on. Based on many years' Java teaching experience, the author advances a Java education reform scheme: using project to urge learning, giving first place to practices, making instruction subsidiary. The reform emphasis on Java instruction attention transited from the former courses, and proposes project instruction based on SIGTS. The practices prove that students' initiative and programming ability are both improved after the reform, which make it more adaptive to the corporation's needs.

Key words:transit;project; SIGTS

1 引言

在信息技术高速发展的21世纪,对于计算机专业程序设计课程的设置,各个高校都有所不同,但大多学校都选择了先开结构化程序设计语言课程,如C、Pascal语言;在这基础上再开设面向对象的程序设计语言,如C++、Java语言。进入网络时代后,Java语言跟网络紧密结合的特性使之大放异彩。因此,许多高校在程序设计课程上都把Java程序设计作为核心课程。在教学的过程中,很多带Java课的教师都会碰到一个问题:Java知识点太多、涉及面太广但课时量却相对较少。

如何较合理地进行Java教学,使得学生掌握更多知识、更全面地提高Java语言的程序设计能力,是每个Java课教师应该思考的问题。笔者所在的高校是高职高专性质的学校,对于高职高专学生而言,教学的重点是培养他们的实践动手能力,提高他们的职业技能,以使他们在工作岗位上能更快的适应。经过多年的Java教学,笔者大胆地提出一种“项目促学、实践为主、讲授为辅”的教学改革方案。

2 从C语言到Java语言的过渡

以往几届学习过Java程序设计的学生都反映在学校里掌握的Java编程能力,在实现一个完整的系统或到公司面试时都太显微薄,有心无力。这反映了Java课程教师并没有很好地将系统、项目的概念融入其中。

而对于强调技能的高职院校,需要学生比本科院校的学生更牢固地掌握实践、动手技能,而不是一个一个独立的知识点。这一现象提醒笔者,Java语言的教学不同于C语言教学,绝不仅仅是简单的按教科书顺序一个个知识点、一章章地讲授,应该以实践为主,切实提高学生的编程技能。

由于笔者所在院校的计算机专业都把C语言作为Java语言的前期课程,而C语言和Java语言是同一语系,很多语法、定义等都很类似。因此,在教学过程中,提倡学生自学Java语言基础、流程控制语句、数组等知识点。在此基础上,Java课程教师只需要设计一些程序实例,分别用Java语言和C语言实现,再对照两段程序,把其中的不同点一一说明,提醒学生应该注意的地方。这样的教学方式就能使学生更快、更好地掌握Java的基础部分知识。

Java的教学可以从面向对象的概念真正开始,采用类比法介绍面向对象编程中的专业词汇:对象、类、事件、封装、继承、多态等。这一章节的知识点应以教师讲授为主,辅以恰当的程序实例使学生掌握面向对象程序设计的编程模式。

3 基于SIGTS的项目教学

在Java课程设计书籍普天盖地的同时,如何选择其中合适的项目,让同学们参与其中,是基于SIGTS项目教学首先要考虑的问题。Java知识点侧重面各不相同,因此项目也可粗略地分为以下几类:

(1)基于图形、图像与多媒体的系统开发;

(2)基于JSP的网络应用;

(3)现在很流行的游戏开发等等。

同学们对不同类型系统开发的兴趣不同,教师应根据同学们的兴趣来选择适当类型的项目。另一方面,每个学生的学习水平、精神和意志也不同。教师在选择项目时,应选择一些难度适中,即可以让同学们不至于“望项目而却步”,又能在做完后,编程技能有很大提高的项目。

在调查学生兴趣、学习基础和编程能力的基础上,删选出若干个合适的项目,并向学生介绍每个项目的功能、技术要点、总体设计思想、系统模块结构图等。

介绍完项目之后,同学们根据自己的兴趣,选择某一项目,根据项目进行分组。在分组这一过程中,若出现项目人数相差太多,教师可以给予适当的调整,以确保每个项目的参与人数大体相当。在每个项目组中,教师还需根据学生学习能力、编程基础和协调能力的不同,指定一个学生为项目组长。项目组长再对本项目组的内部人员进行任务的分配、进度的制定,并需要负责主要技术问题的解决。项目组内人员需要相互协作,共同完成一个完整的系统。

在学生进行项目开发的过程中,必然会碰到许多问题。对于共性的问题,指导老师应该以讲授的方式给每个项目组成员解答。对于每个项目组内部的具体问题,鼓励学生利用网络资源,自己想办法解决。而对于其中确实有难度、学生不容易理解的问题,指导老师应该详细告知,给出一个较通俗易懂的解决方案。

系统功能基本实现后,指导老师根据项目组成员平时表现、系统实现的具体功能、代码复杂度、界面美观性等给每个学生打分。同时,指导老师可以进一步要求每个学生就自己所完成的设计和编写的代码撰写实验总结报告。

至此为止,学生在基于SIGTS,即Select(选择)、Introduction(介绍)、Group&Coorperation(分组协作)、Tutor(辅导)、Sum-up(总结)的五步项目教学法中逐步掌握了过硬的项目开发技能。

4 改革前后学生素质技能比较

笔者对最近二届学生进行了“项目促学、实践为主、讲授为辅”的教学改革实验。与前几届采用传统教学法授课的学生的所掌握的编程技能、知识点、学习积极性等方面都有很大的提高。具体的比较数据如下表所示:

表1 两种教学方法下数据比较表

从表1中可以看出,实现项目教学以来,由于项目涉及的是一个个具体的实际应用而不同于在传统教学中经常涉及的是用程序解一个数学问题,同学们的学习主动性明显提高;具体的应用问题,解决方法也不同,而不像在传统教学方中,通常由书本上或任课老师告诉学生应该怎样做,学生的创造性也不断提高。在项目驱动的教学中,每个实际生活中的对象都会映射到Java语言中具体的类,因此,同学们面向对象的概念也在项目实践中明显增强;在传统的教学中,由于教学很大部分时间都会介绍算法、从表中也可以看出虽然同学们在学习算法过程中,会涉及到较多的程序,但这些程序算法都是前续课程,如C语言中讲授过的知识。更重要的是企业看重的是学生掌握的具体的实践项目经验。

基于项目教学以来,虽然因减少授课时间,授课教师布置的小题目、小程序变少了很多,但是同学们能真正涉及到具体的项目,参与整个项目开发过程。自然而然地,这批同学在参加企业面试时,由于有具体的实践经验,参与甚至负责过若干个实际项目,技能都受到肯定,面试通过率也大大提高。这正是与高职学校的培养目标完全一致的。

5 总结

在Java 程序设计教学中,应注意和前续课程的联系,减少不必要的教学课时,在前续课程的基础上进行教学。基于SIGTS的项目教学,改进了传统教学中就题讲题、“只见树木,不见森林”的教学方式,大大提高了学生的积极性和主动性,锻炼了学生的实际项目开发经验,并且增强了学生的自学能力。

学生在项目开发的过程中,预先体验到了从事软件开发过程中的团队协作、独立解决问题等职业要求。本文提出的教学方法在Java程序设计教学中,已经取得了一定的成效。但是,在项目过程中也出现了项目成员任务分配不当等情况,还有待进一步改善。

参考文献:

[1]章国蓉.Java语言程序设计基础实训项目之我见[J].深圳信息职业技术学院学报,2005,3(4): 61-64.

[2]任侠.Java语言程序设计教学改革探讨[J].电脑知识与技术,2007,(1):1430-1431.

[3]孙伟.Java程序设计课程的教学改革与实践[J].计算机时代,2005,(11):84-86.

[4]葛彦强,汪向征.基于项目的Java程序设计教学改革初探讨[J].中国科技信息,2006,(24).

浅谈JAVA程序设计教学 篇4

关键词:JAVA程序设计,国外教学,教学改革

随着移动互联网时代到来,国家对互联网也给予了的重视超出任何一个时代,因此给计算机专业带来了巨大的就业机会。如何利用大学所学知识,在融入社会的时候能够在这个最好的时代中分得一份让自己满意的蛋糕,是所有的计算机专业学生非常关心的焦点,同时也是高校计算机专业教师需要思考的重要课题。

当前移动互联网也得到了突飞猛进的发展,伴随着的是智能手机的普及,几乎人人都能够拥有自己的智能手机。价格从几百到几千,品牌从国外的苹果、三星、htc、诺基亚到国内的小米、华为、中兴,操作系统也包括了IOS、Android、Windows Phone。针对智能移动终端飞速的发展,给软件开发行业带来了新的盈利机会,同时也给就业者提供了越来越多的就业机会。尤其是近几年来的IOS软件开发和Android软件开发,就业形势非常的强势,既有比较大的就业硬性需求,也有令人满意的工资薪金。高校计算机专业的毕业生,如果选择本专业就业,很多都选择了参加大企业的培训。主要培训的方向也就是IOS软件开发、Android软件开发以及其它服务器开发。而服务器开发,JAVA EE也占据了很大的市场空间[1]。

JAVA程序设计既是Android软件开发的基础课程,同样也是JAVA EE开发的语言基础。基于JAVA语言的重要性,值得教学工作者以及相关行业去探索、研究以及推广。

1 JAVA教学中现状分析

JAVA程序设计的教学课程体系内容包括:熟练掌握Java语言的基本数据类型,运算符及表达式,控制结构,字符串的应用;会运用面向对象编程特点,使用抽象、封装、继承、多态编写简单的类和使用类对象编程;掌握Java语言基础类、字符串类的应用以及集合;掌握异常和线程的使用方法;掌握Java语言的I/O编程及应用方法。本课程的学习可为今后从事系统程序设计,并发程序设计,多用户环境应用系统的开发打下坚实的基础[2]。

JAVA教学的现状主要从两个方面进行分析:包括国外现状和国内现状。相对而言,国外计算机领域的发展比中国更快,更加具有风向标的作用。因此JAVA教学也是一样,国内高校很多利用翻译的教材,以及国外发展的趋势来提高自身的教学,改善教学的方式方法。以下就是从两个方面进行分析。

国外现状:国外对于JAVA的重要性也有不同的做法,大部分学校选择以C语言作为语言类课程启蒙课程。也有国外的一些大学选择直接跳过C语言,直接开设JAVA课程,足以说明本课程在语言课程中的重要性。课时的安排方面主要分为两个学期,课时安排比较充足,既有两个学期的时间跨度,有助于自主学习。课程安排方面,第一学期主要是JAVA基础知识,第二学期JAVA程序设计高级阶段。并且其中有类似于课程设计的课时安排[3]。

国内现状:一般情况下,国内学生在学JAVA程序设计之前会有C、C++基础。对编程语言有了基础的了解,包括基本数据类型、表达式,结构化程序设计,数组,函数(方法),文件操作,面向对象等基础知识。因此国内JAVA课程的课时安排一般是一个学期,一个学期的时间只能讲解基础的语法知识以及面向对象部分内容,JAVA高级部分的内容根本接触不到。尤其是当理论课时占据很大的比例时,就会严重影响学生的动手能力,同时也降低了学生的学习兴趣。学生不能够利用所学的知识应用到编程实践中,比如小应用,小游戏和小网站这些能够是吸引学生提高编程能力的小案例都实现不了。当然学生能够掌握一部分浅易的知识,但是对难的知识点缺少理解和掌握。并且随着时间推移很容易就会忘记。

对当前国内外JAVA教学的现在分析,如果继续按照传统的教学方式,既不能够使学生掌握扎实的理论基础,而且也不能够提高学生的动手能力。针对存在的几个问题,再根据我们JAVA程序设计课程本身的特点,提出以下几个细节方面的教学改革意见。

2 教学改革意见

2.1 课程课时的拉长

既能够提供学生充足的学习时间,也能够使教师更好地跟踪学生的学习情况。最好能够借鉴国外的经验,将课时分散在两个学期来完成。

2.2 课后作业强化

JAVA程序设计是一门编程语言课,必须通过大量的编写代码才能够熟练掌握。很多学生连打字速度都打不到及格水平,充足的习题练习才能够提高学生的编程能力。

2.3 课堂手写代码

教师本身必须有过硬的代码编写能力,很多高校教师并没有实践项目经验,因此自身代码功底不太强。需要教师加强课堂完全手写代码,这既能够提供学生足够时间理解代码,也让学生去能够感受到代码书写规范的重要性。

2.4 综合项目实验

必须设计一个实验能够贯穿整个JAVA程序设计的课程。综合项目要有一定的实际意义,同时也能够有很强的吸引力。学生既能够体验到其作品的价值性,也能够有兴趣去完成项目[4]。

3 结语

通过对国内外教学的分析和研究,提出适合当前高校JAVA程序设计课程的教学改革的几点意见和建议。JAVA的教学,既要求教师有过硬的技术支持,也要求教师有先进的教学理念。只有保持不断学习专业知识、不断学习教学方式、不断学习综合方面的知识,从而达到高校教育行业要求的标准,从而为社会培养出更多的精英。

参考文献

[1]明日科技.Android从入门到精通[M].清华大学出版社,2012.

[2]李刚.疯狂Java讲义(第3版)[M].电子工业出版社,2014.

[3]萨维茨.Java语言计算机科学与程序设计[M].清华大学出版社,2005.

java程序员考核 篇5

2)从同一地点出发的相同型号的飞机,可是每架飞机装满油只能绕地球飞半周,飞机之间可以加油,加完油的飞机必须回到起点。问至少要多少架次,才能满足有一架绕地球一周。

智力部分(共20分)选择题(每个2分,共10个)

Java部分(共60分)

一、选择题(每个2分,前5个为单选,后5个为多选)

1.下列语句哪一个正确()

A. Java程序经编译后会产生machine code

B. Java程序经编译后会产生byte code

C. Java程序经编译后会产生DLL

D. 以上都不正确

2.执行如下程序代码

a=0;c=0;

do{

--c;

a=a-1;

}while(a>0);

后,C的值是()

A.0 B.1 C.-1 D.死循环

3.下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D. 一个class只能定义一个constructor

4.下列哪一种叙述是正确的()

A. abstract修饰符可修饰字段、方法和类

B. 抽象方法的body部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

5.下列哪种说法是正确的()

A. 实例方法可直接调用超类的实例方法

B. 实例方法可直接调用超类的类方法

C. 实例方法可直接调用其他类的实例方法

D. 实例方法可直接调用本类的类方法

6.下列说法错误的有()

A. 数组是一种对象

B. 数组属于一种原生类

C. int number=[]={31,23,33,43,35,63}

D. 数组的大小可以任意改变

7.不能用来修饰interface的有()

A.private B.public C.protected D.static

8.下列说法错误的有()

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

D. 在类方法中绝对不能调用实例方法

9.下列标识符不合法的有()

A.new B.$Usdollars C.1234 D.car.taxi

10.下列说法正确的有()

A. 环境变量可在编译source code时指定

B. 在编译程序时,所能指定的环境变量不包括class path

C. javac一次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory)

二、简答题(3个简述题,共20分)

1)请描述一下Thread和Runnable的区别和相同点。(6分)

2)请说明一下抽象类和接口的区别和相同点。(6分)

3)请叙述什么是多线程、多线程会经历哪些周期。(8分)

三、算法题(每题10分)

1)请用*号编写以下图形

*

**

**

**

**

**

**

**

*

(如图所示)

2)

Vector存储位置变换

------

姓名 性别 年龄 出生年月 籍贯

------

赵一 男211989.1汉

------

钱二 女221988.2满

------

张三 男231987.3回

------

李四 女241986.4藏

------

当前取得此表格信息为Vector类型

定义Vector 名为:vtr;

Vector集合内容:

[[赵一,男,21,1989.1,汉],[钱二,女,22,1988.2,满],[张三,男,23,1987.3,回],[李四,女,24,1986.4,藏]]

现在需要将次Vector集合转换为:

Java程序 篇6

摘 要:现阶段,Java Web技术较为成熟,其是现代社会中应用非常普遍的技术。就目前状况而言,Java Web技术依然存在着一些较为明显的缺陷,在一定程度上降低了信息传送过程的安全性。结合工作经验与相关理论知识,在本文中探讨了Java 应用程序安全技术,供有关人员参考借鉴。

关键词:应用程序;安全技术;研究

近年来,基于Web的应用系统俨然已经成为发展速度最快的计算机应用系统之一,在民用与军用领域都发挥着不可替代的作用。然而应当看到的,一些不良因素会降低Web技术的安全性,最终影响技术的应用。为此,有关方面必须要采取有效措施以提升Web技术的安全系数。

1 Web应用程序所面临的威胁

Web应用程序是基于HTTP基础开发的,该程序由客户端以及服务器两大基本结构构成,主要功能是处理客户端请求并发送相关的数据。现阶段各种应用程序面临着较高的风险,Web程序自然也不例外。通过分析,可以发现Web程序面临的安全威胁主要包括通信过程的安全威胁、客户端安全威胁以及服务端安全威胁[1]。

黑客攻击Web应用程序,通过破坏通信过程促使通信数据的完整性以及机密性受到严重的损害。黑客破坏Web应用程序、盗取信息的途径还有攻击Web应用程序的客户端,主要方式是借助恶意代码利用客户端的安全漏洞。某些情况下,客户端存在着缺陷为恶意代码的运行提供便利的条件,恶意代码直接在程序中执行,所造成的危害也将会更加巨大。除此之外,黑客还有可能利用Web服务端代码的隐藏缺陷来攻击程序,与此同时,基于部分服务端存在着运行支撑环境缺陷,黑客还会通过利用支撑环境缺陷的形式来实现窃取有用信息的目的。

2 Web安全研究

2.1 Ajax

作为一种创建交互式的网页开发技术,Ajax面世后受到了信息界的广泛关注。Ajax技术在程序中应用能够实现后台异步数据读取的功能,如此能有效地提升用户操作的简便性。互联网技术的研发初衷是提升用户的操作体验,实现程序与用户之间的良好交互,所以Ajax技术的应用前景十分广阔。

然而也应当看到Ajax技术的缺陷,该技术的应用时间相对较短,也就是说Ajax属于新技术范畴,而任何一种信息技术都需要经过大量的实践检验方能日益完善,所以理论上Ajax依然可能存在着许多隐藏的缺陷,因此Ajax所面临的安全风险相对较高。为了最大程度地提升Ajax技术的应用安全,应当在在其中嵌入相应的保护性程序。通常情况下,如果页面发生改变,则需要及时通知用户,与此同时,为了保护用户信息的安全,需要在服务器与客户端检查用户的输入信息是否准确可靠。某些情况下,服务器可能需要开展用户认证工作,而认证工作应当在所用服务器脚本上展开,如此能够最大程度地保障认证工作的质量、降低信息被盗取的概率。此外,应用程序客户端应当对各类返回数据进行检验[2]。

2.2 cookie

对于程序员而言,cookie并不陌生,这是一种为了增强用户身份识别工作简便性与准确性的数据。Cookie能够帮助应用程序服务器实现快速识别用户信息的目的,换句话讲,应用cookie技术后,用户认证信息会被即时储存,下一次服务器便能够快速地识别提取用户信息,从而省去大量的信息认证程序,在人人追求高效率的今天,cookie技术的应用具有极为重要的现实意义。

在看到cookie技术的便利性的同时,也应当清醒地认识到该技术的不足之处。在过去的几年内,经常发生黑客攻击应用cookie技术的网站而造成用户信息与机密网络数据泄漏的案件,造成了极大的损失。统计数据显示,web蠕虫以及XSS/CSRF是威胁cookie技术应用的主要病毒形式。

web蠕虫病毒的破坏力与传播性极强,其利用应用程序的安全漏洞进行传播。Web蠕虫的主要危害包括执行恶意脚本、劫持回话以及盗取用户的cookie信息。就目前状况而言,由于技术上的限制,技术人员依旧无法有效解决web蠕虫病毒感染问题,而随着信息技术的迅猛发展,相信在不久的将来,人们能够寻找到抵御web蠕虫病毒风险的有效方法。

CSRF能够伪装成网站受信任用户的请求,在网站接收到伪装请求后,CRSF便能利用该网站。一般认为,CSRF病毒出现频率不高,所以业界并没有针对该病毒的有效防范措施,所以某种意义上,CRSF病毒的危险性极高。通常情况下,能够通过增加人机交互环节的形式来降低程序受病毒攻击的风险,可以增加双因素口令卡以及图片验证码以避免客户端脚本访问用户的cookie。

2.3 JavaScript

JavaScript是一种较为安全的脚本语言,其是基于对象和事件驱动技术研发的。基于JavaScript技术开发的网页具有生动简洁的优势,同时又由于语言比较简便易学,因此JavaScript受到了广大专业程序员以及编程爱好者的欢迎。就目前而言,函数句柄劫持以及DOM劫持是JavaScript网页的主要威胁。

函数句柄劫持是黑客常见的攻击应用JavaScript语言的程序的手段,其通过重新赋值或者定义的方式来实现攻击程序或者网站的目的。某些情况下,被劫持函数的原有句柄副本并不会被黑客保留,这种状况下的函数反劫持工作具有极高的难度。

DOM劫持也是较为常见的劫持方式,需要特别指出的是,在document对象被恶意代码劫持后,函数句柄反劫持手段将不会发挥任何作用。目前,国内信息安全人才储备不足,“白帽黑客”的概念未能深深扎根于互联网行业之中,因此应当采取有效措施提高在岗信息安全人员的综合素质,并大力引进高素质、复合型人才,与此同时,需要不断更新程序架构,完善各种脚本语言。

3 结语

互联网技术与信息技术深刻地影响了人类的文明进程,赋予了人类无穷的乐趣,鉴于目前Java web 应用程序依然存在着较多安全缺陷的情况,信息安全人员应当积极学习先进的科学技术知识、不断提升自身综合素质,勇于开拓创新,如此方能最大程度地促进信息行业的长足进步。

参考文献:

[1]冯扬.云安全技术研究[J].电力信息与通信技术,2014(01).

Java程序 篇7

为加快我国教育改革进程,促进学生专业知识、外语水平及能力素质的全面发展,教育部大力提倡进行双语课程建设。为了响应教育部推行双语教学的要求,我校出台了双语课程建设政策,要求在专业课程中选择可以推行双语教学模式的课程。在计算机专业课程中,大家一致认为语言类课程比较适合开展双语教学,因此,我们决定以程序设计课程作为示范课程,来探索新的教学模式。

2 开展双语教学的可行性

在初步选择之后,我系教师对在Java程序设计中开展双语教学进行了研讨。主要讨论了影响双语教学的三个主要因素:学生接受能力、双语教学师资、课程特点。

2.1 学生接受能力

Java程序设计的授课对象为本科软件方向学生。从课程安排看来,外语课与专业课同步开设,注重听力和口语的练习,具有一定的程序设计语言基础。但学生基础水平差异成了我们最担心的问题。因此课下我随机抽取了部分学生进行座谈,了解学生对待新事物的心理状态,大多数学生持赞成态度。一部分英语基础较差的同学希望通过双语教学可以提高他们的英语应用能力。另外,也考虑了在教学中采用中英文对照的课件,以供不同基础的学生选择使用。

2.2 双语教学师资

排除了学生的因素,接下来讨论了对授课教师的要求。我系教师曾经担任计算机专业英语和Java程序设计课程的教学任务,具有良好的实践基础。因此,在本课程中开展双语教学具有适合的师资力量。

2.3 课程特点

并不是所有的专业课程都易于采用双语教学。学生未曾学过计算机专业英语,对专业术语掌握较少,此时若选择专业词汇多、抽象概念多、理论性强的课程,学生将无法承受。而程序设计类课程的专业词汇少,实践性强,抽象度低,程序就是书写代码进行规则应用,通过实践较易理解课程内容。大家一致认为,Java程序设计适合开展双语教学。

3 Java双语教学的实施

3.1 教材选择

3.1.1 原版英文教材

实施双语教学,教材的选择至关重要。本课程采用美国Harvey M.Deitel编著的Small Java How to Program,6/E原版教材进行授课,内容符合教学大纲要求的深度和广度。该教材与我院目前采用的中文教材对于知识点的设置和讲解十分类似,且简明清晰、论述层次分明,具有较强的逻辑性和较新的知识体系。

3.1.2 扩充性原版及翻译版参考资料

选择Java程序设计方面比较权威的其他原版书籍作为教学参考资料,且尽可能使用具有中英文对照的书籍。

(1)Bruce Eckel.Thinking In Java.北京:机械工业出版社,2007.

(2)(美)Bruce Eckel.陈昊鹏译.《Java编程思想》.北京:机械工业出版社,2007.

(3)(新加坡)潘祥春.Java Programming.北京:清华大学出版社,2010.

(4)Rogers Cadenhead,Laura Lemay.袁国忠,张劼译.《21天学通Java6》(第5版).北京:人民邮电出版社,2009.

(5)Rogers Cadenhead,Laura Lemay.Sams Teach Yourself Java 6 in 21 Days(5th Edition).America,Sams,2007.(电子版)

3.1.3 教材建设

双语教学是个新事物,现有的教材较少;单纯引入外来教材,又不符合目前的教学要求和学生的状况。针对这些问题,在教学中除了对不同水平的英文原版教材进行选择性使用之外,还利用本次双语教学的实践经验,编写了适合双语教学使用的实验指导书。

3.2 教学方法

根据教学内容和学生实际情况,在双语教学中进行多种教学方法的综合应用。

3.2.1 综合运用多种传统教学方法

讲授法、演示法、练习法、发问法、启发式教学法、讨论法、案例教学法等传统教学方法综合运用,讲解教学中的主要理论、重点和难点。在教学过程中,对一些重要知识点进行讲授和针对性练习;较易理解的知识点,则可以通过设置问题的方法启发学生思考并鼓励学生以自学形式完成;对于疑难问题,则可以通过激发学生讨论、进行案例应用演示的方法来突破难点。

3.2.2 双语教学的阶梯式教学法

对于大部分学生而言,英语基础较为薄弱,对使用英语进行教学产生畏惧和排斥心理。在教学过程中,针对学生的具体情况和双语教学的要求,灵活掌握中文和英文的使用比例,引导学生循序渐进的适应新的教学模式。

1)使用英文版课件,用中文讲授专业内容。

在双语教学的初级阶段,学生刚接触双语课程,不习惯教师用英文授课的方式。此时,在教学中使用英文来组织教学活动,而专业部分的讲授用中文为主英文为辅的方式进行。

2)中英文授课比例基本上各占50%。

随着学生排斥心理的消失,课堂上开始加大采用英文进行教学的比例,讲授过程中中文和英文交替使用,中文主要解释重要的概念和技能,使学生能够逐步适应英文进入课堂教学。

3)英文为主,中文解释为辅。

仅对部分难理解的内容辅以中文解释,让学生逐步习惯用英文来学习和思考。在练习和作业设置中,添加必须用英语回答的问题。

3.3 教学手段

3.3.1 利用多媒体进行课堂教学

本课程双语教学以利用现代多媒体教学课件授课为主,多种教学手段并用。在教学过程中,以英文原版书籍为教材和主要参考书籍,同时参考国内外多本优秀Java程序设计教科书,自行制作了一套中英文对照的《Java程序设计》多媒体教学课件,便于教师利用丰富的教学资料为学生授课,提高教学效率和课堂信息容量。

3.3.2 利用网络辅助教学

教师将课程资料通过网络传给学生,极大地方便了教师与学生之间的交流。在网络平台上,可以展示教师的教案、布置给学生的作业,便于学生能够及时地预习、复习和练习。同时,学生可以在网上向教师咨询和请教疑难问题,也可以与教师进行某些问题的讨论。

3.3.3 充分利用现代媒体辅助实验教学

为加强课程知识的实际应用,利用二分之一的课时进行实验教学。在实验课教学中,除利用多媒体进行实验演示外,还充分利用实验室的网络设备,加强对学生实验过程的指导作用。

3.4 教学考核和教学效果

本课程采用双语教学的重点是在学习专业知识的过程中不断提高学生的英语综合应用能力。因此,采用灵活多样的考核方法和形式。

考核方法可以采用期末考试、平时成绩进行综合考核;考核形式可以为课堂表现、作业及考试试卷;考试形式可以为开卷、闭卷。在教学实践中,采用“作业+课堂表现”相结合的考核方法;在课程结束时,采用试卷进行考核;在整个学期,根据课程内容分阶段进行开卷考试,了解学生学习状况,获取教学信息,以便指导教学更好地开展。

经过师生一学期的努力,双语教学取得了阶段性的胜利。学生综合实践的能力、期末考试的成绩均高于以往未进行双语教学的班级。调查问卷的结果也显示,双语教学对学生学习该课程起了促进作用。

4 结束语

Java程序设计双语教学取得了成绩,但也仍然存在很多亟待解决的问题,如:丰富网络教学资源,建立信息反馈平台,培养学生创新能力,及推动学生深入学习等。在本课程未来的建设规划中,我将着手完善双语教学体系,并推动双语教学在其他课程中的应用。

摘要:该文结合计算机专业双语教学的现状,分析了开展双语教学的可行性。从课程选择、可行性分析、教材选择、教学方法、教学手段和教学效果等方面,阐述了在Java程序设计中实施双语教学的实践过程。

关键词:Java程序设计,双语教学

参考文献

[1]胡庆江,杨瑞静.对搞好双语教学的探讨[J].北京教育:高教,2006(2).

[2]张同乐,程鹂.关于双语教学的再思考[J].安徽大学学报:哲学社会科学版,2006(1).

Java程序 篇8

目前纯粹的繁体字符主要由BIG5编码所规定, BIG5码中共规定了13053个繁体字;而纯粹的简体字符主要由GB2312编码所规定, 仅有6763个简体字。

设计思路是:先参照BIG5码的规范, 生成13053个繁体字 (每个繁体字都有一个唯一的Unicode编码) , 再由诸如Word等权威软件, 完成13053个繁体字到简体字 (每个简体字也都有一个唯一的Unicode编码) 的转换, 从中找出每个字在转换前后所对应的Unicode编码是否有发生变化。

如果前后有发生变化, 则在繁体字的Unicode编码和对应的简体字的Unicode编码之间建立映射关系, 并将该映射关系存入一张Hash表中, 以便于将来进行繁体到简体映射的查找。如果前后没有发生变化, 说明当前繁体字与简体字的字形是一致的, 不需要映射。

2 根据BIG5字符集产生繁体汉字

2.1 BIG5编码中的汉字

BIG5码使用了双字节储存方法, 以两个字节来编码一个字。第一个字节称为“高位字节”, 第二个字节称为“低位字节”。高位字节的编码范围0Xa1~0Xf9, 低位字节的编码范围0x40~0x7E及0Xa1~0Xfe。

在上面的基本编码规则下, 各编码范围对应的字符类型如下:0Xa140~0Xa3BF为标点符号、希腊字母及特殊符号, 另外于0Xa259~0Xa261, 存放了双音节度量衡单位用字:兙兛兞兝兡兣嗧瓩糎;高字节0Xa4~0Xc6, 低字节0x40~0x7E及0Xa1~0Xfe, 其中0Xc6A1~0Xc6FE为日文字符要除外, 共5401个常用繁体汉字, 先按笔划再按部首排序;高字节0x C9~0x F9, 低字节0x40~0x7E及0Xa1~0Xfe, 其中0x F9D6~0Xc6FE字符要除外, 共7652个非常用繁体汉字, 亦是先按笔划再按部首排序。因此, BIG5码共有5401+7652=13053个繁体汉字, 第一个繁体汉字为“一”, 最后一个繁体汉字为“龘” (读dá, 意思:龙腾飞的样子) 。

2.2 代码实例

下面是根据BIG5编码字符集生成所有繁体汉字的部分代码实例:

2.3 编码输出格式

在输出的繁体字符文档中, 规定字符串格式:先是每个字符连续输出, 最后加上一个换行回车, 这样是为了保证该文件被Word转换后, 能保持前后大小一致。因为Word在转换后保存时, 会默认加上换行回车。如果转换之前的文档结尾没有换行回车, 那么将导致转换后的文档大小不一致。如果已经有了, 则不必再增加。

生成的文件如果使用GBK编码格式输出, 文件大小为26108个字节 (13053*2+2, 其中两个字节分别为换行和回车) , 因为GBK是使用两个字节表示一个汉字, 用一个字节表示换行, 一个字节表示回车。使用Word进行转换后, 大小不变。

生成的文件如果使用UTF-8编码格式输出, 文件大小为39161个字节 (13053*3+2, 其中两个字节分别为换行和回车) , 因为UTF-8对于汉字需要使用3个字节来表示, 但是对于换行回车各只需要一个字节。使用Word进行转换后, 大小变为39164个字节。

因此, 在输出繁体汉字到文件时, 最好是使用GBK编码, 而不要使用UTF-8编码, 因为如果使用UTF-8编码进行文件输出, 在利用Word进行繁体到简体的转换后, 文件大小前后会发生变化, 将不利于后期建立Hash表。

另外一个重要的原因是:由于使用的是中文操作系统, 其默认编码是GBK, 所以如果输出文档是用GBK编码, 那么在用Word打开时, 不需要进行格式转换;如果使用UTF-8编码输出, Word文档在读取该文档时, 会对其进行格式转换, 除了会导致文件转换前后大小不一外, 在后续的比较过程中, 也会出现问题。

3 利用Word进行文档转换

将前文中所得的繁体字符文档复制为两份, 用Word打开其中的一份, 进行繁体到简体的转换。整个文档转换完毕需要大约1分钟, 完成后保存。

这里有一点要特别说明:Word在进行繁/简体转换时, 默认情况并不是仅仅对单个字进行转换, 而是会对词进行转换。如:繁体词组“全形”经过转换后就会变为简体词组“全角”!因此在使用Word进行转换前, 应对Word进行必要的设置, 保证Word在进行转换时, 不会对词组进行转换, 而只会对单个字符进行转换。在Word的“工具”、“语言”、“简体繁体转换”中可以设置是否对词汇进行转换。

4 生成映射Hash表

通过Word转换后, 就会得到包含全部繁体字符的文档和与之对应的简体字符的文档。下面的工作就是找出两个文档中, 繁体和简体不同的汉字, 并以此为参照, 建立HashMap, 用于快速繁体到简体的映射。

因为两个文档中共有13053个汉字和两个字节的换行加回车, 所以最终结果是共比较了13055个字符, 其中相同个数:10163;不相同个数:2892;HashMap大小:2892。这表明BIG5编码所定义的繁体字中, 实际上只有2892个繁体字与其对应的简体字不同, 需要进行映射。

下面是生成HashMap的部分代码实例:

5 繁/简体转换

生成Hash表后, 就可以利用该Hash表进行繁/简体映射转换。进行映射转换前, 一定要判断当前字符是否为Unicode汉字, 如果是汉字, 才进行映射转换, 毕竟映射转换需要查找HashMap。

判断语句如下:

通过上述方法, 判断当前字符是否为广义Unicode汉字。接下来就可以进行映射转换了, 部分代码如下:

6 结语

通过Java实现的是从繁体转换到简体汉字, 这也是实际中最常用的功能。而在某些特定情况下则是要将汉字从简体转换到繁体, 但从实际情况来看, 从简体转换为繁体, 相对于繁体转换为简体来说更为复杂。因为往往一个简体字会对应多个繁体字, 即为一对多的映射, 如:简体的“发”字就对应繁体的“發”和“髮”两个字, 这也是为何简体字中有大量多音字的原因。因此, 在进行简/繁体转换时, 如果只是简单地进行字与字之间的转换映射, 必然有一部分转换是错误的。这时候就需要对要转换的文档进行分词, 建立简体词组到繁体词组的映射关系, 这个问题将留待以后继续研究。

摘要:在实际应用中, 为了方便读者阅读, 常常需要进行繁/简体汉字之间的字形转换。这里所说的转换, 准确意义应该称之为映射。即两者都对应各自的Unicode编码, 在不同编码之间构筑一个映射关系。主要研究了在编写的Java程序中实现繁/简体转换映射。

Java程序 篇9

随着Java语言应用的不断推广, Java程序设计课程已经成为高校计算机专业的核心专业课。在Java程序设计课程中引入双语教学对于学生充分理解Java语言的精髓, 紧跟Java发展前沿信息有着重要的作用。本文探讨在新升本科院校中针对Java程序设计课程中引入双语教学的策略。

1 Java程序设计课程引入双语教学的必要性

计算机的编程语言和操作指令多数都是用英语来表述的, 计算机的原版软件多数是英文的, 其发展的最新版本、研究成果等资料也都是使用英文来描述的[1]。Java语言也不例外。Java语言最初就是由sun公司开发的, 其编程语言是英语的, Java的开发环境多数也是全英文的, Java的帮助文档API原文也是英文的。将双语教学引入Java程序设计课程, 特别是针对新升本科院校的学生教师而言, 更有益处。对于学生而言, 其专业英语水平会随着双语教学的开展得到一定程度的提升;对于任课教师而言, 其专业技术知识也会得到提升。

2 开展双语教学前的准备

2.1 任课教师的准备

任课教师是一门课程是否能够顺利开展的决定因素, 对于承担双语教学的教师, 不但要求其具有深厚的知识储备, 掌握最新技术动态, 还要求其具有良好的英语基础, 流畅的英语口语表述能力。在备课阶段, 不同于常规课程的准备, 教师不但要准备每次课程的知识进度, 还要预先组织好其相应的英语表述。在课堂教学进行中, 多数情况下教师用英文表述, 对于一些重点难点知识, 使用中文注释, 帮助学生更好地理解掌握。学校应该重视双语授课教师的培养培训, 借鉴合作办学的模式, 选派教师出国进修学习, 以此来提高教师的学术水平和语言能力[2]。

2.2 学生的准备

学生作为授课对象, 对完成双语教学课程也需要提前做好一定的准备。一方面是语言上的准备, 要求学生具备一定的英语听读能力。双语教学一般会选取英文原版教材来授课, 这就要求学生具备一定的英语阅读能力, 教师在课堂上多数情况下都会用英语来授课, 这就要求学生的听力水平也要达标[3]。另外一方面就是知识上的储备, Java作为面向对象的高级语言, 要求学习者应该具备基本的计算机语言学习基础。在学习Java语言之前, 学生一般已经学习了C语言, 对于计算机语言类课程的学习有一定的体会, 所以这方面的准备相对容易一些。

3 Java程序设计课程双语教学实施过程

3.1 教材的选取

对于选择双语教学的课程来说, 在教材选取方面一般都会选择英文原版的经典教材。Java程序设计课程也不例外。针对新升本科院校而言, 学生的知识基础和英语基础都相对薄弱, 所以在教材选择上, 还是尽量选择相对浅显易懂的经典教材[4]。在横向比较了几家本科院校授课教材的基础上, 选择了由英国David J. Barnes等著的《Object First With Java》一书, 同时配合授课要求, 以及方便学生课后学习, 选择了清华大学出版社的耿祥义等编著的《Java 2实用教程 (第4版) 》作为该课程的参考书。

3.2 教学过程的开展

通过调查研究, 我们发现当今高校计算机专业课程的双语教学一般采用如下3中教学模式:一、课程采用英文原版教材, 授课过程教师采用英语课件, 讲授知识采用汉语教学, 考核时也是汉语考试;二、课程采用英文原版教材, 授课过程教师用英语课件, 知识讲授采用中英文双语教学, 特别针对重点难点知识, 用中文讲授, 考核时采用英语考试;三、课程采用英文原版教材, 授课过程教师采用英语课件, 知识讲授全部英语进行, 考核时也采用英语考试[5]。

针对新升本科院校学生知识基础和英语基础都相对薄弱的特点, 我们选择采用第2种教学模式。教师在授课过程中尽量多采用英语教学, 但是对于重点难点知识采用中文进行注释讲解, 这样可以帮助学生更好地理解知识点。例如, 针对面向对象语言最重要的概念就是“对象”, 教师在讲解“对象”的定义时, 可以先用英文解释“Object”的定义, 学生可能不会理解的很透彻, 这时教师可以转换为中文, “对象”就是类的实例化表现, 还可以举例说明, 如果存在“机动车”类, 那么每一辆具体的车都是“机动车”类的一个对象。这样学生理解起来会更简单。

Java程序设计课程是理论和实验相结合的课程, 在课时分配上一般是每周一次理论课, 一次实验课。我们在采用双语教学时也不止针对理论课程的讲解, 在实验课堂上也同样采用双语教学。实验中用到的编程平台如Eclipse也要用英文版的, 让学生在全英文环境下操作练习。教师先用英语讲述实验课程要考查的知识点, 之后布置实验案例要求, 之后学生动手操作, 教师随堂指导检查。每次实验课结束之后, 形成实验报告, 记录学生的实验完成情况, 作为期末考核的一部分。

3.3 课程考核

为了突出Java程序设计课程重视学生实践能力的特点, 课程考核形式可以采用小组答辩的形式进行, 当然整个答辩过程也要求是英语表述的。让学生5-7人组合为一个小组, 共同完成一个实验项目的操作。小组成员分工合作, 从项目说明书到编码再到测试都由小组成员分工完成。最后以小组形式参加答辩。教师根据项目完成情况, 小组成员个人完成比例, 答辩情况等要素, 综合打分给出每个小组成员的得分情况。

课程的最终分数应该由三部分组成, 其中20%为理论课表现情况, 30%为实验报告完成情况, 50%为最终小组答辩情况, 这样可以全方位掌控学生的学习情况。

4 总结

在新升本科院校的计算机专业中, 选择Java程序设计课程开展双语教学是一种尝试, 无论对于学生还是任课教师都是一个新的挑战。学生需要平时注重自己知识的积累和英语水平的提升, 教师需要花费更多的时间进行课前准备。但是从长远来看, 学生的专业能力可以得到提高, 教师的授课水平也会更上一个台阶, 也为今后其他专业课程采用双语教学做了示范。

摘要:Java作为计算机专业的核心专业课程, 引入双语教学是发展的必然趋势。本文论述了开展双语教学的必要性, 以及开展双语教学需要做的准备。在教学开展过程中, 针对教材选择, 教学实施和考核方式进行了论述。

关键词:Java程序设计,双语教学,教学模式

参考文献

[1]罗依平.论高校双语教学面临的困境与应对措施[J].高教论坛, 2008 (3) :48-50.

[2]皮德常.计算机专业开展“双语教学”的实践与探讨[J].计算机教育, 2005 (6) :25-27.

[3]张铭.关于计算机专业“双语教学”的调查报告[J].计算机教育, 2004 (6) :4-7.

[4]蒋巍.“Java程序设计”课程双语教学的探索与实践[J].常州工学院学报, 2010 (5) :87-93.

Java程序 篇10

“Java程序设计”是计算机相关专业教学体系中的一门重要课程, 重点培养学生Java技术体系中的基础知识。目前的“Java程序设计”课程在实际教学中主要存在以下几个方面的问题:

(1) 学生普遍反映对Java程序设计有兴趣, 但同时也畏难。学生的兴趣来源于实际就业需要, Java的广泛应用是学生们想学习Java的主要原因。学生们通常对编程没有足够的了解, 在初学编程时, 很少会有学生真的因为爱好编程而学习Ja va。

由于程序设计不仅要求设计者具有很强的逻辑思维能力, 思路清晰, 也要求设计者能不断自我学习, 适应现代编程技术的变化。这对一些学生造成了学习压力, 进而导致这些学生畏难, 害怕编程。

(2) 希望获得更多实用技能和动手能力的培养。“Java程序设计”在课程改革以前, 主要通过传统的语言教学方法来进行, 在内容上从了解语言特征入手, 重点强调基础Java语法。尽管在实践教学中逐步引入了案例教学, 不过仍缺乏如何运用Java完成实际项目的内容。另外, 教学内容中也欠缺一些与编程相关的能力培养。包括使用参考文档的能力、使用开发工具的能力、debug的能力和项目部署的能力等。虽然这些内容均不属于传统教学范围, 但都是学生在实际动手环节中必须用到的能力。因此有必要在“Java程序设计”教学内容和方法上做一些调整, 以促进学生实用技能的提高。

2“Java程序设计”教学改革

2.1 课堂教学改革

为提高教学质量, 提高学生学习兴趣, 目前在“Java程序设计”的课堂教学中, 教学内容按难易程度被重新组织, 简化了难度较大但实用性不大的内容, 然后将与程序设计相关的一些技能如项目配置、部署和测试等引入到课堂教学内容中来。

(1) 合理安排教学内容, 引入项目教学法。目前的“Java程序设计”教学内容定位于Java SE知识范围之内, 而通用的教材中所包含的内容往往只是Java SE的一部分。如果完全按照教材上的知识点组织以及顺序讲解, 那么一方面学生将难于借助阶段性的学习内容完成小型项目, 其次某些知识点如流控语句等, 可能和其它语言的教学内容发生重复, 会导致学生感到乏味。因此为提高教学质量, 在实践中我们从教学内容和教学方法两方面入手进行了改革。

首先, 在内容上对全部Java SE知识点按类别以及难易程度加以区分。然后依据项目实践需要和学生能力水平, 精心选择具体的教学范围, 安排知识点的教学次序。实践中我们将“Java程序设计”的教学内容分成了基础部分、高级部分和扩展部分3类。其中基础部分注重Java语言的核心语法, 采取初期了解, 后期通过项目强化记忆的方法进行教学。高级部分与项目实践有紧密联系, 在课堂上借助小型项目重点讲解。扩展部分包括项目实践相关技能, 穿插到课堂、实验和练习中以帮助学生提高项目实践能力。

其次, 在实践教学中引入项目教学法。项目教学法是指在一个教学过程的某一个阶段, 借助项目来完成教学目标的活动。项目教学法通常将学生分成不同的小组, 完成一个具体项目的开发工作。在“Java程序设计”教学实践中, 选取了“数独”、“二维魔方”等常见的小型游戏程序作为项目教学的主要内容, 串联全部基础以及部分高级知识点, 按由易到难的次序进行讲解。然后以学生为主体, 参考老师讲解的内容分组完成目标项目。通过这种形式全面培养了学生分析问题和解决问题的能力。

(2) 通过小型案例讲解独立知识点, 以案例模仿的形式促进学生动手能力。在“Java程序设计”课堂教学中采用了案例教学方法对每一个单一知识点进行教学。选取的案例都尽可能小而精, 针对特定问题。例如讲解循环和条件时, 通过一个猜数字的游戏程序说明循环和条件在Java程序中的使用。在讲解类和对象时, 通过一个骑车程序来讲解类、对象、属性和行为之间的关系。为了达到更好的案例教学效果, 我们不仅要求学生读懂课上的案例, 还要求学生在练习和实验中以教学案例为模板, 通过模仿、修改、完善模板等形式来锻炼读写程序的能力。这样不仅能帮助学生巩固已学的知识, 同时也能帮助学生提高自学能力和设计能力, 强化案例教学的效果。

2.2 实验教学的改革

实验课是“Java程序设计”课程的重要组成部分, 是通过实际的上机操作来巩固和强化课堂上的理论知识的重要手段。目前的实验课内容往往全部来源于实验教材, 并且多数实验的类型属于独立完成的验证型实验。实践中我们借鉴国外大学的实验课的组织, 通过如下手段改进了实验教学过程。

(1) 增加综合性、设计性实验促进学生动手能力。首先将“Java程序设计”实验内容按难度分成基础复习、前后综合和提高3部分内容, 并按照一定比例组织, 如3:6:1。在基础复习部分, 主要以最近的课堂教学内容为基础, 在提供必要的参考资料、实验工具和实验方法后, 以验证型实验为主, 要求学生熟悉课堂教学内容。在前后综合部分, 以综合和设计型实验为主, 要求学生将以前所学的全部知识综合运用, 通过查阅参考资料, 设计出合乎目标要求的程序, 最终达到复习以前知识、提高动手能力的目的。在提高阶段, 以综合型实验为主, 要求学生提前了解一部分课堂上涉及较少的知识, 以提高学生的自学和研究能力。这样的实验安排表面上只花了少量的时间对基础内容进行复习, 但实际上每次综合阶段的实验都是对以前所学的一次强化。学生可以对以前所学的知识做到融会贯通。另外综合和设计型实验也迫使学生必须参与思考、研究和自主学习。因此这样一种安排可以显著提高学生学习能力。

(2) 采用分组实验组织形式。在实验的组织形式上, 除了采用独立实验对知识点进行强化熟悉之外, 我们在实践教学中也仿照国外大学补充了少数分组实验, 以完成小型任务为目标, 锻炼学生合作和设计能力。在分组实验中, 学生以3个人左右的小规模进行分组, 这样一方面可以保证每个学生都有动手实践的机会, 同时也能充分参与合作。学生个人的最终成绩取决于团队的最终成绩、个人在团队中的贡献以及教师对个人表现的评价。分组实验中通过竞争机制和团队成员的交流可以促进学生学习兴趣和提高团队合作能力。

3 实践效果与总结

在07至08年的实践教学过程中, 以上的系列改革措施在个别班级的实践教学中采用, 并同其它同年级没有采用改革措施的班级进行了跟踪比较。通过一段时间对学生上课情况的观察以及学习成绩的反馈, 发现在采用了改革措施的班级中, 学生的学习兴趣有明显提高, 学习成绩普遍比没有采用改革措施的班级提高5%~10%。另外在采用了新措施的班级中, 学生不仅积极完成课内任务, 同时也开始主动自学, 共同讨论和研究一些知识点, 学习气氛浓厚。特别是设计型实验以及Greenfoot等工具的引入, 激发了学生的学习兴趣和设计热情, 起到了非常理想的实践教学效果。事实证明, 这些改革措施不仅可以帮助学生对Java编程基础知识全面学习, 同时也能锻炼实际动手能力, 激发学习兴趣, 提高实践教学质量。

参考文献

[1]全成斌, 杨士强, 赵有健.计算机工程实践教学的改革与探索[J].计算机教育, 2008 (4) .

Java程序 篇11

关键词 黑莓 BlackBerry Java 拍照程序

中图分类号:TP311 文献标识码:A

0引言

黑莓智能手机在2008年至2011年可以说一直是移动领域的霸主,其炫酷的外形,强大的硬件,多彩的应用,安全的通讯,令人们对其爱不释手,尤其是“911”事件发生后,其展现的强大通讯功能更让黑莓手机成为了美国官方通讯设备。本文在介绍了黑莓公司和黑莓智能手机的基础上,使用JAVA语言开发设计了一款拍照程序。

1黑莓(RIM)公司介绍

黑莓公司(Research in Motion,即RIM公司),是加拿大的一家通信公司,主要产品为手提通讯设备黑莓手机。公司由Mike Lazaridis与Jim Balsillie共同创立。黑莓公司使用C++和Java技术为其产品研发自己的软件。同样,黑莓公司也销售嵌入式无线通讯零部件。

1984年希腊裔加拿大商人的Mike Lazaridis与伙伴Doug Fregin成立RIM公司;1995年推出Pager 900。1998年,RIM生产有计算机键盘的PDA;1999年首支能通话的黑莓机RIM 6230问世,有强大的电子邮件功能,支持Push Mail电邮服务。Push mail最大的好处就是高实时性,用户像收短信一样收到邮件,并且使用了标准的QWERTY键盘。因为键盘上的按钮很像草莓种子,因此命名为“黑莓手机”。2004年,RIM公司有第100万位用户。

黑莓的主要用家是商务人士和政要,如总统、部长级官员、国会议员等等。2005年,RIM公司有400万用户,当中超过20万用户为美国政府官员。《福布斯》杂志在“2005年全球20大高增长品牌”评选BlackBerry的品牌的增长率36%,仅次于后来iPhone的38%。

2黑莓手机介绍

如今,黑莓手机已经有了近十年的历史,其发展出了Blod系列、Curve系列、Torch系列、Storm系列等。每一个系列都有经典机型,令人爱不释手。此外,从软件上说,黑莓当下主要有两个系列,一个是传统的BlackBerry OS,最新版本为7.1,另一个为BlackBerryOS10,为最新操作系统。

本文编写的软件主要用于OS7,以BlackBerryBold9900机型为测试机。

黑莓Bold9900是黑莓首次将QWERTY键盘和触摸屏幕结合,并且搭载全新的OS7系统,采用的是1.2GHz的处理器,通信方面支持3.5G的HSPA+以及NFC近场通讯。根据 BGR 的说法,BlackBerry 7 OS 是在 OS 6.1 基础上的改进,并未采用 PlayBook 平板的 QNX 系统,,"Liquid Graphics"触摸屏效果感觉不错,支持 HSPA+,720p HD 视频录制,8GB 存储,768 MB RAM,支持 NFC 和 AR(虚拟现实)。2011年8月12日至16日左右黑莓Bold 9900在中国上市。

黑莓Bold9900搭载了BlackBerry OS 7系统,其特色是相比过去在功能上有诸多改进和提升。比如拥有更出色的网络浏览器、并且系统的声控搜索功能也将被加入到全局搜索中,不但可以搜索本机内容,而且还可以搜索网页内容。而除了更易用和更方便的操作体验之外,新系统中还提供了Blackberry Balance服务,其特色在于可以更好的平衡用户的个人生活和工作之间安排。

最新的BlackBerry OS 7.0操作系统(非QNX),搭载主频为1.2GHz的高通 Snapdragon MSM8655处理器和768MB RAM,8GB ROM,性能可谓相当强悍。同时黑莓9900还加入了触屏加全键盘设计,使用起来更是如鱼得水,为用户带来更简便的操作。机身背部的摄像头有500万像素,配有闪光灯,成像质量较佳,并且支持720P录像拍照程序分析。

3总结与展望

本文在介绍了黑莓公司及相关背景的基础上,使用java语言开发了黑莓设备的一款拍照程序。此程序还可以进一步加入数字图像处理和UI界面的美化等代码,以达到更好的效果。

参考文献

[1] Cay S.Horstmann&Gary Cornell.Java核心技术.机械工业出版社,2014

[2] Y. Daniel Liang.Java.语言程序设计.机械工业出版社,2011

[3] 邓凡平.深入理解Android:Wi-Fi、NFC和GPS卷.机械工业出版社,2014.

[4] 明日科技.Java从入门到精通.清华大学出版社,2012.

Java程序 篇12

1 Java程序混淆技术的原理

混淆技术[1]实际上就是代码变换技术, 通过变换, 将原始程序P变换为新的程序P1, 它们的功能相似或者相近, 代码安全性非常高。

如果原始程序P, 经过混淆变换T, 变换为新的程序P1, 也就是P1=T (P) , 这个软件混淆变化必须满足以下条件:如果P结束, 那么P1也必须结束, 并且输出结果与P相同;如果P无法结束, 或者以错误状态结束, 那么P1不一定结束;对于P和P1的计算任务, P1比P消耗的时间长, 而且保持在一个特定的范围内;攻击者如果想要将P1恢复成P, 那么所需要消耗的时间远远大于将P转换为P1的时间。

2 Java程序混淆技术的分类

2.1 数据混淆

数据混淆[2]是指对程序的组成元素, 如常量、变量和数据结构进行混淆变换, 增大攻击者反编码的难度。

1) 分裂和合并变量混淆:分裂变量混淆指的是在保持程序原义的前提下, 将一些比较简单的数据结构和数据类型分解成一些变量的组合, 就可以达到隐藏原始程序的效果。

合并变量混淆指的是将几个数值变量或者整型数据合并成一个变量或数据, 从而达到隐藏原始数据的目的。

2) 数组重构混淆:数组是程序中的基本数据结构, 对数组进行重构混淆, 包括数组分裂变换、数组合并变换、数组平滑变换以及数组折叠变换。数组分裂变换指的是将一个数组分裂成两个或者两个以上的数组;数组合并变换是指将两个或两个以上的数组合并为一个数组;数组平滑变换是指减少数组的维数;数组折叠变换是指增加数组的维数。

3) 将静态数据转换为与程序相关的数据:静态数据, 特别是字符串数据, 包含大量信息。通过混淆变换, 可以将静态数据转换为一个函数或者一段子程序, 在执行程序的时候, 可以通过程序调用生成相应的字符串, 从而增加程序的复杂程度。

2.2 词法混淆

词法混淆是变换函数和变量的名称, 违背Java见名知义的软件原则。词法混淆是根据Java虚拟机规范中的类文件结构的有关规定, 混淆常量池中存储的类、字段、方法以及变量等名称的“CONSTANT_Utf8_info”类型数据。词法混淆主要有三种方法:用名称相同但是类型不同的字段进行替换;有意义的标识符用没有任何意义的字符来替换;用Java虚拟机不限制但是Java语言禁止的字符或者字符串来代替原始的字符或者字符串。词法变化具有单向性, 不需要额外的执行代价, 所以程序的复杂几乎不受影响, 在实践中应用比较广泛。

词法混淆还包括移除和改名。移除是指将程序中的注释、调试信息等格式化信息删除掉, 这种方法具有单向性, 一旦混淆无法恢复, 操作简单, 但是强度很差。改名是指将程序中的常量名、变量名等标识符改为没有意义的标识符。

2.3 控制混淆

1) 循环条件插入变换:通过不透明谓词把一个循环的终止条件变得更加复杂。

2) 分支插入变换:对于一串语句, 加入一个控制条件, 增加程序的复杂程度。可以加一个不透明谓词, 构造一个不会执行的分支, 或者另两个分支上的语句都和原语句相同, 从而影响后面语句的执行。

3) 将可制约的控制流转换为不可制约的控制流:利用不透明谓词, 加入一个假分支, 将一个循环变换为多个循环, 增加控制流图的翻译难度。

4) 并行化代码:并行程序比串行程序更复杂, 难以被分析。使用并行技术, 可以构造不透明谓词, 混淆程序的控制流。可以将串行程序并行化, 还可以在程序中添加代码, 增加程序的理解难度。

5) 控制顺序混淆:一般情况下, Java类文件包含了很多控制信息, 对这些控制转换信息进行掩藏可以通过打乱表达式、方法的顺序, 增加程序的理解难度。

2.4 类结构混淆

1) 类合并:类合并[3]指的是将两个或两个以上的类合并成一个类, 包括各个类所包含的变量和函数, 从而破坏系统的类, 隐藏系统的整体设计。根据重命名的变量和方法, 如果合并的类中有相同标识符的函数和变量, 那么就将它们改为不重复的变量或函数;如果合并的类中, 构造函数的标识符和参数都是相同的, 那么就增加一个伪造的参数;如果合并的两个类之间存在着继承的关系, 那么为了区分标识符相同的函数, 可以增加一个布尔型的私有变量。

2) 类分裂:类分裂指的是将一个类C拆分成C1和C2两个类, 并且C2是C1的子类。另外还要保证C中的变量和方法, 由C1继承或者由C2包含。

3) 类型隐藏:

在Java中, 除了类之外, 还有接口, 接口也是一种类型。通过接口, 可以声明待混淆类的变量和方法, 从而实现类型的隐藏。另外, 如果引入的所有接口只服务于一个类, 那么很容易被识别, 为了使自动分析变得困难, 可以使引入的接口同时为几个类服务。

3 Java程序混淆技术的算法

1) 滥用标识符混淆算法:滥用标识符混淆算法[4]是指用同一个标识符代替一个类中出现的所有标识符, 主要是通过Java中标识符中的重命名来实现的。

2) 重载无关联方法算法:重载无关联方法算法与扩展转换和方法重载有很大的关系。这种方法是将被混淆类中的所有实体用相同的标识符来重命名。在Java程序中, 如果某个编译时刻通过了一个象征性的参考, 那么混淆操作一定会被执行, 如果用这种方法对已操作程序反编译, 并重新执行, 就会改变程序的代码。

3) 非法标识符替换算法:非法标识符替换算法[5]是将程序中的普通标识符用关键词和非法字符结合的字符串或者纯粹的关键词来代替。这种混淆算法, 很容易迷惑大多数的反编译软件。

4) 重写静态方法算法:重写静态方法算法可以处理一些被编译过的Java类。它的混淆变化非常细微, 很难被察觉, 从而增加了攻击者的难度。

4 Java程序混淆技术的应用

1) 保护DRM技术。DRM技术的安全性和关键数据的保护有很大的关系, 采用Java程序混淆技术, 可以保护DRM技术的关键数据信息。

2) 保护算法。如果开发者想要将一个新算法应用到软件中的时候, 可以通过代码混淆技术混淆算法的一部分, 从而增加算法的理解难度, 达到保护算法的目的。

3) 代码抗篡改。当进行网络软件操作或者执行相关任务的时候, 代码的安全是相当重要的。软件设计者可以采用Java程序混淆技术保护操作软件, 防止外来用户或者恶意主机篡改代码。

4) 病毒变种。杀毒技术的重要方法就是模式匹配。对于病毒码, 如果采用混淆技术, 那么就可以产生很多不同特征的病毒变种, 威胁到网络安全。

5 结束语

Java程序混淆技术在不改变程序功能的基础上, 增加攻击者对程序反编译的难度, 提高软件知识产权的保护力度, 因此混淆技术在代码保护方面, 应用非常广泛。今后的混淆技术不仅要加大混淆力度, 提高防篡改力度, 还要考虑混淆算法的运行负担。

参考文献

[1]王建民, 余志伟, 王朝坤, 等.Java程序混淆技术综述[J].计算机学报, 2011, 34 (9) :105-108.

[2]霍建雷.用于Java软件保护的代码混淆技术研究与实现[D].西安:西北大学, 2009.

[3]郭玉杰.面向Java的代码混淆技术的研究[D].苏州:江苏大学, 2010.

[4]李新良, 罗戈夕.基于Java的代码混淆算法研究[J].湖南文理学院学报:自然科学版, 2010, 22 (3) :58-62.

上一篇:幼儿手工教学下一篇:校车驾驶人论文