1.包装类
1.1Java中的包装类
byte<-->Byte
short<-->Short
int<-->Integer
long<-->Long
float<-->Float
double<-->Double
char<-->Character
boolean<-->Boolean
void<-->Void
1.2装箱和拆箱
装箱:把基本数据类型转换为包装对象
Integer obj1 = new Integer(4);//使用构造函数函数
Integer obj2 = Integer.valueOf(4);//使用包装类中的valueOf方法
拆箱:把包装对象拆为剧本数据类型
Integer obj = new Integer(4);
int num1 = obj.intValue();
JDK1.5后可以自动装箱和拆箱 只限对应类型之间
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
Integer i = 1;
Double d = 1;//错误的,1是int类型
1.3包装类的一些API
- 获取某个类型的最大值/最小值:
Integer.MAX_VALUE
Integer.MIN_VALUE
- 基本数据与字符串之间的转换
以int为例
String str = "123";
int num = Integer.parseInt(str);
int num = Integer.valueOf(str);
int a = 123;
String string = a + "";
String string = String.valueOf(a);
- 字符转大小写
以char为例
char small = 'a';
char big = (char)(small - 32);
char big = Character.toUpperCase(small);
char upper = 'A';
char lower = (char)(upper + 32);
char lower = Character.toLowerCase(upper);
- 比较大小 (以Double为例)
Double.compare(d1,d2);
1.4包装类的特点
- 包装类对象不可变
- 部分包装类有缓存对象
Byte: -128 ~ 127
Short:-128 ~ 127
Integer:-128 ~ 127
Long:-128 ~ 127
Float和Double没有缓存对象。
Character:0-127
Boolean:true,false
2.抽象类
1.特点
(1)抽象类本身不能直接创建对象,只能创建它的子类对象
(2)抽象类有声明时有一个abstract修饰
(3)子类继承抽象类时,必须重写抽象父类的所有的抽象方法,当然如果子类也是抽象类的话,可以暂时不重写。
(4)抽象类中可以没有抽象方法,一定有构造器,可以有其他的成员变量(包括静态的、非静态的)、成员方法(包括静态、非静态等)、代码块(包括静态、非静态等)。
(5)如果某个类包含抽象方法,这个类必须是抽象类。
3.接口
1.接口的成员都有哪些
(1)公共的静态的常量:public static final,这三个单词可以省略。
(2)公共的抽象方法:public abstract,这两个单词可以省略。
(3)公共的静态方法(JDK1.8之后):public static,其中static不能省略,public可以省略
(4)公共的默认方法(JDK1.8之后):public default,其中default不能省略,public可以省略
(5)私有方法(JDK1.9之后):private,不能省略
2.接口成员的注意点
(1)公共的静态的常量
- 在接口的外面使用:接口名.常量名
- 在接口的实现类中使用:如果没有重名问题,直接使用,不需加“接口名.”,如果有重名问题,必须加“接口名.常量名”
(2)公共的抽象方法
实现类实现接口时,必须重写接口的抽象方法。除非实现类是一个抽象类,可以暂时不重写。
(3)公共的静态方法
接口中的静态方法是不会继承到实现类中。当然也就不存在“重写”静态方法。
接口中的静态方法的使用方式只有一种:接口名.静态方法。
(4)公共的默认方法
- 实现类会继承接口的默认方法。而且实现类可以选择重写接口的默认方法,实现类重写时,default单词去掉。
- 如果实现类在继承父类和实现父接口时,出现默认方法冲突问题,如果没有处理,默认是选择的父类的。如果此时实现类想要选择父类或父接口中的实现,可以:
- 父类:super.方法
- 父接口:接口名.super.方法
- 如果实现类同时实现多个接口时,出现默认方法冲突问题,必须处理,要指定选择哪一个,还是完全重写。
- 父接口:接口名.super.方法
3.接口的特点
(1)接口类型本身是不能直接创建对象的,只能创建它的实现类对象。
(2)接口中是没有构造器,代码块等其他成员,除了上面的几种可以。
(3)实现类实现接口时,必须重写接口的抽象方法。除非实现类是一个抽象类,可以暂时不重写。
(4)实现类在实现接口时,支持多实现。
(5)子接口在继承父接口时,支持多继承。
类 extends 父类 单继承
类 implements 父接口们 多实现
接口 extends 父接口们 多继承