Java面向对象程序设计复习指导第一章1、相关文件的扩展名:XXX.javajava源文件;XXX.class字节码文件;2、编译方法:javac文件名.java3、运行方法:java主类类名4、联合编译:一个源文件可以只有一个类或几个类,编译这个源文件将得到这些类的字节码文件,因此,一个java源文件不必是一个java源程序,即不必含有主类。当使用解释器运行一个java应用程序时,java虚拟机将java应用程序需要的字节码文件动态地加载到内存,然后再由java的虚拟机解释执行,因此,可以事先单独编译一个java应用程序所需要的其他源文件,并将得到的字节码文件和应用程序存放在同一目录中。如果应用程序的源文件和其他的源文件在同一目录中,也可以只编译应用程序源文件,java系统对自动地先编译应用程序需要的其他源文件。第二章1、合法的标识符:1)由字母、下划线、美元符号($)和数字组成,长度不受控制;2)第一个字符不能是数字字符;3)不能使关键字;4)不能是true、false、null。·附:java的50个关键字:abstract、assert(声明)、boolean、break、byte、case、catch、char、class、cons(常量)、continue、default、do、double、else、enum、extends(继承)、final、finally、float、for、goto、if、implements(实现接口)、import、instanceof(一种二位运算符)、int、interface、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized(同步的)、this、throw、throws、transient、try、void、volatile(不定的)、while。2、基本数据类型占用的内存空间:int——4个字节;byte——1个字节;short——2个字节;long——8个字节;char——2个字节;float——4个字节;double——8个字节3、基本数据类型的精度:float——保留8位有效数字;double——保留16位有效数字4、基本数据类型间的转换:1)Java中数据的基本类型(不包括逻辑类型)按精度从“低”到“高”排列:byte、short、char、int、long、float、double2)当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如:floatx=100;(100.0)3)当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;例如intx=(int)34.89;longy=(long)56.98F;intz=(int)1999L;5、数组的创建和使用:1)为数组分配内存空间的格式如下:数组名字=new数组元素的类型[数组元素的个数];例如:boy=newfloat[4];2)数组变量boy中存放着这些内存单元的首地址,该地址称作数组的引用,这样数组就可以通过索引操作这些内存单元。3)声明数组和创建数组可以一起完成,例如:floatboy[]=newfloat[4];4)二维数组和一维数组一样,在声明之后必须用new运算符分配内存空间,例如:intmytwo[][];mytwo=newint[3][4];或intmytwo[][]=newint[3][4];5)一维数组通过索引符访问自己的元素,如:boy[0],boy[1]等。注意:索引从0开始,数组若有7个元素,那么索引到6为止,如果程序使用了如下语句:boy[7]=384.98f;程序运行时将生.ArrayIndexOutOfBoundsException异常,因此在使用数组时必须谨慎,防止索引越界。6)二维数组也通过索引符访问自己的元素,如a[0][1],a[1][2]等;需要注意的是索引从0开始。6、枚举类型的使用:Java使用关键字enum声明枚举类型,语法格式如下:enum枚举名{常量列表}其中的常量列表是用逗号分割的字符序列,称为枚举类型的常量(枚举类型的常量要符合标识符之规定,即由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符)。enumSeason{spring,summer,autumn,winter}可以以枚举类型声明枚举变量,如:Seasonx;枚举变量的取值只能是枚举类型声明中定义的枚举类常量对象,如:x=Season.spring;被打印时返回包含在声明中的枚举类常量的名称。第三章1、各种运算符的使用:1)加减运算符:+,-2)乘、除和求余运算符:*,/,%注:以上运算符是二目运算符,结合方向是从左到右。3)算术表达式4)自增、自减运算符:++,--(单目运算符)y=++x(--x)表示在使用x之前,先使x的值增(减)1。y=x++(x--)表示在使用x之后,使x的值增(减)1。5)关系运算符:关系运算符是二目运算符,用来比较两个值的关系。关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。6)逻辑运算符:&&,||,!其中&&、||为二目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。逻辑运算符的操作元必须是boolean型数据。7)赋值运算符(=):赋值运算符是二目运算符,左面的操作元必须是变量,不能是常量或表达式。结合方向右到左。8)位运算符:对两个整型数据实施位运算,即对两个整型数据对应的位进行运算得到一个新的整型数据。1.“按位与”运算符“&”是双目运算符。2.“按位或”运算符“|”是二目运算符。3.“按位非”运算符“~”是单目运算符。4.“按位异或”运算符“^”是二目运算符:(a&~b)|(~a&b)(即判断两个数是否相异,相同为0,不同为1)9)instanceof运算符instanceof运算符是二目运算符,左面的操作元是一个对象;右面是一个类。当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true,否则是false。10)位移运算符:左移(低位补零)带符号右移(高位正数补0,负数补1)不带符号右移(高位正负数补0)2、表达式的求值:通过分析各种运算符的优先级及使用规则来正确求解表达式3、数组类型与for语句:for语句可以更好地遍历数组。语法格式如下:for(声明循环变量:数组的名字){…}其中,声明的循环变量的类型必须和数组的类型相同。声明循环变量必须是变量声明,不可以使用已经声明过的变量。4、枚举类型与for、switch语句:如果有:enumWeekDay{sun,mon,tue,wed,thu,fri,sat}就可以用该枚举类型声明一个枚举变量,该枚举变量只能取值枚举类型中的常量。通过使用枚举名和“.”运算符获得枚举类型中的常量。枚举类型可以用如下形式返回一个数组:枚举类型的名字.values();如:WeekDay[]a=WeekDay.values();第四章1、成员变量与局部变量:类体中变量声明部分所声明的变量被称作类的成员变量。在方法体中声明的变量和方法的参数被称作局部变量。1)变量的类型:成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口(对象和接口见后续内容)。2)变量的有效范围:成员变量在整个类内都有效,局部变量只在声明它的方法内有效。方法参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。3)实例变量与类变量:在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。4)成员变量的隐藏:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。使用被隐藏的成员变量使用关键字this。2、方法重载:方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。方法的返回类型和参数的名字不参与比较。3、类方法与实例方法:方法声明时,方法类型前面不加关键字static修饰的是实例方法(非静态方法)、加static修饰的是类方法(静态方法)。4、创建对象:1.对象的声明——PeoplezhangPing;对象声明后,必须经过初始化(即赋予初值),使其代表(存放)某“引用”(内存地址),通过引用操作某块内存空间,该块空间称作对象的实体。2.为对象分配实体A)初始化但不指向任何实体——zhangPing=null;B)通过new构造方法(参数)方式为对象分配内存zhangPing=newPeople();3.分配实体时的初始化new方法为对象分配实体时,对象内的成员变量(基本数据类型或对象)都被分配内存空间并且赋予初值,对象的初值为null。基本数据类型和对象作为局部变量时,如果不经过初始化操作,无法进行使用。可以在声明时,同时初始化该对象(即分配内存空间)XiyoujiRenwuzhubajie=newXiyoujiRenwu();4.创建多个不同的对象通过new创建多个不同的对象,这些对象分配不同的内存空间。XiyoujiRenwuzhubajie=newXiyoujiRenwu();XiyoujiRenwusunwukong=newXiyoujiRenwu();5、构造方法:构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有返回类型。构造方法也可以重载。构造方法的作用是使用new关键字创建对象实体时,为对象分配内存空间和初始化成员变量的值。如果程序中不明确的给出构造方法,Java会自动为类赋予一个无参数无语句内容的构造方法。如果明确给出了构造方法(无论何种),则Java不自动赋予构造函数。6、调用new方法时发生的事情:当我们使用new时(也就是通过new动态生成一个对象),有两件事发生:1)内存被分配;2)针对此内存会有一个(声明单一对象)或更多(声明对象数组)构造函数被调用。7、对象的引用与实体:1)一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。2)引用值为null的对象无法调用其方法或成员变量,否则会抛出NullPointerException异常,编程时应尽量避免使用空对象,如if(对象!=null){对象.方法();}3)Java的“垃圾回收”机制:java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收任何引用的对象占据的内存空间(不是对象本身)。8、参数传参:1)Java中调用方法时,方法的参数都是“传值”的,参数变量的值是调用者制定值的一个拷贝。2)基本数据类型参数的传值:对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。3)引用类型参数的传值:当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。9、static方法与类:用static修饰的变量——类变量;没有用static修饰的变量——实例变量方法声明中用static修饰的方法——类方法;方法声明中不用static修饰的方法——实例方法1)实例变量和类变量的区别:1Java程序执行时,类的字节码文件被加载到内存,此时类变量被分配相应的内存空间;如果该类没有创建对象,类中的实例变量不会被分配内存。2如果类中有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。2)实例方法和类方法的区别:1当用类创建对象后(确切指分配内存空间),类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。当所有对象不存在时,实例方法的入口地址被取消。2对于类中的类方法,在该类被加载到内存时,就分配了