概述
一、什么是包装类?????
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?
这里就要说下包装类的缓存范围了:
boolean:true和false
byte:-128~127
char:0~127
short:-128~127
int:-128~127
long:-128~127
【注意】对于float和double没有缓存
通过缓存范围我们知道,在自动装箱时对于从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都重建一个 Integer对象,所有会返回false。
上述就是对包装类的简述,请大佬们指正
最后
以上就是积极超短裙为你收集整理的【Java】包装类简述一、什么是包装类?????二、包装类怎么用?三、包装类缓存范围的问题的全部内容,希望文章能够帮你解决【Java】包装类简述一、什么是包装类?????二、包装类怎么用?三、包装类缓存范围的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复