java八大包装类

简介: java会事先创建好一个cache数组,用来缓存-128 - 127的数据,以提升访问效率👍所以我们不难得出一个结论,当传入的数据范围在-128 to 127,则通过cache进行返回,否则将会new一个新的对象,故第二个输出为False第三个输出:(x == y),通过以上,不难看出,输出为True


1.八大Wrapper类



2.装箱和拆箱


JDK5之前,需要手动进行装箱拆箱。JDK5之后,自动进行装箱拆箱🎁

实例:


// 装箱和拆箱,JDK5之后,自动进行装箱拆箱
int n = 521;
// 自动装箱
// 底层使用的是Integer.valueOf的方式
Integer integer = n;
System.out.println(integer);  // 521
// 自动拆箱
// 底层依然是使用的intValue方法
int m = integer;
System.out.println(m);  // 521


经典面试题:以下代码会输出什么信息?



要注意三元运算符是一个整体,所以以最高精度的Double输出结果,为1.0


3.包装类方法


String和包装类的互转


直接上代码:


// 包装类 --> String
Integer i = 1314;
// 方式1
String s = i + "";
System.out.println(s);
// 方式2
String s2 = i.toString();
System.out.println(s2);
// 方式3
String s3 = String.valueOf(i);
System.out.println(s3);
// String --> 包装类
String ss = "5211314";
Integer j = Integer.parseInt(ss);
System.out.println(j);


包装类常用方法


// 一些常用方法
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Character.isDigit('a')); // 判断是否为数字
System.out.println(Character.isLetter('a')); // 判断是否为字母
System.out.println(Character.isUpperCase('a')); // 判断是否为大写
System.out.println(Character.isLowerCase('a')); // 判断是否为小写


现用现查即可🎈

经典面试题:(如下代码输出什么结果,Integer创建机制面试题)



第一个输出:(i == j)输出为False,因为i和j是两个不同的对象

第二个输出:(m == n)赋值底层使用的是Integer.valueOf的方式

我们来看一下Integer.valueOf的源码,该源码接受一个整形数据i,判断i是否在某一个范围内,在的话就在cache中返回数据,不在的话就新建一个Integer对象返回


@IntrinsicCandidate
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}


对于i所处的范围,上面的注解有详细的说明:


This method will always cache values in the range -128 to 127

java会事先创建好一个cache数组,用来缓存-128 - 127的数据,以提升访问效率👍

所以我们不难得出一个结论,当传入的数据范围在-128 to 127,则通过cache进行返回,否则将会new一个新的对象,故第二个输出为False


第三个输出:(x == y),通过以上,不难看出,输出为True



目录
相关文章
|
15天前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
1月前
|
存储 Java 数据库
java包装类的作用、基本类型和包装类型的区别
java包装类的作用、基本类型和包装类型的区别
31 0
java包装类的作用、基本类型和包装类型的区别
|
6月前
|
Java
java包装类
Java包装类是Java语言为每个基本数据类型提供的类。Java包装类的主要作用是将基本数据类型封装成对象,以便于在Java中使用。例如,int型的数据可以被封装成Integer对象,byte型的数据可以被封装成Byte对象,等等。Java包装类的主要方法包括:public static Object valueOf(String s):将字符串转换为对象;public static boolean isInstance(Object obj):检查对象是否是包装类的实例;public final int intValue():将对象转换为int型数据;public final byte by
39 0
|
7月前
|
Java
Java之包装类的详细解析
Java之包装类的详细解析
59 0
|
7月前
|
Java
Java包装类应用
Java包装类应用
32 0
|
6月前
|
Java
java包装类
Java中的包装类是为基本数据类型(byte、short、int、long、float、double、char)提供的类,它们的目的是为了解决基本数据类型在Java中的非面向对象性问题。 包装类的主要用途有两个: 提供了基本数据类型的一些额外的方法,如:toByte()、toShort()、toInt()、toLong()、toFloat()、toDouble()、toCharArray()等,这些方法可以将基本数据类型转换为对应的包装类对象。 将包装类对象转换为基本数据类型,可以使用包装类对象的intValue()、longValue()、floatValue()、doub
28 0
|
6月前
|
存储 缓存 Java
【面试题精讲】Java包装类缓存机制
【面试题精讲】Java包装类缓存机制
|
1月前
|
存储 缓存 Java
JAVA基本数据类型的包装类
JAVA基本数据类型的包装类
15 0
|
1月前
|
存储 Java API
Java 包装类:原始数据类型与迭代器
Iterator 接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持 hasNext() 和 next() 方法,用于检查是否存在下一个元素以及获取下一个元素。 获取 Iterator 可以使用集合的 iterator() 方法获取 Iterator 实例:
52 0
|
1月前
|
存储 Java
Java面向对象之——包装类
Java面向对象之——包装类