您的位置 首页 java

8大基本数据类型及包装类,不知道这些点别说自己是大佬

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题, java 语言为每一个内置数据类型提供了对应的包装类。所以Java语言预定义了8种包装类型:

例如:

Integer.toBinaryString()可得到一个整数的二进制代码

Integer.toHexString()可得到一个整数的十六进制代码

Integer.parseInt()可将一个String转换成int

Integer. toString ()可将一个int转换成String

字符串 和数值类型的转换

字符串 -> 数值: XXX.parseXXX(), 如Integer.parseInt()
数值 -> 字符串: toString(), String.valueOf()

java中的自动装箱与拆箱

/**

* @author YY哥哥

* java中的自动装箱与拆箱

* 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

*/

public class TestDemo {

public static void main(String[] args) {

/**

Integer x= 128; // 装箱,相当于 Integer.valueOf(128);

int y = x; //相当于 x.intValue() 拆箱

System.out.println(y);

*/

/**

对于–128到127(默认是127)之间的值,被装箱后,会被放在内存里进行重用

但是如果超出了这个值,系统会重新new 一个对象

*/

Integer x = 200;

Integer y = 200;

/**

注意 == 与 equals的区别

== 它比较的是对象的地址

equals 比较的是对象的内容

*/

if(x==y) {

System.out.println(“true”);

} else {

System.out.println(“false”);

}

}

}

Java 会对 -128 ~ 127 的整数进行缓存,所以当定义两个变量初始化值位于 -128 ~ 127 之间时,两个变量使用了同一地址:

Integer a=123;

Integer b=123;

System.out.println(a==b); // 输出 true

System.out.println(a.equals(b)); // 输出 true

当两个 Integer 变量的数值超出 -128 ~ 127 范围时, 变量使用了不同地址:

a=1230;

b=1230;

System.out.println(a==b); // 输出 false

System.out.println(a.equals(b)); // 输出 true

Java 中 int 和 Integer 的区别

1. int 是基本数据类型,int 变量存储的是数值。Integer 是引用类型,实际是一个对象,Integer 存储的是引用对象的地址。

Integer x = new Integer(100);

Integer y = new Integer(100);

System.out.print(x == y); //false

解释:因为 new 生成的是两个对象,其内存地址不同。

2. int 和 Integer 所占内存比较:

Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。

3. 非 new 生成的 Integer 变量与 new Integer() 生成的变量比较,结果为 false。

/**

* 比较非new生成的Integer变量与new生成的Integer变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer i= new Integer(200);

Integer j = 200;

System.out.print(i == j);

//输出:false

}

}

解释:非 new 生成的 Integer 变量指向的是 java 常量池中的对象,而 new Integer() 生成的变量指向堆中新建的对象,两者在内存中的地址不同。所以输出为 false。

4. 两个非 new 生成的 Integer 对象进行比较,如果两个变量的值在区间 [-128,127] 之间,比较结果为 true;否则,结果为 false。

/**

* 比较两个非new生成的Integer变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer x1 = 127;

Integer y1 = 127;

System.out.println(x1 == y1);//输出:true

Integer x2 = 128;

Integer y2 = 128;

System.out.println(x2 == y2);//输出:false

}

}

解释:java 在编译 Integer x1 = 127 时,会翻译成 Integer x1 = Integer.valueOf(127)。

5. Integer 变量(无论是否是 new 生成的)与 int 变量比较,只要两个变量的值是相等的,结果都为 true。

/**

* 比较Integer变量与int变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer x1 = 200;

Integer x2 = new Integer(200);

int y = 200;

System.out.println(x1 == y);//输出:true

System.out.println(x2 == y);//输出:true

}

}

解释:包装类 Integer 变量在与基本数据类型 int 变量比较时,Integer 会自动拆包装为 int,然后进行比较,实际上就是两个 int 变量进行比较,值相等,所以为 true。

谢谢大家关注

文章来源:智云一二三科技

文章标题:8大基本数据类型及包装类,不知道这些点别说自己是大佬

文章地址:https://www.zhihuclub.com/197681.shtml

关于作者: 智云科技

热门文章

评论已关闭

3条评论

  1. Duloxetine, for example, is metabolized primarily via hepatic metabolism involving CYP1A2, and to a lesser extent, CYP2D6 The proportion of H

  2. During the earliest part of the luteal phase, the woman will not experience any pregnancy symptoms

网站地图