根据以下链接来解答的面试问题
https://www.jianshu.com/p/62311ac9add7
java基础
JAVA中的几种基本数据类型是什么,各自占用多少字节。
参考链接:
bit --位:计算机中二进制的一个位数
byte --字节: 计算机存储容量的基本单位,一个字节由8个二进制数组成,在计算机内部,一个字节可以表示一个数据也可以表示一个英文字母,两个字节表示一个汉字
1Byte=8bit
1KB=1024Byte(字节)=8*1024bit
1MB=1024KB 1GB=1024MB 1TB=1024GB
java基本数据类型
int 32bit 4byte
short 16bit 2byte
long 64bit 8byte
byte 8bit 1byte
char 16bit 2byte
float 32bit 4byte
double 64bit
boolean 1bit
String类能被继承吗,为什么。
不可以
因为String类有final修饰符修饰,final修饰的类不能被继承,实现细节不允许改变
关于final:深入理解final关键字
当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用
String,Stringbuffer,StringBuilder的区别。
三者区别:
String被final修饰,无法被继承,确认以后无法改变,如果+改变是相当于新建一个新的String对象
StringBuffer线程安全,被synchronized关键字修饰,
StringBuilder相较于Buffer线程不安全,效率高10%~15~左右
ArrayList和LinkedList有什么区别。参考链接
linkdelist在从断点增加和删除更快,更方便,在数据多的时候,ArrayList的索引和查找删除插入更快速。
ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下:
1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
3.LinkedList不支持高效的随机元素访问。
4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
链表和数组的区别。 参考链接
时间复杂度的计算:计算方式
讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。参考链接
执行顺序:
父类静态代变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(父类实例成员变量)、父类构造函数、子类非静态变量(子类实例成员变量)、子类构造函数。
java中int和Integer的区别 答案链接
最关键的是Integer直接声明时,
在-128-127之间是直接从常量池中取,超过范围会去新建对象,从堆空间中新建
IInteger a = 127
Integer b = 127
a==b // true
Integer a1 = 128;
Integer b2 = 128;
a2==b2 //false