第一讲Java语言入门1.1Java的特点1.1.1面向对象:与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个混血儿。而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。1.1.2可移植(平台无关性):生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。这正是Java实现可移植的机制。原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像SunSPARC这样的32位处理器中,整数用4个字节表示。在IntelPentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows9x、NT和2000,整数是4个字节。当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。Java的字符串,则采用标准的Unicode格式保存。可以说,没有这个特性,Java的可移植性也不可能实现。1.1.3简单JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。C++中,一个类允许有多个超类,这个特性叫做多重继承,多重继承使得编译器非常复杂且效率不高;JAVA的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。与GUI(图形用户界面)相比,明显小很多1.1.4健壮取消了指针算法C的最关键的一个特性是它的强大指针算法,比如可以用指针访问字符串、数组甚至文件,很容易产生指针溢出,意外地改写内存和损毁数据。JAVA里有一个指针模型,对于普通的任务,如访问字符串、数组,根本不用指针,而一旦需要,比如访问对象、文件时,也可以获得指针的强大能力,但JAVA同时有高度的指针安全保障,用户永远不可能访问一个坏掉的指针、不可能造成内存分配错误,也用不着专门提防可能出现的内存漏洞。1.1.5多线程强大的多线程能力多线程可以使程序有更好的交互性和实时性,并可以最大限度地利用多处理器系统。JAVA有着强大的多线程处理能力,因为各主流操作系统平台在线程的实施方面有重大的差异,所以JAVA为不同的操作系统实现了专门的多线程机制。在这点上来说,JAVA没有做到平台无关。1.2Java简史首次亮相--1995年5月Java技术起先是作为小型的计算机语言,用于消费类设备,比如有线电视交换盒等。因为这些设备的功能和内存均不足以运行大程序,所以程序要尽可能小;另外,由于不同的厂商可能选用不同的CPU,所以要求这种语言不能受限于任何一种独立的体系结构。1995年5月23日召开的SunWorld'95大会上,一种全新的浏览器(今天的HotJava的前身)亮相,标志着Java的诞生。开始流行--1996年1月那时网景公司决定在Netscape2.0加入对Java的支持,Netscape2.0在1996年1月发布,从这一版本开始,所有Netscape浏览器均支持Java。注册了Java使用许可证的还有IBM、Symantec、Inprise和其他许多公司。就连微软,也加入了这一行列(尽管他们支持的Java和标准的Java稍有不同)。SUN的第一个JAVA版本--1996年初Sun公司于1996年初发布了Java1.02,遗憾的是,Java1.02还未摆脱其小型语言的影子,只适合用来做诸如网页上一个随机移动的文字之类的工作,并不适合用来做正规的程序开发。Java1.02作为一种正规的编程语言,可以说,准备得很不充分。成熟--1998年1998年12月,Java1.2问世了。它是一个功能全面的、具有高度扩展能力的新版本。3天后,Java1.2被改进成Java2,向一次编写,到处运行的目标前进了一大步。现状现在最新的Java版本是JDK1.4,它是一个测试版,稳定的正式版是JDK1.3。用户可以到免费下载。微软在它的最新浏览器IE6.0中不再支持Java,为Java的发展带来阴影。1.3JDK的安装与编程环境的设定1.3.1Java程序的开发过程经典的Java工具包是JDK。尽管可以用任何文本编辑器,如记事本,都可以直接编写Java程序然后用JDK的命令编译和运行,为了调试方便,也为了初学者容易上手,本教程课件将使用一个叫JPadPro的Java编写工具来调用JDK的工具。用户可以到下载这个工具。1.3.2JDK的安装1.3.3安装运行之后,应该首先设置JDK工具包所在的路径。菜单栏的JDK-〉selectJDKDirectory-〉选择刚才安装的JDK路径-〉OK。1.3.4新建一个project菜单栏的File-newprojects-选择路径,输入project的名字。1.4两个简单的程序示例1.4.1Java应用程序:Hello.java编写新建一个.java文件。File-〉new-〉javafile-〉输入一个名字:Hello-〉点creatfile.出现了一个空的java文件。编译JDK-〉compileHello.java或者点击如演示所示的按钮。实际上是执行JDK工具包里的javac.exe命令,与javacG:\java2jiaocheng\example\teach1\Hello.java是等价的。便已完成之后在同一个文件夹就会有一个同名的.class文件。看编译结果,改错错误举例:少写一个分号;录入错误;运行JDK-〉Runclasses-〉选择要运行的class,输入参数(这里,没有参数)或者点击如演示所示的按钮。一个有参数的例子看运行结果1.4.2JavaApplet:StarterApplet.java新建一个JavaApplet文件。File-〉new-〉javaApplet-〉输入一个名字:StarterApplet-〉出现了一个空的java文件和一个Html文件。编译JDK-〉compileStarterApplet.java或者点击如演示所示的按钮。实际上是执行JDK工具包里的javac.exe命令,与javacG:\java2jiaocheng\example\teach1\StarterApplet.java是等价的。注意不要隐藏文件的扩展名,否则给编译时带来麻烦!可以在工工具/文件夹先项/查看/中修改!!看编译结果,改错运行JDK-〉TestApplet-〉选择要运行的class,输入参数(这里,没有参数)或者点击如演示所示的按钮或者直接双击Html文件。看运行结果1.5如果获得帮助1.5.1下载帮助JDK并不包含帮助文件,需要到网站上下载,里面有示例和说明。,下载下来时候,双击安装。1.5.2使用帮助敲入想查找的关键字,按回车。1.6编程的一些约定注意:在一个原文件中只能有一个public类!且文件名与public类同名!1.6.1命名规则类名与文件名应该一致,否则编译出错。比如,classHello的文件名应该是Hello.java类名首字母大写,每个单词开头大写,其他用小写。比如:Hello.java,StarterApplet.java。变量名用第一个单词用小写字母,第二个以后的单词首字母大写。比如:intmyAge;方法的名字第一个单词用小写字母,第二个以后的单词首字母大写,比如:getMyAge();1.6.2注释/**Hereisablockcomment.*/表示完整的一段注释;if(condition){/*Handlethecondition.*/...}表示注释该行以下部分if(a==2){returnTRUE;/*specialcase*/}else{returnisPrime(a);//worksonlyforodda}注释一行1.6.3分行如果一行太长需要换行。比如:someMethod(longExpression1,longExpression2,longExpression3,longExpression4,longExpression5);var=someMethod1(longExpression1,someMethod2(longExpression2,longExpression3));var=someMethod1(longExpression1,someMethod2(longExpression2,longExpression3));讲演计划第三讲语句Java的语句可以分为以下4种:表达式语句方法调用语句控制语句3.1表达式语句一个表达式加上一个分号就构成了一个语句。分号表示一个语句的结束,缺少分号,编译将出错。最典型的表达式语句是赋值语句。比如:intx;x=23;3.2方法调用语句调用一个类的对象的方法:类名(或对象名).方法名(参数列表)。比如:System.out.println(Hello).如果方法有返回值,还可以把返回值赋值给一个变量。比如:Strings=Hello,intlen;len=s.length();3.3控制语句Java语言的控制语句有2种:条件语句、循环语句。条件语句:条件语句有两种:if语句和switch语句。if语句:if(条件){代码块1}else{代码块2}如果条件为真,则执行代码块1,否则执行代码块2。else部分是可选的,也就是说,可以没有else。如果有else,则与最近的if结合:switch语句switch语句是多分支的开关语句,它的一般格式定义如下:switch(表达式){case常量值1:{代码块1}break;case常量值2:{代码块2}break;……default:{代码块}}语句中表达式的值必须是整型或者字符型;常量值1到常量值n必须也是整型或者字符型。switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,就执行该case里的若干个语句直到break语句为止。如果没有一个常量与表达式的值相同,则执行default后面的若干个语句。default是可有可无的,如果它不存在,并且所有的常量值都和表达式的值不相同,那么switch语句就不会进行任何处理。需要注意的是,在switch同一个语句中,case后的常量值必须互不相同。3.3控制语句Java语言的控制语句有2种:条件语句、循环语句。条件语句:条件语句有两种:if语句和switch语句。if语句:if(条件){代码块1}else{代码块2}如果条件为真,则执行代码块1,否则执行代码块2。else部分是可选的,也就是说,可以没有else。如果有else,则与最近的if结合:switch语句switch语句是多分支的开关语句,它的一般格式定义如下:switch(表达式){case常量值1:{代码块1}break;case常量值2:{代码块2}break;……default:{代码块}}语句中表达式的值必须是整型或者字符型;常量值1到常量值n必须也是整型或者字符型。switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,就执行该case里的若干个语句直到br