包装类就是基本类型对应的引用类型,全称叫基本数据类型的包装类(简称包装类)
八大基本类型每种都有其对应的包装类:byte Byte
short Short
"char Character
"int Integer
long Long
float Float
double Double
boolean Boolean
在JDK1.5中,引入了自动拆装箱操作
Integer i =10;//底层Integer.valueOf(11)自动帮助我们进行装箱操作int value = i;//底层 i.intValue()自动帮助我们进行拆箱操作
思考题:以下代码进行几次自动装箱和自动拆箱操作??
Integer a =10;// 装1
a++;// a = a + 1 拆1 装1
自动装箱几次?2
自动拆箱几次?1
4.5 基本类型与字符串之间的转换【面试题】
基本类型 转成 String
int num =10;
a.直接+一个""
String s = num +"";
b.通过String的静态方法valueOf
String s = String.valueOf(num);
String 转成 基本类型
String num ="100";
第一种方式:
a.先使用Integer的构造方法
Integer i =newInteger(num);
b.接着调用intValue方法拆箱
int number = i.intValue();
c.或者不调用intValue自动拆箱即可
int number = i;
第二种方式:
直接调用包装类的parseXxx(String s)解析字符串的方法
int number = Integer.parseInt(num);
字符串无法解析成基本类型时的异常
publicclassTestInteger02{publicstaticvoidmain(String[] args){//1.字符串
String num ="999";//2.使用Integer.parseInt方法解析int number = Integer.parseInt(num);
System.out.println(number);//3.如果num中的值无法解析成int,会抛出异常
num ="999我爱你";//NumberFormatException 数字格式化异常int result = Integer.parseInt(num);
System.out.println(result);}}
主要是(普通类,抽象类,接口,以及多态)复习
基本类型,可以作为方法的参数和返回
publicvoidshow(int a){}publicintmethod(){}
普通类,也可以作为方法的参数和返回
publicvoidshow(Dog d){}public Dog method(){}
抽象类,也可以作为方法的参数和返回
publicvoidshow(Animal a){//Animal a = 任意一个子类对象}public Animal method(){}
接口,也可以作为方法的参数和返回
publicvoidshow(Flyable a){//Flyable a = 该接口的某个实现类对象}public Flyable method(){}
总结:
当基本类型作为方法的参数和返回值时,调用方法和返回数据时,返回该基本类型的值即可
当引用类型作为方法的参数和返回值时,调用方法和返回数据时,返回该引用类型的对象/子类对象/实现类对象
6.1 类名作为方法参数和返回值
6.1 普通类作为方法参数和返回值
publicclassTestPerson{publicstaticvoidmain(String[] args){//调用方法killPerson(newPerson(18,"前妻"));//调用方法
Person pp =birthPerson();
System.out.println(pp);}//定义方法,使用普通类Person,作为方法的参数publicstaticvoidkillPerson(Person p){
System.out.println("给老子去死~~");
System.out.println(p);}//定义方法,使用普通类Person,作为方法的返回值publicstatic Person birthPerson(){//返回一个Person对象// Person p = new Person(3,"哪吒");// return p;returnnewPerson(3,"哪吒");}}
结论: 当方法的参数或者返回值是普通类时,我们要传入或者返回的是该类的对象
6.2 抽象类作为方法参数和返回值
publicclassTestAnimal{publicstaticvoidmain(String[] args){//调用方法show(newDog());show(newCat());
System.out.println("=======");//调用方法
Animal an =birthAnimal();
an.eat();
an.bark();}//定义一个方法,使用抽象类Animal作为方法的参数publicstaticvoidshow(Animal an){//Animal an = new Dog();//Animal an = new Cat();
an.eat();
an.bark();}//定义一个方法,使用抽象类Animal作为方法的返回值publicstatic Animal birthAnimal(){//返回Animal的子类对象returnnewDog();// return new Cat();}}
结论:当方法的参数或者返回值是抽象类时,我们要传入或者返回的是该抽象类的子类对象
6.3 接口作为方法参数和返回值
publicclassTestFlyable{publicstaticvoidmain(String[] args){//调用showFly(newBird());showFly(newPlane());
System.out.println("=====");//调用
Flyable ab =getFly();
ab.fly();}//定义方法,使用接口Flyable作为方法参数publicstaticvoidshowFly(Flyable fa){//Flyable fa = new Bird();//Flyable fa = new Plane();
fa.fly();}//定义方法,使用接口Flyable作为方法返回值publicstatic Flyable getFly(){//返回Flyable的实现类对象returnnewBird();// return new Plane();}}
结论:当方法的参数或者返回值是接口时,我们要传入或者返回的是该接口的实现类对象
基本类型可以作为类的成员变量的,其实引用类型也可以作为类的成员变量
publicclassStudent{int age;//学生有年龄
String name;//学生有姓名
Dog dog;//学生有只狗
Animal an;//学生有只动物
Flyable fa;//学生有个会飞的东西}