资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,第章类、对象和接口,4.1,编程语言的几个发展阶段,4.2,类,4.3,对象,4.4 static,关键字,4.5 this,关键字,4.6,包,4.7,访问权限,4.8,类的继承,4.9,对象的上转型对象,4.10,多态性,4.11 abstract,类和,abstract,方法,4.12 super,关键字,4.13,接口,4.14,内部类,4.15,匿名类,4.16,异常类,4.17 Class,类,4.18,基本类型的类包装,4.19,反编译和文档生成器,4.20 jar,文件,4.1,编程语言的几个发展阶段,机器语言(如汇编语言),计算机处理信息的早期语言是所谓的机器语言,这种语言中的指令都是由,0,1,组成的序列,称这样的序列为一条机器指令。,面向过程编程语言,语言把代码组成叫做过程或函数的块。每个块的目标是完成某个任务,例如,一个,C,的源程序就是由若干个书写形式互相独立的函数组成。,面向对象编程语言,面向对象编程主要体现下列三个特性:,1.,封装性,2.,继承,3.,多态,Java,语言是面向对象语言,它的源程序是由若干个类组成,源文件是扩展名为,.java,的文本文件,4.2,类,类:,Class,类是组成,Java,程序的基本要素。,类封装了一类对象的状态和方法。,类是用来定义对象的模板。,类的实现包括两部分,:,类声明和类体。,1.,类声明,class People,“class People”,叫做类声明;“,People”,是类名。习惯上类名的第一个字母大写,但这不是必须的。,2.,类体,写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“,”,,“,”,以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。,类体的内容由两部分构成:,成员变量,,用来描述类的属性;,成员方法,,用来描述类的功能。,类的定义,class,梯形,float,上底,下底,高,laderArea,;/,变量定义部分,float,计算面积,()/,方法定义,laderArea,=(,上底,+,下底,)*,高,/2.0f;,return,laderArea,;,void,修改高,(float h)/,方法定义,高,=h;,类的定义,编码风格,类名的首字母要大些;,如果类名由多个单词组成,单词之间没有空格或下划线,单词之间的字母要大些;,例如:,class,AllTheColorsOfTheRainbow,成员方法、成员变量的第一个字母小写;,成员方法、成员变量的名字由多个单词组成,则第一个字母小写,以后的单词的第一个字母大些。,例如:,int,anIntegerRepresentingColors,例如:,void,changeTheHueOfTheColor(int,newHue,),3.,成员变量和局部变量,变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。,成员变量在整个类内都有效,局部变量只在定义它的方法内有效。,成员变量又分为,实例成员变量,(简称实例变量)和,类变量,(也称静态变量),.,如果成员变量的类型前面加上关键字,static,,这样的成员变量称做是类变量或静态变量。,如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效,.,这时如果想在该方法内使用成员变量,必须使用关键字,this,。,3.,成员变量和局部变量,在方法体中定义的变量和方法的参数被称为局部变量,class,三角形,float,sideA,sideB,sideC,lengthSum,;,void,setSide(float,sideA,float,sideB,float,sideC,),this.sideA,=,sideA,;,/,this.sideA,表示成员变量,sideA,this.sideB,=,sideB,;,/,this.sideB,表示成员变量,sideB,this.sideC,=,sideC,;,/,this.sideC,表示成员变量,sideC,4.,方法,我们已经知道一个类的类体由两部分组成:变量的定义和方法的定义。方法的定义包括两部分:方法声明和方法体。,方法参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效,.,5.,方法重载,方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同,(,方法的类型不同,不能成为确定方法重载的依据,),。,class Area,float,getArea(float,r),return 3.14f*r*r;,double,getArea(float,x,int,y),return x*y;,float,getArea(int,x,float,y),return x*y;,double,getArea(float,x,float,y,float,z),return(x*,x+y,*,y+z,*z)*2.0;,6.,构造方法,构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型。,构造方法的作用:一般用来对实例化对象的属性进行初始化。,构造方法也可以重载,即一个类有多个参数列表不同的构造方法。,class,梯形,float,上底,下底,高,;,梯形,(),上底,=60;,下底,=100;,高,=20;,梯形,(float,x,int,y,float,h),上底,=x;,下底,=y;,高,=h;,7.,类方法和实例方法,类中的方法也可分为实例方法和类方法,.,方法声明时,方法类型前面不加关键字,static,的是实例方法、加关键字,static,的是类方法。,构造方法是特殊的方法,不能用,static,修饰构造方法。,4.3,对象,类是创建对象的模板。当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。,1.,创建对象,创建一个对象包括对象的声明和为对象分配内存两个步骤。,(1),对象的声明。,一般格式为:,类的名字 对象名字,;,如:,People,zhangPing,;,(2),为声明的对象分配内存,使用,new,运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的,你一定还记得构造方法的名字必须和类名相同这一规定)。如:,zhangPing,=new People();,(3),对象的内存模型,使用例子,1,来说明对象的内存模型,class,XiyoujiRenwu,float,height,weight,;,String head,ear,hand,foot,mouth;,void,speak(String,s),System.out.println(s,);,class A,public static void,main(String,args,),XiyoujiRenwu,zhubajie,;,/,声明对象,zhubajie,=new,XiyoujiRenwu,();/,为对象分配内存,,/,使用,new,运 算 符和默认的构造方法,声明对象时的内存模型,当用,XiyoujiRenwu,类声明一个变量,即对象,zhubajie,时,如例子,1,中的对象,zhubajie,:,XiyoujiRenwu,zhubajie,;,内存模型如左图所示,对象分配内存后的内存模型,当系统见到:,zhubajie,=new,XiyoujiRenwu,();,时,就会做两件事:,为,height,,,weight,,,head,,,ear,,,mouth,,,hand,,,foot,各个变量分配内存,即,XiyoujiRenwu,类的成员变量被分配内存空间,然后执行构造方法中的语句。,new,运算符在为变量,height,,,weight,,,head,,,ear,,,mouth,,,hand,,,foot,分配内存后,将返回一个,引用,给对象变量,zhubajie,。,2.,使用对象,对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。,通过使用运算符“,.”,,对象可以实现对自己的变量访问和方法的调用。,当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。,3.,对象的引用和实体,当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。,一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。,没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。,4.,参数传值,当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在,Java,中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的拷贝。例如,如果向方法的,int,型参数,x,传递一个,int,值,那么参数,x,得到的值是传递值的拷贝。方法如果改变参数的值,不会影响向参数“传值”的变量的值。,基本数据类型参数的传值,对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向,int,型参数传递一个,float,值,但可以向,double,型参数传递一个,float,值。,引用类型参数的传值,Java,的引用型数据包括对象、数组和接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。,如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化。但是,改变参数的引用不会影响向其传值的变量的引用。,4.4 static,关键字,用,static,修饰的成员变量称为类变量,用,static,修饰的方法称为类方法,.,实例变量和类变量的区别,一个类通过使用,new,运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。,类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。因此,类变量不仅可以通过某个对象访问也可以直接通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量可以通过对象访问,不能使用类名访问。,.,实例方法和类方法的区别,实例方法可以被类创建的任何对象调用执行。,类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用,4.5,this,关键字,this,是,Java,的一个关键字,表示当前对象。,this,可以出现在实例方法和构造方法中,但不可以出现在类方法,(static方法),中。,this,关键字出现在类的构造方法中时,代表使用该构造方法,所创建的对象,。,this,关键字出现在类的实例方法中时,代表正在,调用该方法的当前对象,。,4.6,包,:库单元,包是,Java,语言中有效地管理类的一个机制。,包内包含一组类,它们在单一的名字空间之下被组织在一起。,Java,中,包使用关键字,package,导入其他包下面的类,使用,import,关键字,1.,包语句,通过关键字,package,声明包语句。,package,语句作为,Java,源文件的第一条语句,指明该源文件定义的类所在的包。,package,语句的一般格式为:,package,包名,;,如果源程序中省略了,package,语句,源文件中你定义命名的类被隐含地认为是默认包的一部分,即源文件中定义命名的类在同一个包中,但该包没有名字。,一般是项目的根目录,包名可以是一个合法的标识符,也可以是若干个标识符加“,.”,分割而成,,以用“域名应用”表示唯一的包,package,com.bruceeckel.simple,;,关于,package,的使用,参看源程序文件,Java,中的文件类型,Java,源程序文件,后缀,.java,Java,编译程序文件,后缀,.class,Java,打包程序,后缀,jar,:可以将一组,.class,文件打包并压缩为一个,Jar,文件。,2.import,语句,2.import,语句,使用,import,语句可以引入包中的类。,在,编写源文件时,,除了自己编写类外,我们经常需要使用,Java,提供的许多类,这些类可能在不同的包中。,在学习,Java,语言时,使用已经存在的类,避免一切从头做起,站在别人的肩膀上。,3,classpath,类路径,设置,Java,的类路径,JAVA_HOME d:devjdk1.5,CLASSPATH .;JAVA_HOMElib,dt.jar;JAVA_HOMElibtools.jar,path%JAVA_HOME%bin;,说明:,dt.jar,和,tools.jar,是,java,中两个最基本的包,包含了从,java,最重要的,lang,包到各种高级功能如可视化的,swing,包,是,java,必不可少的。,在,eclipse,中,右击相关项目的属性,-java,构建路径,-,库,-,添加外部,Jar,3,classpath,类路径,在,Eclipse,中设置,classpath,JDK1.5,以上,会在安装路径下安装,jre,同时自动设置,Java,路径,操作:菜单 窗口,-,首选项,-Java-,构建路径,-,类路径变量,rt,:,RunTime,运行库,JRE,:,Java Runtime,Envirement,Java,运行环境,4,工具库(,libraries,),创建自己的工具库(一组,Jar,文件)来减少或消除重复的程序代码,操作办法:,Eclipse,中设置,libraries,菜单 窗口,-,首选项,-Java-,构建路径,-,用户库,可以对用户库进行新建、编辑、除去、添加,jar,等操作。,在,eclipse,中,右击相关项目的属性,-java,构建路径,-,库,添加库,添加,/,修改库,即可以设置该项目的工具库。,4,工具库(,libraries,),4,工具库(,libraries,),4.7,访问权限,类创建了一个对象之后,该对象可以通过“,.”,运算符操作自己的变量、使用类中的方法,但对象操作自己的变量和使用类中的方法是有一定限制的。,所谓访问权限是指对象是否可以通过“,.”,运算符操作自己的变量或通过“,.”,运算符使用类中的方法。,访问限制修饰符有,private,、,protected,和,public,,都是,Java,的关键字,用来修饰成员变量或方法。,4.7,访问权限,修,饰,符,说,明,public,任何代码均可以访问,public,方法,/,属性,protected,只有派生的类能访问,protected,方法,/,属性,private,只能在所属的类中访问,private,方法,默认,(,包访问性,),在同一包中,能访问友好方法,/,变量,1.,私有变量和私有方法,一个类在另外一个类中创建一个对象后,该对象不能访问自己的私有变量和私有方法,对于一个类的私有类变量(静态成员变量),那么在另外一个类中,也不能通过类名来操作这个私有类变量。,使用关键字:,private,.,公有变量和公有方法,一个类在另外一个类中创建一个对象后,该对象能访问自己的,公有,变量和,公有,方法,对于一个类的,公有,类变量(静态成员变量),那么在另外一个类中,也能通过类名来操作这个,公有,类变量。,使用关键字:,public,3.,受保护的成员变量和方法,一个类在另外一个类中创建一个对象后,如果两个类在同一包中,该对象能访问自己的,受保护,变量和,受保护,方法,对于一个类的,受保护,类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个,受保护,类变量。,在后面学习类的继承时,将讲述,受保护,和“友好”之间在继承方面的区别。,使用关键字:,protected,4.,友好变量和友好方法,不用,private,、,public,、,protected,修饰符的成员变量和方法被称为友好变量和友好方法。,一个类在另外一个类中创建一个对象后,如果两个类在同一包中,该对象能访问自己的友好变量和友好方法,对于一个类的友好类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个友好类变量。,5.,类的访问权限,public,类,每一个编译单元文件,都只能有一个,public,类,public,类的名称必须完全匹配编译单元文件的名称,编译单元可以不带,public,类,说明,类的限定符不可以是,private,或者,protected,类的限定符可以是,public,或者包访问性,如果构造方法都是,private,,但是有一个,static,方法可以创建一个对象,则这种是设计模式的单例创建,为什么要做控制访问,实现了“信息隐藏”这一面向对象的特性,各司其责,不同的权限能访问的内容有不同,允许类库设计者改变内部的实现,而不需要担心是否影响了其他程序员是否对其进行了调用,4.8,类的继承,继承是面向对象的一个基本特性之一。,由继承而得到的类称为子类(派生类),被继承的类称为父类(基类)。,通过继承,可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。,子类继承父类的状态和行为,并根据需要增加子类自己的新的状态和行为。,在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。,Java,不支持多重继承(子类只能有一个父类)。,继承的特性,1,由继承而得到的类称为子类(派生类),被继承的类称为父类(基类)。,继承的特性,2,通过继承,可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。,子类继承父类的状态和行为,并根据需要增加子类自己的新的状态和行为。,继承的特性,3,在子,类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。,继承的特性,4,Java,不支持,多重继承(子类只能有一个父类)。,1.,继承的表示,继承在,Java,语言中的语法,class A,extends,B,派生类,A,会自动得到基类,B,中所有的域和方法,子类除了和基类由相同的接口之外,还可能有一些额外的方法和域;,1.,继承的表示,在类的声明中,通过使用关键字,extends,来创建一个类的子类,格式如下,:,class,子类名,extends,父类名,例如:,class Students extends People,2.,子类的继承性:在同一包中的继承性,修,饰,符,能否被继承,public,方法,/,属性,能,protected,方法,/,属性,能,private,方法,/,属性,不能,默认,(,包访问性,),方法,/,属性,能,子类和父类不在同一包中的继承性,修,饰,符,能否被继承,public,方法,/,属性,能,protected,方法,/,属性,能,private,方法,/,属性,不能,默认,(,包访问性,),方法,/,属性,不能,3,、结合使用组合和继承,同时使用组合和继承,4.,子类可否拥有和父类的同名的成员,子类也可以隐藏继承的成员变量,对于子类可以从父类继承的成员变量,只要子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量,.,4.,子类可否拥有和父类的同名的成员,覆盖:子类的方法覆盖了父类的同名且参数列表相同的方法。子类通过方法的重写可以隐藏继承的方法。,对于子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用子类重写的方法;如果子类继承了父类的方法(未重写),那么子类创建的对象也可以调用这个方法,只不过方法产生的行为和父类的相同而已,.,5.final,关键字,final,关键子可以修饰类、成员变量和方法中的参数。,final,类不能被继承,即不能有子类。,如果一个方法被修饰为,final,方法,则这个方法不能被重写。,如果一个成员变量被修饰为,final,的,就是常量,常量必须赋给初值,而且不能再发生变化。,如果方法的参数被修饰为,final,的,该参数的值不能被改变。,4.9,对象的上转型对象,public static void,tune(Instrument,i),i.play(Note.MIDDLE_C,);,Wind flute=new Wind();,tune(flute,);,/,向上转型,定义时是父类,调用时是子类,4.9,对象的上转型对象,向上转型:定义时是父类的对象,调用时是子类的对象,进行向上转型的好处是什么?,实现的程序不需要进行改变,在逻辑功能需要修改的时候只需要在客户端程序进行修改就可以了。,4.9,对象的上转型对象,向上转型的特点,上转对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。,上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法。,上转型对象操作子类继承或重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。,4.10,多态性,多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为,.,当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。那么当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转的对象在调用这个方法时就可能具有多种形态,.,4.11,abstract,类和,abstract,方法,用关键字,abstract,修饰的类称为,abstract,类(抽象类)。,abstract class A,abstract,类的特点,和普通的类相比,,abstract,类可以有,abstract,方法。对于,abstract,方法,只允许声明,不允许实现,而且不允许使用,final,修饰,abstract,方法。,abstract class A,abstract,int,min(int,x,int,y);,int,max(int,x,int,y),return x,y?x:y,;,abstract,类的特点,abstract,类的子类,实现了,abstract,方法,子类才能创建对象。,abstract,类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。,4.12,super,关键字,子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字,super,来表示,而且,super,必须是子类构造方法中的头一条语句。,如果我们在子类中想使用被子类隐藏了的父类的成员变量或方法就可以使用关键字,super,。比如:,super.x,、,super.play,(),,就是被子类隐藏的父类的成员变量,x,和方法,play(),。,4.13,接口,Java,不支持多继承性,即一个类只能有一个父类。单继承性使得,Java,简单,易于管理程序。为了克服单继承的缺点,,Java,使用了接口,一个类可以实现多个接口。,1.,接口的声明与使用,使用关键字,interface,来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。,接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方法体,且用分号“;”结尾。如:,interface Printable,final,int,MAX=100;,void add();,float,sum(float,x,float y);,接口的使用,一个类通过使用关键字,implements,声明自己使用一个或多个接口。如果使用多个接口,用逗号隔开接口名。如:,class A implements,Printable,Addable,如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体,.,2.,理解接口,接口的思想在于它可以增加很多类都需要实现的功能,使用相同的接口类不一定有继承关系,.,同一个类也可以实现多个接口。接口只关心功能,并不关心功能的具体实现,.,3.,接口回调,接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,.,4.,接口做参数,一个方法的参数是接口类型,就可以将任何实现该接口的类的实例的引用传递给该接口参数,接口参数就可以回调类实现的接口方法。,4.14,内部类,Java,支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。,内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。,4.15,匿名类,和类有关的匿名类,当使用类创建对象时,程序允许我们把类体与对象的创建组合在一起,也就是说,类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体,称作匿名类。,和接口有关的匿名类,Java,允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称作匿名类,.,4.16,异常类,程序运行出现异常时,,Java,运行环境就用异常类,Exception,的相应子类创建一个异常对象,并等待处理,例如,读取一个不存在的文件时,运行环境就用异常类,IOException,创建一个对象,异常对象可以调用如下方法得到或输出有关异常的信息:,public String,getMessage,(),public void,printStackTrace,(),public String,toString,(),使用,trycatch,语句来处理异常,将可能出现的异常操作放在,trycatch,语句的,try,部分,当,try,部分中的某个语句发生异常后,,try,部分将立刻结束执行,而转向执行相应的,catch,部分;所以程序可以将发生异常后的处理放在,catch,部分。,trycatch,语句可以由几个,catch,组成,分别处理发生的相应异常。,trycatch,语句的格式如下:,try,包含可能发生异常的语句,catch(ExceptionSubClass1 e),catch(ExceptionSubClass2 e),4.17,Class,类,Class,是,java.lang,包中的类,该类的实例用来封装对象运行时的状态。当一个类被加载且创建对象时,和该类相关的一个类型为,Calss,的对象就会自动创建。,Class,类本身不提供构造方法,因此,不能使用,new,运算符和构造方法显示地创建一个,Class,对象。任何对象调用,getClass,(),方法都可以获取和该对象相关的一个,Class,对象,这个,Class,对象调用如下的方法可以获取创建对象的类的有关信息,.,使用,Class,实例化一个对象,创建对象最常用的方式就是使用,new,运算符和类的构造方法,实际上我们也可以使用,Class,对象得到一个类的实例。为了得到一个类的对象,可以先得到一个和该类相关的,Class,对象,做到这一点并不困难,只要使用,Class,的类方法,public static Class,forName(String,className,)throws,ClassNotFoundException,就可以返回一个和参数,className,指定的类相关的,Class,对象。再让这个,Class,对象调用,public Object,newInstance,()throws,InstantiationException,IllegalAccessException,方法就可以得到一个,className,类的对象。,4.18,基本类型的类包装,Java,的基本数据类型包括:,byte,、,int,、,short,、,long,、,float,、,double,、,char,。,Java,同时也提供了基本数据类型相关的类,实现了对基本数据类型的封装。这些类在,java.lang,包中,分别是:,Byte,、,Integer,、,Short,、,Long,、,Float,、,Double,和,Character,类。,1.,Double,和,Float,类,Double,类和,Float,类实现了对,double,和,float,基本型数据的类包装。,可以使用,Double,类的构造方法:,Double(double num),创建一个,Double,类型的对象;,使用,Float,类的构造方法:,Float(float num),创建一个,Float,类型的对象。,Double,对象调用,doubleValue,(),方法可以返回该对象含有的,double,型数据;,Float,对象调用,floatValue,(),方法可以返回该对象含有的,float,型数据。,2.,Byte,、,Integer,、,Short,、,Long,类,下述构造方法分别可以创建,Byte,、,Integer,、,Short,和,Long,类型的对象:,Byte(byte,num),Integer(int,num),Short(short,num),Long(long,num),Byte,、,Integer,、,Short,和,Long,对象分别调用,byteValue,(),、,intValue,(),、,shortValue,(),和,longValue,(),方法可以返回该对象含有的基本型数据。,3.,Character,类,Character,类实现了对,char,基本型数据的类包装。,可以使用,Character,类的构造方法:,Character(char c),创建一个,Character,类型的对象。,Character,对象调用,charValue,(),方法可以返回该对象含有的,char,型数据。,4.19,反编译和文档生成器,使用,SDK,提供的反编译器,:,javap.exe,可以将字节码反编译为源码,查看源码类中的方法名字和成员变量的名字,.,使用,SDK,提供的,javadoc.exe,可以制做源文件类结构的,html,格式文档。,作业,P100 T2,、,5,、,7,、,10,、,13,、,14,、,15,、,16,
展开阅读全文