接⼝和抽象类的区别
接口(Interface) | 抽象类(Abstract class) |
---|---|
可以多继承 | 只能有一个父类 |
JDK1.8里,接口也可以定义默认方法,但是在jdk1.8前,接口里面不能定义普通方法 | 可以定义抽象方法,也可以定义普通方法 |
接口中不能定义代码块 | 可以定义代码块 |
不能有构造方法 | 可以有构造方法 |
接口可以包含变量、方法;变量被隐士指定为public static final,方法被隐士指定为public abstract(JDK1.8之前) | public或者protected,默认为public |
java的基本数据类型以及取值范围
数据类型 | byte | short | int | long | char | float | double | boolean |
---|---|---|---|---|---|---|---|---|
字节数 | 1字节 | 2字节 | 4字节 | 8字节 | 2字节 | 4字节 | 8字节 | 4字节 |
取值范围 | -27到27-1 | -215到215-1 | -231到231-1 | -263到263-1 | -215到215-1 | -231到231-1 | -263到263-1 | jvm编译后用int表示 |
String、Stringbuffer、Stringbuilder的区别
String | StringBuffer | StringBuilder | |
---|---|---|---|
可变性 | 不可变类型 | 可变类型 | 可变类型 |
线程安全 | 是 | 是 | 不是 |
效率 | jdk1.8以前,使用+拼接字符串,会产生很多对象,效率低,浪费空间。jdk1.8会默认优化,使用StringBuilder来操作。 | 线程安全,效率比StringBuilder低一些 | 线程不安全,效率高 |