模仿大厂面试的技法去学习,一条路问到死,由点及面,拒绝花拳绣腿。
1.int和integer有什么区别?
int是八大基本类型中的一个,integer是引用类型(类对象),也就是int的包装类
int默认值为0,integer默认值为null
integer必须实例化之后才可以使用,int不需要
integer可以区分出未赋值和值为0的情况,int不可以
2.那你说一下八大基本类型都有哪些?
byte、short、int、long、float、double、char、boolean
3.能简单说一下他们各自占用的字节数嘛?
1byte、2byte、4byte、8byte、4byte、8byte、1byte、2byte
4.这几种数据类型的默认值都是什么?
0、0、0、0、0.0、0.0、、false
string:null
5.你知道byte的取值范围嘛?
-128-127
6.有了int为什么还要有integer?
主要由于java面向对象的思想,在对于数据的存储/类型的转换等,都是针对于对象的
比如:Integer.parseInt()/Integer.valueOf()
其次:List集合只能存放对象类型integer,不能存放int
7.那既然integer这么优秀,为什么还要保留int呢?
int是基本数据类型,integer是类对象,存储于堆中
在性能方面,java会对类中的对象进行回收,而基本数据类型不会
8.List集合,泛型是object、添加一个int值,实际存入的类型是什么?
code:
public static void main(String args[]){
int a = 1;
ArrayList<Object> list = new ArrayList<>();
list.add(a);
}
反编译:
public static void main(String[] paramArrayOfString) {
byte b = 1;
ArrayList arrayList = new ArrayList();
arrayList.add(Integer.valueOf(b));
}
9.List中为什么不能存放基本数据类型?
因为基本数据类型不是Object的子类
注:所有的类都是objct的子类
10.现有A extends B,A是隐含的Object的子类,同时也是B的子类,那么java不是单继承嘛?
继承方式:A extends B extends Object
11.基本数据类型和包装类分别存储于内存的哪片区域?
包装类对象数据存储于堆中,引用地址存储于栈中
基本数据类型主要分为三种情况(类变量、成员变量、局部变量)
类变量(static int a = 1):跟随类加载的初始化,存储于堆中
成员变量(类对象中:int a = 1):跟随对象的创建,存储于堆中
局部变量(方法区中:int a = 1):跟随方法的出栈入栈,存在于栈中
12.包装类的父类是谁?为什么是一个抽象类而不是接口呢?
Number:类中是六大类型的拆箱方法体(byte、short、int、long、float、double)
因为抽象类中方法可选实现的特点
13.抽象类和接口的区别?
关键字:extends、implements
构造方法:抽象类可以有构造方法,接口中不能有
成员变量:抽象类中任意、接口中默认public static final xxx
抽象方法:抽象类中不全是抽象方法,而接口中全部都是(默认:publc abstract xxx)
实例化:两者均不能被实例化
继承:一个类只能继承一个抽象类,但是可以实现多个接口
默认实现:抽象类可以有,接口不可以有
14.什么场景下使用接口/抽象类?
当对象特征全部抽象的时候使用接口,当对象部分抽象的时候使用抽象类
为了实现代码复用使用抽象类,为了实现多态使用接口
15.了解自动拆箱装箱的底层实现嘛?
自动装箱:
code:
Integer a = 128;
反编译:
Integer integer1 = Integer.valueOf(128);
自动拆箱:
code:
Integer a = new Integer(128);
int b = a;
反编译:
Integer integer2 = new Integer('?');
int i = integer2.intValue();
# 注:后面会提供拆箱装箱的源码追踪
16.拆箱和装箱哪个更耗时?
装箱比拆箱更耗时
17.定义类型int还是integer好?
使用integer
在区分未赋值和值为0的时候/需要调用函数操作
使用int
其他情况下,应该尽量避免拆箱装箱操作(List中存放对象)
比如:
int a = 0;
List list = new ArrayList();
list.add(a)
应聘学习法开创者之一int和integer引发的惨案?(ainusers原创)
猜你喜欢
转载自blog.csdn.net/AinUser/article/details/103195833
今日推荐
周排行