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



目录
相关文章
|
6月前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
17天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
|
2月前
|
Java 编译器 容器
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
37 9
Java——包装类和泛型
|
1月前
|
Java
【Java】什么是泛型?什么是包装类
【Java】什么是泛型?什么是包装类
18 0
|
3月前
|
Java 程序员
【Java基础面试八】、为啥要有包装类?
这篇文章解释了Java中存在包装类的原因:为了让基本数据类型具备对象的特性,使得它们可以被用作对象,以符合Java"一切皆对象"的设计理念,并简化将基本数据类型作为Object类型参数传递的问题。
【Java基础面试八】、为啥要有包装类?
|
2月前
|
存储 Java 测试技术
Java零基础教学(10):包装类
【9月更文挑战第1天】Java零基础教学篇,手把手实践教学!
43 1
|
3月前
|
前端开发 Java
【前端学java】java中的包装类(12)
【8月更文挑战第10天】java中的包装类
23 1
|
3月前
|
存储 Java 测试技术
Java零基础(11) - 包装类详解
【8月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
51 1
|
3月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
37 5
|
4月前
|
存储 Java 测试技术
day18:Java零基础 - 包装类
【7月更文挑战第18天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
40 9
下一篇
无影云桌面