基本类型
** string char int double
boolean float byte short **
封装类
全部大写 除了两个 Integer Character
final修饰特点
- 修饰类,类不能被继承
- 修饰变量,变量就变成了常量,只能被赋值一次
- 修饰方法,方法不能被重写
String为什么是不可变的,以及new String(“abc”)创建了几个对象;(一个)
- 在编译期间,该字符串变量的值已经确定了下来,并且将该字符串值缓存在缓冲区中,同时让该变量指向该字符串值,后面如果有使用相同的字符串值,则继续指向同一个字符串值
- String str2 = new String(“abc”); 此时就创建一个对象,而abc 则是从字符串常量缓冲区中取出来的
String、StringBuffer、以及StringBuilder的区别;
在使用String类型时 经常字符串草 会对内存空间的极大浪费 占三个堆内存空间
对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全
-
小结:(1)如果要操作少量的数据用 String;
-
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
-
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
Java的static修饰变量,方法,代码块的初始化顺序
Java 类属性和对象属性的初始化顺序
- static修饰的变量和代码块,两者的先后取决于谁写在前面
- 对象的非静态变量
- 构造函数的初始化代码
重写跟重载的区别;
重写 同参不同名
重载 同名不同参 (参数类型必须不一样)
java中接口和抽象类的区别
相同点
- (1)都不能被实例化
- (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点
- (1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
- (2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
一个类可以实现多个接口,但一个类只能继承一个抽象类
- (3)接口强调特定功能的实现,而抽象类强调所属关系。
- (4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
- (5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。