封装类型
基础类型和封装类型有哪些
基础数据类型有8种,对应8种封装类型
为什么有基础数据类型,还要有包装类型
所有的包装类型都是final修饰的,所以不能创建子类,包装类都是不可变对象
包装类提供了许多操作方法,这样更容易处理基础数据类型
除去int–>Integer char–>Character 其他的包装类型都是首字母大写
什么是自动装箱,自动拆箱
基础数据类型和包装类之间可以相互转换
自动装箱就是将基础数据类型转换为包装类
自动拆箱就是将包装类型转换成基础类型
比如int类型通过valueOf方法实现自动装箱
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
使用intValue() 实现自动拆箱
/**
*Returns the value of this Integer as an int.
*翻译成中文的意思是返回当前值得int类型
*/
public int intValue() {
return value;
}
构造方法有哪些规定
- 名称必须和类名相同
- 没有返回值也不能用void修饰
- 任何类都有构造方法,如果没有显式定义会有一个默认的无参构造方法
- 如果显式定义构造方法,就会覆盖默认的无参构造方法,如果需要无参构造方法需要显式定义
- 一个类可以有多个构造方法,他们是重载关系
重载和重写的区别
重写:
发生在统一个类中,方法名称相同,方法参数不同(参数类型,参数名称,参数位置),与返回值无关,可以是不同的修饰符
重载:
重载发生在继承关系中,方法名称相同,方法参数相同,返回值小于等于父类,权限修饰符大于等于父类,声明的异常小于等于父类
this 和super的区别
this表示当前类的引用,super表示父类的引用
this用于区分同名的变量名或方法名称
this引用的是当前对象的实例,也可以表示当前类的构造方法
this调用本类中的构造方法需要放在方法中的第一行
super用于子类访问父类的变量和方法,也包含构造方法
super用于区分同名的方法和变量
super调用构造方法时休要放在方法中的第一行
不能同时调用子类构造方法和父类构造方法
this和super都不能再static 环境中使用
“==”和equals的区别
“==”对于基础数据类型比较的是值,对于引用数据类型比较的是地址
equals比较的是两个对象是否相等 没用重写equals方法比较的是地址
重写后会根据逻辑进行比较
接口和抽象类的区别
接口是行为的抽象,他是抽象方法的集合
接口不能被实例化,所有的成员变量默认是public static final的
接口中的所有方法要么是抽象方法,要么是静态方法
抽象类不能被实例化
抽象类中可以有抽象方法,也可以没有抽象方法
抽象类是一个共有方法实现,或共有成员变量抽取,主要通过继承实现代码的重用
jdk1.8 接口可以有默认的方法实现,也可以有静态方法体
static在什么情况下使用
static 可以修饰方法,变量,也可以修饰类,还可以静态导包
static代码的执行顺序
- 父类的静态内容(包含静态代码块,静态内部类)
- 执行子类的静态内容
- 父类的非静态代码
- 父类的构造方法
- 子类的非静态方法
- 子类的构造方法
同一个类中的静态内容是从上向下的