《java语言程序设计》第4章

上传人:xinsh****encai 文档编号:243636999 上传时间:2024-09-27 格式:PPT 页数:120 大小:1.09MB
返回 下载 相关 举报
《java语言程序设计》第4章_第1页
第1页 / 共120页
《java语言程序设计》第4章_第2页
第2页 / 共120页
《java语言程序设计》第4章_第3页
第3页 / 共120页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,07,信管,JAVA,语言程序设计,第四章,类的重用,JAVA,语言程序设计,目录,4.1,类的继承,4.2 Object,类,4.3 终结类与终结方法,4.4 抽象类,4.5 类的组合,4.6 包的应用,4.7 本章小结,2,4.1 类的继承,类的继承,联想人的继承。,3,父类(,base class),(例如:学生),也称基类、超类(,superclass,),是被直接或间接继承的类,子类(,derived-class),(例如:大学生),也称派生类 (,subclass),继承父类的属性和行为,子类可以增加属性和行为,子类也可以覆盖(,override),父类的属性和行为,4.1.1 继承的概念,基类和派生类,类的继承,4,动物类层次举例,4.1.1 继承的概念,图4_1,一般,具体,动物,蛇,蜥蜴,鲸,爬行动物,哺乳动物,狗,巨蜥,壁虎,壁虎,是一种,蜥蜴,爬行,动物是,动物的,一种,类的继承,5,4.1.2,继承的语法,继承的语法,class,childClass,extends,parentClass,/,类体,类的继承,6,公司中,有员工(,Employees),及管理(,Magagers,),员工(,Employees),属性信息:,员工号(,employeeNumber,),姓名(,name),地址(,address),电话号码(,phoneNumber,),管理人员(,Managers),除具有员工的属性外,还具有下面的属性,职责(,responsibilities),所管理的职员(,listOfEmployees,),4.1.2 继承的语法(续),例4_1,类的继承,7,Employee,与,Manager,的类图,4.1.2 继承的语法(续),例4_1,Employee,employeeNumbe,:,int,name :,String,address :,String,phoneNumber,:,String,Manager,responsibilities:,String,listOfEmployees:,String,类的继承,8,/父类,Employee,class Employee,int,employeeNumbe,;,String,name, address,phoneNumber,;,/子类,Manager,class Manager extends Employee,/,子类增加的数据成员,String,responsibilities,listOfEmployees,;,4.1.2 继承的语法(续),例4_1,类的继承,9,设有三个类:,Person, Employee, Manager。,其类层次如图:,4.1.2 继承的语法(续),例4_2,Person,Employee,Manager,类的继承,10,public class Person ,public String,name,;,public String,getName,(),return name;,public class Employee extends Person ,public,int,employeeNumber,;,public,int,getEmployeeNumber,(),return,employeeNumber,;,public class Manager extends Employee ,public String,responsibilities,;,public String,getResponsibilities,(),return responsibilities;,4.1.2 继承的语法(续),例4_2,类的继承,11,public class Exam4_2Test ,public static void main(String,args,),Employee,li,= new Employee();,li.name,= “,李明,;,li.employeeNumber,= 123456;,System.out.println(li.getName,();,System.out.println(li.getEmployeeNumber,();,Manager,he = new Manager();,he.name = “,何霞,;,he.employeeNumber,= 543469;,he.responsibilities = Internet project;,System.out.println(he.getName,();,System.out.println(he.getEmployeeNumber,();,System.out.println(he.getResponsibilities,();,4.1.2 继承的语法(续),例4_2测试,类的继承,12,运行结果,Li Ming,123456,He,Xia,543469,Internet project,说明,子类不能直接访问从父类中继承的私有属性及方法,但可使用公有(及保护)方法进行访问,4.1.2 继承的语法(续),例4_2测试结果,类的继承,13,public class B ,public,int,a = 10;,private,int,b,= 20;,protected,int,c = 30;,public,int,getB,() return b; ,public class A extends B ,public,int,d;,public void,tryVariables,() ,System.out.println(a,); /,允许,System.out.println(b,); /,不允许,System.out.println(getB,(); /,允许,System.out.println(c,); /,允许,4.1.2 继承的语法(续),例4_3,类的继承,14,4.1.3 隐藏和覆盖,隐藏和覆盖,子类对从父类继承来的属性,(,成员变量,),及行为(成员方法)可以重新定义。,类的继承,15,属性的隐藏,子类拥有了两个相同名字的变量,一个继承自父类,另一个由自己声明,当子类执行继承自父类的操作时,处理的是继承自父类的变量,而当子类执行它自己声明的方法时,所操作的就是它自己声明的变量,4.1.3 隐藏和覆盖(续),属性的隐藏,class Parent,Float,aNumber,;,Float,getaNumber,(), return,aNumber,; ,class Child extends Parent ,Float,aNumber,;,void show(),System.out.print(aNumber,) ;,类的继承,16,如何访问被隐藏的父类属性,调用从父类继承的方法,则操作的是从父类继承的属性,使用,super,.,属性,4.1.3 隐藏和覆盖(续),访问被隐藏的父类属性,类的继承,17,属性的隐藏举例,class A1,int,x,= 2;,public void,setx(int,i),x = i;,void,printa,(),System.out.println(x,);,4.1.3 隐藏和覆盖(续),例4_4,class B1 extends A1,int,x,=100;,void,printb,(),super.x = super.x +10 ;,System.out.println,(super.x= + super.x +, x= + x);,类的继承,18,public class Exam4_4Test,public static void main(String,args,),A1 a1 = new A1();,a1.setx(4);,a1.printa();,B1 b1 = new B1();,b1.printb();,b1.printa();,b1.setx(6); /,将继承来的,x,值设置为6,b1.printb();,b1.printa();,a1.printa();,4.1.3 隐藏和覆盖(续),例4_4测试,类的继承,19,运行结果,4,super.x= 12 x= 100,12,super.x= 16 x= 100,16,4,4.1.3 隐藏和覆盖(续),例4_4运行结果,类的继承,20,子类可以对父类中的静态属性进行操作。如在上面的例子中,将“,int,x = 2;”,改为“,static,int,x = 2;”,,再编译及运行程序,会得到下面的结果,4,super.x= 14 x= 100,14,super.x= 16 x= 100,16,16,在上面的结果中,第一行及最后一行都是语句“,a1.printa();”,输出的结果,显然类中的,printb,(),方法修改的是类中的静态属性,x,4.1.3 隐藏和覆盖(续),例4_4运行结果,类的继承,21,方法覆盖(,重写,),如果子类不需使用从父类继承来的方法的功能,则可以定义同名方法,,重写其功能,。称为方法覆盖,同名方法是指方法头部完全一致。,子类重写父类的方法后,有两个同名方法,若要调用父类的方法,,需要用,super.,方法名。,4.1.3 隐藏和覆盖(续),方法覆盖,类的继承,22,class A1,int,x,= 2;,void print (),System.out.println(x,);,class B1 extends A1,void print (),System.out.println(“x,的值为”,+x),public class Ex4Test ,public static void,main(String,args,),B1,b1,=new B1();,b1.print();,23,4.1.4 有继承时的构造方法,有继承时的构造方法遵循以下的原则,子类,不能,从父类继承构造方法,子类可以在其构造方法中调用父类构造方法,,调用语句必须出现在子类构造方法的第一行,,使用,super,关键字,如子类构造方法中没有明确调用父类构造方法,则自动调用父类的,无参构造方法,类的继承,24,public class Person,protected,String name,phoneNumber, address;,public Person(),this(, , );,public Person(String,aName, String,aPhoneNumber, String,anAddress,),name=,aName,;,phoneNumber,=,aPhoneNumber,;,address=,anAddress,;,4.1.4 有继承时的构造方法(续),例4_5,类的继承,25,public class Employee extends Person,protected,int,employeeNumber,;,protected String,workPhoneNumber,;,public Employee(),/,此处隐含调用构造方法,Person(),this(0, );,public,Employee(int,aNumber, String,aPhoneNumber,),/,此处隐含调用构造方法,Person(),employeeNumber,=,aNumber,;,workPhoneNumber,=,aPhoneNumber,;,4.1.4 有继承时的构造方法(续),例4_5,类的继承,26,public class Professor extends Employee,protected String research;,public Professor(),super();,research = ;,public,Professor,(int,aNumber, String,aPhoneNumber, String,aResearch,),super(aNumber,aPhoneNumber,);,research =,aResearch,;,4.1.4 有继承时的构造方法(续),例4_5,类的继承,27,在一个公司管理信息系统中,包括,普通员工(,Employees),,其可能有的属性信息包括,员工号(,employeeNumber,),姓名(,name),地址(,address),电话号码(,phoneNumber,),管理者(,Magagers,),,除具有普通员工所具有的属性及行为外,还具有下面的属性和行为,职责(,responsibilities),所管理的职员(,listOfEmployees,),工资的计算方法与一般员工不同;福利与一般员工不同,顾客(,Customers),,可能有的属性信息包括,姓名(,name),地址(,address),电话号码(,phoneNumber,),4.1.5 应用举例,例4_6,类的继承,28,类层次结构,4.1.5 应用举例(续),例4_6,Person,Employee,Manager,Customer,类的继承,29,4.2 Object,类,Object,类,Java,程序中所有类的父类,处在类层次最高点,包含了所有,Java,类的公共属性。,30,Object,类定义了所有对象必须具有的状态和行为,较主要的方法如下,public final Class,getClass,(),获取当前对象所属的类信息,返回,Class,对象,public String,toString,(),返回当前对象本身的有关信息,按字符串对象返回,public,boolean,equals(Objectobj,),比较两个对象是否是同一对象,是则返回,true,protected Object clone( ),生成当前对象的一个拷贝,并返回这个复制对象,Public,int,hashCode,(),返回该对象的哈希代码值,protected void finalize() throws,Throwable,定义回收当前对象时所需完成的资源释放工作,你的类不可以覆盖终结方法,即有,final,修饰的方法,4.2,Object,类(续),包含的主要方法,Object,类,31,相等和同一的概念,两个对象属于,同一个类,,,属性值相同,,则称二者,相等,(,equal),一个对象两个,不同的名字,,则称这两个对象同一(,identical),例如:,a1=a2;,两个对象同一,则肯定相等。两个对象相等,不一定同一,“=” 判断的是这两个对象,是否同一,4.2,Object,类(续),相等和同一,Object,类,32,判断两个对象是否同一,public class Exam4_7,public static void main(String,args,),BankAccount,a =,new,BankAccount(Bob, 123456, 100.00f);,BankAccount,b =,new,BankAccount(Bob, 123456, 100.00f);,if (a,=,b),System.out.println(YES,);,else,System.out.println(NO,);,BankAccount,类在2.5.1中声明,此程序运行的结果为“,NO”,,原因是使用等号“=”判断的是两个对象是否同一,显然,a,和,b,是两个对象,4.2,Object,类(续),例4_7,Object,类,33,public class,BankAccount,private String,ownerName,;,private,int,accountNumber,;,private float,balance,;,public,BankAccount(String,initName,int,initAccountNumber,float,initBalance,) ,ownerName,=,initName,;,accountNumber,=,initAccountNumber,;,balance =,initBalance,;,三个属性的,get/set,方法。,34,修改刚才的程序,public class Exam4_7,public static void main(String,args,),BankAccount,a = new,BankAccount(Bob, 123456, 100.00f);,BankAccount,b = a,;,if (a = b),System.out.println(YES,);,else,System.out.println(NO,);,将,a,所指对象的引用赋给,b,,因此,a,与,b,指向的是同一个对象,,a,与,b,同一。输出结果为“,YES”,4.2,Object,类(续),例4_7,Object,类,35,equals,方法,(,判断是否同一,),Object,是所有类的父类,所有其他类都,继承,了,equals(),方法,Object,类中的,equals(),方法的定义如下,可见,也是判断两个对象是否同一,public,boolean,equals(Object x) ,return this,=,x;,4.2,Object,类(续),equals,方法,Object,类,36,Object,类中,equals,方法的使用举例,public class,EqualsTest,public static void main(String,args,),BankAccount,a = new,BankAccount(Bob, 123456, 100.00f);,BankAccount,b = new,BankAccount(Bob, 123456,100.00f);,if (,a.equals(b),),System.out.println(YES,);,else,System.out.println(NO,);,由于不是同一对象,运行结果仍然是“,NO”,4.2,Object,类(续),例4_8,37,equlas,方法的重写(,判断是否相等,),String,类中已经重写了,Object,类的,Equals,方法,可以判别两个字符串是否相等。,4.2,Object,类(续),equals,方法 的重写,Object,类,38,在,BankAccount,类中,重写,equals,方法,因此方法头与,Object,类中的,equals,方法完全相同。,相等主要通过两点判断:,1,、是否属于同一个类,2,、属性值是否相等,public,boolean,equals(Object x) ,if (,this.,getClass,(),!=,x.,getClass,(),),return false;,BankAccount,b = (,BankAccount,) x;,return,(,this.,getOwnerName(),.equals(,b.getOwnerName,(),),&(,this.,getAccountNumber,(),=,b.,getAccountNumber,(),),&(,this.,getBalance,(),=,b.,getBalance,(),);,4.2,Object,类(续),equals,方法 的重写,Object,类,39,equals,方法的应用举例,public class Apple ,private String color;,private,boolean,ripe;,public,Apple(String,aColor,boolean,isRipe,),color =,aColor,;,ripe =,isRipe,;,public void,setColor(String,aColor,), color =,aColor,; ,public void,setRipe(boolean,isRipe,), ripe =,isRipe,; ,public String,getColor,(), return color; ,public,boolean,getRipe,(), return ripe; ,public String,toString,(),if (ripe) return(A ripe + color + apple);,else return(A not so ripe + color + apple);,Object,类,4.2,Object,类(续),例4_9,40,public,boolean,equals(Object,obj,),if (,obj,instanceof,Apple) ,Apple a = (Apple),obj,;,return (,color.equals(a.getColor,() & (ripe =,a.getRipe,();,return false;,public class,AppleTester,public static void main(String,args,) ,Apple a = new Apple(red, true);,Apple b = new Apple(red, true);,System.out.println(a,+ is equal to + b + : + a.equals(b);,System.out.println(a,is identical to b: + (a = b);,Apple c = a;,System.out.println(a,+ is equal to + c + : + a.equals(c);,System.out.println(a,is identical to c: + (a = c);,4.2,Object,类(续),例4_9,Object,类,41,运行结果,A ripe red apple is equal to A ripe red apple: true,a is identical to b: false,A ripe red apple is equal to A ripe red apple: true,a is identical to c: true,4.2,Object,类(续),例4_9运行结果,Object,类,42,Clone,方法,根据已存在的对象构造一个新的对象,在根类,Object,中被定义为,protected,,所以需要覆盖为,public,实现,Cloneable,接口,赋予一个对象被克隆的能力,(,cloneability,),class,MyObject,implements,Cloneable, /,Object,类,4.2,Object,类(续),Clone,方法,43,finalize,方法,在对象被垃圾回收器回收之前,系统自动调用对象的,finalize,方法,如果要覆盖,finalize,方法,覆盖方法的最后必须调用,super.finalize,4.2,Object,类(续),finalize,方法,Object,类,44,getClass,方法,final,方法,返回一个,Class,对象,用来代表对象隶属的类,通过,Class,对象,你可以查询,Class,对象的各种信息:比如它的名字,它的基类,它所实现接口的名字等。,void,PrintClassName(Object,obj,) ,System.out.println(The,Objects class is +,obj.getClass().getName,(),);,4.2,Object,类(续),getClass,方法,Object,类,45,notify、notifyAll、wait,方法,final,方法,不能覆盖,这三个方法主要用在多线程程序中,4.2,Object,类(续),notify、notifyAll、wait,方法,Object,类,46,4.3 终结类与终结方法,终结类与终结方法,和方法,终结类不能被继承,终结方法不能被子类重写,47,4.3.1,终结类,终结类,被,final,修饰符修饰的类,特点:不能被继承,即没有有子类,终结类存在的理由,安全,:,黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们的类代替原来的类,设计,:,你认为你的类是最好的或从概念上你的类不应该有任何派生类,终结类与终结方法,48,声明,ChessAlgorithm,类为,final,类,final,class,ChessAlgorithm, . . . ,如果写下如下程序:,class,BetterChessAlgorithm,extends,ChessAlgorithm, ,编译器将显示一个错误,Chess.java:6: Cant subclass final classes: class,ChessAlgorithm,class,BetterChessAlgorithm,extends,ChessAlgorithm,1 error,4.3.1 终结类(续),一个例子,终结类与终结方法,49,终结方法,被,final,修饰符修饰的方法,特点:不能被子类覆盖(重写),终结方法存在的理由,对于一些比较重要且不希望子类进行更改的方法,可以声明为终结方法。可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性,提高运行效率。通常,当,java,运行环境(如,java,解释器)运行方法时,它将首先在当前类中查找该方法,接下来在其超类中查找,并一直沿类层次向上查找,直到找到该方法为止,4.3.2,终结方法,终结类与终结方法,50,4.3.1 终结方法(续),例4_10,final,方法举例,class Parent,public Parent() /,构造方法,final,int,getPI,(), return Math.PI; /,终结方法,说明,getPI,(),是用,final,修饰符声明的终结方法,不能在子类中对该方法进行重载,因而如下声明是错的,Class Child extends Parent,public Child() /,构造方法,int,getPI,(), return 3.14; /,重写父类中的终结方法,不允许,终结类与终结方法,51,4.4 抽象类,抽象类,代表一个抽象概念的类,没有具体实例对象的类,不能使用,new,方法进行实例化,类前需加修饰符,abstract,包括被它的所有子类共享的,公共属性和行为,52,存在意义,抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承它的抽象化的特征,抽象类中可以包括被它的所有子类共享的公共行为,抽象类可以包括被它的所有子类共享的公共属性,在程序中不能用抽象类作为模板来创建对象;,在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性,抽象类,4.4 抽象类(续),存在意义,53,将所有图形的公共属性及方法抽象到抽象类,Shape,。再将2,D,及3,D,对象的特性分别抽取出来,形成两个抽象类,TwoDimensionalShape,及,ThreeDimensionalShape,2,D,图形包括,Circles,、,Triangles,、,Rectangles,和,Squares,3,D,图形包括,Cube,、,Sphere,、或,Tetrahedron,在,UML,中,抽象类的类名为斜体,以与具体类相区别,4.4 抽象类(续),几何形状的例子,Shape,Circle,Triangle,Rectangle,Square,TwoDimensionalShap,e,ThreeDimensionalShap,e,Cube,Sphere,Tetrahedron,抽象类,54,例4-6中,如果在应用系统中涉及到的人员只包括:,Customers,Employees,及,Managers。,则,Person,类的子类对象覆盖了应用中的对象,可以将,Person,类声明为抽象类,4.4 抽象类(续),人员的例子,Person,Employee,Manager,Customer,抽象类,55,4.4.1 抽象类的声明,抽象类声明的语法形式为,abstract class Number ,. . .,如果写:,new Number();,编译器将显示错误,抽象类,56,4.4.2 抽象,方法,抽象方法,声明的语法形式为,public,abstract,返回值,方法名,(.);,仅有方法头,而没有方法体,定义一个标准,方法体地具体实现由子类完成,完成标准。,抽象类可以包含抽象方法,抽象类,57,需注意的问题,一个子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体,即重写父类中的所有抽象方法,只有抽象类才能具有抽象方法,即如果一个类中含有抽象方法,则必须将这个类声明为抽象类,除了抽象方法,抽象类中还可以包括非抽象方法,4.4.2 抽象方法(续),需注意的问题,抽象类,58,抽象方法的优点,隐藏具体的细节信息,所有的子类使用的都是相同的方法头,其中包含了调用该方法时需要了解的全部信息,强迫子类完成指定的行为,规定其子类需要用到的“标准”行为,4.4.2 抽象方法(续),抽象方法的优点,抽象类,59,各种图形都需要实现绘图方法,,,可在它们的抽象父类中声明一个,draw,抽象方法,abstract class,GraphicObject,int,x, y;,void,moveTo(int,newX,int,newY,) . . . ,abstract,void,draw(),;,4.4.2 抽象方法(续),一个绘图的例子,抽象类,60,然后在每一个子类中重写,draw,方法,例如:,class Circle extends,GraphicObject,void draw() . . . ,class Rectangle extends,GraphicObject,void draw() . . . ,4.4.2 抽象方法(续),一个绘图的例子,抽象类,61,Loan,Lease,Mortgage,HouseLoan,CarLoan,贷款(,Loan),分为许多种类,如租借(,Lease)、,抵押(,Mortgage)、,房屋贷款(,HouseLoan,)、,汽车贷款(,CarLoan,),等,将,Loan,声明为抽象类,并指定所有的子类对象都应具有的行为,如计算月还款值,(,calculateMonthlyPayment,),,,还款,(,makePayment,),,,取得客户信息,(,getClientInfo,),,,其中前两个因贷款种类不同计算方法也不同,可声明为抽象方法,,Loan,的所有子类都必须对这两个抽象方法进行重写,public abstract class Loan ,public,abstract,float,calculateMonthlyPayment,(),;,public,abstract,void,makePayment(float,amount),;,public Client,getClientInfo,(), ,4.4.2 抽象方法(续),例4_11,抽象类,62,4.5,类的组合,类的组合,现实世界中,大多数对象由更小的对象组成,比如:厨房中包含炊具和冰箱。,与现实世界的对象一样,软件中的对象也常常是由更小的对象组成。,比如:厨房类包含炊具类和冰箱类。,类中的属性是另外一个类的对象,63,4.5.1 组合的语法,组合的语法:,将类的某个属性声明为另外一个类的对象,class Cooker /,类的语句 ,class Refrigerator /,类的语句,class Kitchen,Cooker,myCooker,;,Refrigerator,myRefrigerator,;,类的组合,64,4.5.1 组合的语法(续),例4_12,一条线段包含两个端点,public class Point /,点类,private,int,x, y; /coordinate,public,Point(int,x,int,y), this.x = x; this.y = y;,public,int,GetX,(), return x; ,public,int,GetY,(), return y; ,类的组合,65,car(,汽车)对象是一个很好的例子,由于汽车的装配是故障分析时需要考虑的一项因素,所以有助于客户程序员理解如何使用类,而且类创建者的编程复杂程度也会大幅度降低,class Engine /,发动机类,public void start() ,public void rev() ,public void stop() ,4.5.2 组合与 继承的比较(续),Car,的例子,类的组合,66,class Wheel /,车轮类,public void,inflate(int,psi,) ,class Window /,车窗类,public void rollup() ,public void,rolldown,() ,class Door /,车门类,public Window window = new Window();,public void open() ,public void close() ,4.5.2 组合与 继承的比较(续),Car,的例子,类的组合,67,public class Car ,public,Engine,engine = new Engine();,public,Wheel,wheel = new Wheel4;,public,Door,left = new Door(),right = new Door(); public Car() ,for(int,i = 0; i 4; i+),wheeli = new Wheel();,public static void main(String,args,) ,Car car = new Car();,car.left.window.rollup();,Car.wheel0.inflate(72);,4.5.2 组合与 继承的比较(续),Car,的例子,类的组合,68,4.6 包的应用,包,为了解决类名冲突,,Java,提供包来管理类名空间。,同一包中的类在默认情况下可以互相访问,,不需要使用,import.,69,4.6.1 Java,基础类库简介,Java,基础类库,Java,提供了许多现成的类,这些类的集合称为基础类库,-,JFC,,也称应用程序编程接口,API,。这些类放到不同的包中。,Java,提供的包主要有,java.lang,,,java.io,,,java.math,,java.util,java.applet,java.awt,java.awt.datatransfer,java.awt.event,java.awt.image,java.beans,,java.rmi,java.security,java.sql,等,包的应用,70,语言包(,java.lang,),语言包,java.lang,提供了,Java,语言最基础的类,包括,Object,类,数据类型包裹类,(,the Data Type Wrapper),字符串类,(,String、StringBuffer,),数学类,(,Math),系统和运行时类(,System、Runtime),类操作类(,Class,ClassLoader,),4.6.1,Java,基础类库简介(续),语言包,包的应用,71,数据包裹类,每一个基本数据类型都有一个数据包裹类。,两者可以相互转换。,4.6.1,Java,基础类库简介(续),数据类型包裹类,基本数据类型,数据包裹类,b,oolean,B,oolean,b,yte,B,yte,c,har,C,haracter,s,hort,S,hort,i,nt,I,nteger,l,ong,L,ong,f,loat,F,loat,d,ouble,D,ouble,包的应用,72,基本数据类型转化为包裹类对象,基本数据类型转换为包裹类对象,double x = 1.2;,Double a = new Double(x);,Double b = new Double(-5.25);,字符串转换为包裹类对象,Double c = new Double(-2.34);,Integer i = new Integer(1234);,Integer j= Integer.valueOf(125);,Double c= Double.valueOf(5.15);,4.6.1,Java,基础类库简介(续),生成数据类型包裹类对象的方法,包的应用,73,包裹类对象转化为基本数据类型,使用相应的方法,anIntegerObject.intValue,() /,返回,int,类型,int,m=,a.intValue,();,aCharacterObject.charValue,() /,返回,char,类型的数据,使用特殊方法将,字符串类型的对象,直接转换成对应的基本数据类型,int,m= Integer.parseInt(“234”) /,返回,int,类型的数据,float n= Float.parseFloat(234.78) /,返回,float,类型的数据,包的应用,4.6.1,Java,基础类库简介(续),得到基本数据类型数据的方法,74,public class LX3_1,public static void,main(String,args,),/,从基本数据类型到包裹类对象,int,x = 100;,Integer a = new,Integer(x,);,/,从字符串到包裹类对象,Integer b = new Integer(-100);,Integer c = Integer.valueOf(200);,/,从包裹类对象到基本数据类型,/Integer d=,a+b+c,;,int,y=,a.intValue()+b.intValue()+c.intValue,();,System.out.println(y,);,/,字符串到基本数据类型,int,z=Integer.parseInt(200)+Integer.parseInt(100);,System.out.println(z,);,75,String,类,该类字符串对象的值和长度都不变化,称为常量字符串,生成,String,类对象的方法,可以这样生成一个常量字符串,String,aString,;,aString,= “This is a string”,调用构造方法生成字符串对象,new String();,new String(String value);,例如:,String,bString,=new,String(“this,is a string”);,String,cString,=new,String(aString,);,new String(char value);,new String(char value,int,offset,int,count);,new,String(StringBuffer,buffer);,4.6.1,Java,基础类库简介(续),常量字符串类,String,76,4.6.1,Java,基础类库简介(续),String,类的常用方法1,名称,解释,int,length( ),返回字符串中字符的个数,char,charAt(int,index),返回序号,index,处的字符,int,indexOf(String,s),在接收者字符串中进行查找,如果包含子字符串,s,,则返回匹配的第一个字符的位置序号,,否则返回,-1,String,substring,(int,begin,int,end),返回接收者对象中序号从,begin,开始到,end-1,的子字符串,public String,split(String,regex,),public String,split(String,regex,int,limit),以指定字符为分隔符,分解字符串,String,concat(String,s),返回接收者字符串与参数字符串,s,进行连接后的字符串,包的应用,77,4.6.1,Java,基础类库简介(续),String,类的常用方法2,名称,解释,String replace(char,oldChar, char,newChar,);,将接收者字符串的,oldChar,替换为,newChar,int,compareTo(String,s);,将接收者对象与参数对象进行比较,boolean,equals(String s);,接收者对象与参数对象的值进行比较,String trim( );,将接收者字符串两端的空字符串都去掉,String,toLowerCase,(),将接收者字符串中的字符都转为小写,String,toUpperCase,(),将接收者字符串中的字符都转为大写,包的应用,78,public class LX3_2_S,public static void,main(String,args,),String,str,= This is a string;,/,创建字符串对象,str,String str1=new,String(This,is a string);,/,创建字符串对象,str1,System.out.println(str.length,();,System.out.println(str.charAt(5);,System.out.println(str.indexOf(is,);,System.out.println(str.substring(5,7);,System.out.println(str.concat(#OK,#);,System.out.println(pareTo(str1);,System.out.println(str.equals(str1);,79,StringBuffer,类,(,变量字符串类,),其对象是可修改的字符串,字符的个数称为长度(,length),分配的存储空间称为容量(,capacity),与,String,类的对象相比,执行效率要低一些,该类的方法不能被用于,String,类的对象,4.6.1,Java,基础类库简介(续),变量字符串类,StringBuffer,包的应用,80,生成,StringBuffer,类的对象,new,StringBuffer,();,生成容量为,16,的空字符串对象,new,StringBuffer(int,size);,生成容量为,size,的空字符串对象,new,StringBuffer(String,aString,);,生成,aString,的一个备份,容量为其长度,+16,4.6.1,Java,基础类库简介(续),生成,StringBuffer,类的对象,包的应用,81,4.6.1,Java,基础类库简介(续),StringBuffer,类的常用方法1,名称,解释,int,length ( ),返回字符串对象的长度,int,capacity( ),返回字符串对象的容量,void,ensureCapacity(int,size),设置字符串对象的容量,void,setLength(int,len,),设置字符串对象的长度
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!