![5c35b1b2160f7ee0fee97848a77c31f5.png](https://i-blog.csdnimg.cn/blog_migrate/46cefdc929a41dcab3e4b51771bccee1.png)
点击蓝字关注我哦
![2195e4a9bacc21761e19a7d99496ea05.png](https://i-blog.csdnimg.cn/blog_migrate/c8495a6e4e3f6729c41a145935478ab0.png)
![44fd0df32ed5800fa79506a9b9063055.png](https://i-blog.csdnimg.cn/blog_migrate/38c5bc49ea37d3e77bb4ab036808d436.png)
![4a64a7626607bea0c9f54fcfe3323f79.png](https://i-blog.csdnimg.cn/blog_migrate/c28deaf934e2a80008663f3060b28f99.png)
0. 概述
面试过程当中,基础问题必不可少。诸如我们今天讲到的变量问题。- 面试问题1:Java当中的基本类型都有哪些?可以列举一下吗?
- 面试问题2:Java当中的变量大概是怎么分的?
- 面试问题3:你知道他们对应的包装类吗以及包装类和基本类型的区别是什么?
1. Java当中的基本数据类型
Java当中的基本数据类型共有8种,他们分别是byte, char,short, int, long, float,double。这8种类型完全可以足够我们去使用,当然除了这些基本数据类型,还有引用类型,如:接口,类,数组,枚举,String等等。大家要有足够的掌握。
2. Java当中的变量
在Java当中变量大概分为两种:成员变量和局部变量。2.1 定义
- 成员变量:定义在类内,方法外的变量。
- 局部变量:定义在方法内的变量。
2.2 具体细分和内存位置
- 成员变量:实例成员变量(不加static修饰)存储于对象中,在堆上。静态成员变量/类变量(被static修饰),存储于方法区中,只有一份。
- 局部变量:存储于栈中。
3. 基本类型对应的包装类以及和基本类型的区别
基本数据类型 | 包装类 |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
Listlist = new ArrayList<>(); // 编译错误
Listlist = new ArrayList<>()
3.2 基本类型比包装类型更高效
基本类型在栈中直接存储的是具体数值,而包装类型只是在栈上存储的是堆中的引用。包装类型对象,每次都要通过 new 一个包装类型就显得非常笨重 。
3.3自动装箱和自动拆箱
JDK1.5之前,每次都要进行手动装箱和拆箱。如代码:
Integer integer = new Integer(10); // 手动装箱
int a = integer.intValue(); // 手动拆箱
JDK1.5 为了减少开发人员的工作,提供了自动装箱与自动拆箱的功能。
Integer integer = 10; // 自动装箱
int a = integer; // 自动拆箱
这里会有一个考点,装箱和拆箱调用的底层方法是什么?我们通过javap -c 来查看:
![73e396ae0cd045476943ee14beec7111.png](https://i-blog.csdnimg.cn/blog_migrate/99b20051039fa465d3f84c4fadad53a7.png)
Integer a = new Integer(200);
Integer b = new Integer(200);
System.out.println(a == b);
输出结果为false。原因很简单,在装箱的时候,调用装箱的方法时,会将-128到127的数字存储起来,如果不在这个范围内,每次都会新new一个对象。
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; //这里low的值是-128 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i);}
4. 总结
![02bfd9cb8b0699c616a5f98218c779ae.png](https://i-blog.csdnimg.cn/blog_migrate/b29a7cae9f48dcc68dee6d4795d1fe00.png)
![164a7ae1984037245e6fe6df3fdd55a4.png](https://i-blog.csdnimg.cn/blog_migrate/105a932f4657cbf4be25c81cec655ef7.png)
好看,就要点个"在看"
![8380040f24832bffd24bbfe4f28c5719.gif](https://i-blog.csdnimg.cn/blog_migrate/faaacfd29b6cee1d5c9b10a5b84e20b2.gif)