JAVA语言程序设计第1页共21页《Java语言程序设计》串讲笔记课程代码:4747【提示】本课程考试内容覆盖到章。其中,重点章节为第三、五、六、八章,考核分数比例约为60%;次重点章节为第二、四、七章,考核分数比例约为30%;一般章节为第一、九、十章,考核分数比例约为10%。第1章Java语言基础Java语言的特点。[P3-4,§1.1]Java语言主要有以下特点:1)强类型:强制约束程序员必须遵守更多的编程规定,编译器能检测程序中尽可能多的错误。2)编译和解释:用Java编写的源程序在计算机上运行必须经过编译和解释执行两个阶段。编译程序先将Java源程序翻译成与机器无关的字节码(bytecode),不是通常的编译程序将源程序翻译成特定计算机的机器代码。运行时,由Java虚拟机(JVM)中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。3)自动无用内存回收功能:垃圾收集器(garbagecollector)可以自动回收程序不再使用的内存,避免程序遗漏或重复释放内存。4)面向对象5)6)与平台无关:与平台无关是对程序可移植性最直接最有效的支持,“一次编程,到处运行”。可移植性源于两方面:1.Java的编译和解释的特征(Java虚拟机);2.Java采用基于国际标准的数据类型,在任何平台上,同一种数据类型是一致的。7)安全性:取消指针,避免因指针使用不当,访问不该访问的内存空间;提供数组下标检测机制,禁止程序越界访问内存;编译执行过程中进行比较严格的检查:在解释执行前,对字节码文件作检查,防止被恶意改动的字节码文件被解释执行而破坏系统;浏览器限制下载的小应用程序不允许访问本地文件,避免其破坏本地文件。8)分布式计算9)多线程:Java的运行环境采用多线程实现。Java语言提供语言级多线程支持,用Java语言能直接编写多线程程序。两种类型的Java程序。[P5,§1.2]Java程序可分为应用程序(Application)和小应用程序(Applet)两类。这两种程序的主要区别:1)小应用程序需要嵌入在HTML网页中,当网页被浏览时,在浏览器中运行;且其运行受到严格的安全限制。2)应用程序则独立运行,不嵌入网页,也没有那些限制。3)另外,这两类程序在代码编写上也有差异:一个小应用程序必须定义为java.applet.Applet类的子类,而不必定义main()方法;应用程序一般不必为java.applet.Applet类的子类,而必须在一个类中定义main()方法。注释:1)行注释//2)块注释/*….*/3)文档注释/**…*/Java程序的开发过程[P6,§1.3]通常在JDK目录下有bin、demo、lib、jre等子目录,其中bin目录保存了javac(编译器)、java(解释器)、jdb(调试器)、appletviewer(javaAppelt解释器)等命令文件;Java的字符集和标识符。[P7,§1.4]Java语言使用Unicode字符集,字符采用双字节的表示方式,共有65535个字符,最前面的128个字符与标准的ASCII字符一致,包括:1)数字字符10个(0~9)2)英文大小写字母各26个(A~Z,a~z)3)下划线(_)、美元符号($)4)文字字符(汉字,日文片假名、平假名,朝鲜文字等)编写源程序文件.javaJava编译器字节码文件.class由Web浏览器执行有Java解释器执行应用程序AppletJAVA语言程序设计第2页共21页5)其他用于构成特殊符号的字符集标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:1)标识符由Java字母和Java数字组成;2)首字符必须是Java字母;3)除去关键字、false、true和null;4)所有标识符是区分大小写的。关键字是Java语言保留的一些英文单词,具有特殊的含义。例如:public、static和class,具有特殊用途,不能作为标识符使用。基本数据类型。[P8-10,§1.5]布尔型(boolean)1个字节(true或false)字符型(char)16位字节型(byte)8位短整型(short)16位整数型(int)32位长整型(long)64位单精度浮点型(float)32位双精度浮点型(double)64位Java直接量是直接显式地表示基本数据类型数据、字符串(String)值和空引用值(null)的表达式,而且在该表达式中不含运算。布尔(boolean)直接量只有两个:true和false字符(char)直接量:如‘a’,‘6’,‘猫’,‘\u0061’,‘\n’整型(byte,short,int)直接量:如-27,+0123,0x56ab长整型(long)直接量:如-27L,+0123L,0x56abL浮点数(float,double)直接量:如1.5,45.6D,100d,76.4e8,-32.0,1.5F,45.6f,76.4E-8F,-32.0F字符串(String)直接量:如“HelloWorld!”引用数据类型的直接量:null变量在计算机内部对应着一个存储单元,而且总是具有某种数据类型:基本数据类型或引用数据类型。每个变量均具有:名字、类型、一定大小的存储单元以及值。变量总是具有与其数据类型相对应的值。基本数据类型:变量的存储单元中存放的是具体的布尔值或数值;引用数据类型:变量的存储单元中存放的是引用值,引用值一般用来指向某个具体的对象。如果引用值是null,则该引用值不指向任何对象。在使用变量前,必须先定义该变量,而且一般要求先初始化。例如:intstudentNumber;//定义单个变量studentNumber=30;//给变量赋值doublevelocity,distance;//定义多个变量intstudentNumber=30;//定义变量,并赋初值第2章运算和语句赋值运算。[P13,§2.1.1]简单赋值运算,格式如下:变量=表达式不是“相等”运算符(“==”)。赋值语句中的数据类型转换只能是简单类型向复杂类型转换,不能从复杂的转换成简单的。转换规则如下:byte→short→int→long→float→bouble复合赋值运算,格式如下:变量双目算术运算符=表达式包括:+=、-=、*=、/=、&=、|=、%=、=、=和=。例如:a+=b等价于a=a+b,a/=b+c等价于a=a/(b+c)。算术运算符。[P14,§2.1.2]算术运算符包括:+(取正),-(取负)(单目运算)+,-,*,/,%(双目运算)注意事项:1)当操作数是定点类型数据时,应当注意运算是否会溢出inti=123456;i=i*i;//溢出2)整数除法:截去余数,7/5结果为13)考虑除数是否可能为0或很小的数4)取模:返回余数,可以对定点或浮点数进行取模运算,7%5结果为2;15.25%(-0.5)结果为0.25自增自减运算。[P14,§2.1.3]JAVA语言程序设计第3页共21页自增(++)和自减(--):操作数必须是变量;有前置和后置两种运算intn=3;inti=n++,j=n--;//i=3,j=4,n=3intk=++n,m=--n;//k=4,m=3,n=3前缀和后缀,对变量本身,效果相同;但表达式的值不相同。运算对象只能是变量,不能是常量或表达式,如:7++;(i+j)--都是非法的。关系运算符。[P15,§2.1.4]关系运算符包括:、、=、=、==和!=,关系运算生成一个布尔结果。例如:12;//false3.5!=1;//true51.5=23.0;//true540=654;//true24==3*8;//truebooleantest1=(1010);//test1=false;关系运算符的优先级:、=、、=优先于==、!=;、=、、=优先级相同,结合性是自左向右;==、!=优先级相同,结合性是自左向右。【注意】Java不允许将一个数字作为布尔值使用,这与c或c++不同。例如:当要表达“如果a不等于0”这个条件不能写作if(a)而要写作if(a!=0)逻辑运算符。[P15,§2.1.5]逻辑运算的操作数必须是布尔型,结果也是布尔型。可以有3种基本操作:与(&&)、或(||)、非(!)。短路规则:一旦能够明确无误的确定整个表达式的值,就不再计算表达式余下的部分了。因此,整个逻辑表达式靠后的部分可能不会计算。比较:(birthday==true)&&(++age=65)(birthday==true)||(++age=65)!优先于双目算术运算符优先于关系运算符优先于&&优先于||条件运算符。[P16,§2.1.6]条件运算符是一个三目运算符,一般形式为:逻辑表达式?表达式1:表达式2例如:inti=5;intk=(i=0)?1:-1;条件运算符的结合性为“自右至左”。例如:xy?x:uv?u:v等价于xy?x:(uv?u:v)位运算和位移运算。[P17,§2.1.7]位运算符包括:&、|、~、^、移位运算符有:、和&、|、~、^按位求与、或、非、异或带符号右移:左端空出的位填原符号位左移:右端空出的位补0不带符号右移(逻辑右移):左端空出的位填0(C或C++中无此运算符)位运算操作是:先将整数写成二进制形式(补码),然后按位操作,最后产生一个新的数注意:只用于定点类型数据(整型)基本语句。[P20,§2.2.1]表达式语句:k=k+2;空语句;break语句:break;用于循环或选择continue语句:continue;同上return语句:return;,return表达式;,该语句的执行将结束方法的执行,只能出现在方法体中。复合语句。[P21,§2.2.2]用花括号引起来的两条或两条以上语句,顺序执行但作为一个整体。在复合语句中可以定义自己专用的临时变量。if语句。[P22,§2.2.3]if语句的格式是:if(布尔表达式)语句或if(布尔表达式){一条或多条语句JAVA语言程序设计第4页共21页}例如:if(score=60)System.out.println(Passed);if-else语句。[P22,§2.2.3]if-else语句的格式是:if(布尔表达式)语句1或语句块1else语句2或语句块2例如:if(score=60)System.out.println(Passed!);elseSystem.out.println(Failed!);标准嵌套if-else控制结构可实现多路选择,用在想从多个候选项中选择且只选出一项时。例如:if(score90)System.out.println(“A”);elseif(score=80)System.out.println(“B”);elseif(score=60)System.out.println(“C”);elseSystem.out.println(“F”);switch语句。[P23,§2.2.4]switch语句的格式是:switch(表达式){case值1:语句组1;break;case值2:语句组2;break;……case值n:语句组n;break;default:语句组(n+1);}switch表达式的数据类型可以是基本类型char、byte、short、int;或是这四种基本类型相对应的包装类java.lang.Character、java.lang.Byte、java.lang.Short、java.lang.Integer或enum枚举类型。跟在case后的必须是常量表达式,其值的类型应当与switch表达式的数据类型相匹配。Switch语句的执行规则:1)求出表达式的值;2)找出给定值与表达式相符的case语句,执行此case标号后的所有语句(除非遇到break语句),直到switch语句结束;3)若没有匹配的case语句,则转向defalult语句,执行defau