我是靠谱客的博主 积极超短裙,最近开发中收集的这篇文章主要介绍【Java】包装类简述一、什么是包装类?????二、包装类怎么用?三、包装类缓存范围的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、什么是包装类?????

在这里插入图片描述

Java是面向对象的编程语言,但Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个问题,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(包装类在java.lang包中)
下面是基本数据类型对应的包装类:
在这里插入图片描述
【注意】这里除了int类型的包装类是Integer、char类型的包装类是Character之外,其余基本类型对应的包装类都是首字母大写。

二、包装类怎么用?

2.1 包装类用途

作为基本数据类型对应的类存在,方便有关对象的操作

2.2 装箱和拆箱?

下面用int和Integer举例:

public class Packaging {
public static void main1(String[] args) {
int a = 10;
//装箱
Integer val = Integer.valueOf(a);
Integer val2 = new Integer(a);
//自动装箱
Integer val3 = a;
System.out.println("a对应的Integer类为:" + val);
Integer b = new Integer(6);
//拆箱
int val4 = b.intValue();
//自动拆箱
int val5 = b;
System.out.println("b对应的int类型为:" + val4);
}
}

在这里插入图片描述
【注意】DK自从1.5版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行

2.3 基本类型和字符串的转化

2.3.1 基本类型加“”转化为字符串

public static void main(String[] args) {
int a = 10;
System.out.println(a + "");
System.out.println(a + "" + 10);
}

在这里插入图片描述

2.3.2 基本类型转换为包装类然后调用toString方法转化为字符串

public static void main(String[] args) {
double b = 5.21;
String str = Double.toString(b);//这里先装换成了Double类,然后再调用toString方法
System.out.println(str);
System.out.println(str + 1314);
}

在这里插入图片描述

2.3.3 调用String的valueOf方法转化为字符串

public static void main(String[] args) {
int a = 521;
String str = String.valueOf(a);
System.out.println(str);
}

在这里插入图片描述

2.3.4 parse Xxx 方法将字符串转为基本类型

【注意】除Character类之外,其他所有包装类都具有parse Xxx 方法可以将字符串参数转换为对应的基本类型

public static void main(String[] args) {
String str = "5.21";
Double a = Double.parseDouble(str);
System.out.println(a);
System.out.println("str转化为double类型后加10的结果是:" + (a + 10));
}

在这里插入图片描述
【注意】上面最后一个sout语句中如果没有括号,转换后的基本类型就会识别到“”后自动转换成字符串类型

代码演示:

public static void main(String[] args) {
String str = "5.21";
Double a = Double.parseDouble(str);
System.out.println("str转化为double类型后加10的结果是:" + (a + 10));
System.out.println("str转化为double类型后加10的结果是:" + a + 10);
}

在这里插入图片描述

三、包装类缓存范围的问题

下面是一段面试中问到的的代码:

public static void main(String[] args) {
Integer num1 = 200;
Integer num2 = 200;
System.out.println("num1==num2: "+(num1==num2));
Integer num3 = 100;
Integer num4 = 100;
System.out.println("num3==num4: "+(num3==num4));
}

问题:运行结果是什么?
在这里插入图片描述
这里可能大家就有疑问了:值一样的啊,为什么值是200的时候用==比较得出的结果是false?

这里就要说下包装类的缓存范围了:

booleantruefalse
byte-128127
char0127
short-128127
int-128127
long-128127
【注意】对于floatdouble没有缓存

通过缓存范围我们知道,在自动装箱时对于从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都重建一个 Integer对象,所有会返回false。

上述就是对包装类的简述,请大佬们指正

最后

以上就是积极超短裙为你收集整理的【Java】包装类简述一、什么是包装类?????二、包装类怎么用?三、包装类缓存范围的问题的全部内容,希望文章能够帮你解决【Java】包装类简述一、什么是包装类?????二、包装类怎么用?三、包装类缓存范围的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部