首页 > 编程语言 > 详细

java基本数据类型面经

时间:2021-04-10 00:14:38      阅读:19      评论:0      收藏:0      [点我收藏+]

基本数据类型有哪几种?对应的包装是什么?占用多少字节?

java中基本数据类型有以下8种:
6种数字类型:byte,short,int,long,float,double

1种字符类型:char

1种布尔类型:boolean

8种基本类型对应的包是:Byte,Short,Integer,Long,Float,Double,Character,Boolean

技术分享图片

 

 注意:

java中使用long类型必须在后面加上L,否则将作为int类型解析

对于 boolean,官方文档未明确定义,它依赖于 JVM 厂商的具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素。


自动拆箱和自动装箱

https://www.cnblogs.com/dolphin0520/p/3780005.html

自动拆箱:将包装类型转化为基本数据类型

自动装箱:将基本类型用他们的引用类型包装起来

下面详细解释以下拆箱和装箱的过程以及原理

基本原理

装箱:

在Java SE5之前,如果要创建一个Integer对象,必须严格遵守创建对象的过程

 1 Integer i = new Integer(10); 

但是Java SE5之后,创建一个对象就可以使用更为简单的方式

 1 Integer i=10; 

这个过程就叫装箱,顾名思义,把一个数值装入到Integer对象中

拆箱:

顾名思义,就是把Integer对象中的数值提取出来,把包装器类型转化为基本数据类型

 1 Integer i = 10; //装箱 2 int n = i; //拆箱 

过程

装箱时调用的是包装器的valueOf方法实现的,valueOf函数的参数就是包对应的基本数据类型的一个参数,返回值是包装器对象

拆箱时调用的是xxxValue方法实现的,如intValue,booleanValue....返回值就是对应的基本数据类型,没有参数。

1         Integer i1=new Integer(5);
2         Integer i2=Integer.valueOf(10);
3         int x1=i1.intValue();
4         int x2=i2.intValue();
5         System.out.println(x1);
6         System.out.println(x2);

特殊情况

下面这段代码的输出结果是什么?

 1 public class Main {
 2     public static void main(String[] args) {
 3          
 4         Integer i1 = 100;
 5         Integer i2 = 100;
 6         Integer i3 = 200;
 7         Integer i4 = 200;
 8          
 9         System.out.println(i1==i2);
10         System.out.println(i3==i4);
11     }
12 }

答案是第一个是true,第二个是false(对于==,不同的对象结果是false,相同的对象结果是true)

其原因在于装箱时调用的valueOf()函数,Intger的valueOf(),如果值在-128到127之间,会先在cache中搜索有没有已经存在的对象,如果有,直接调用返回,所以i1和i2是同一个对象。而i3和i4是不同的两个对象。

对于不同的包,valueOf()的源代码不一样,比如Double的valueOf()函数,没有搜索范围内的值然后查找cache的过程,而是直接新建一个对象。


 

8种基本类型的包装类和常量池

 

java基本数据类型面经

原文:https://www.cnblogs.com/wangqianming12138/p/14638557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!