包装类
什么是包装类
- 基本数据(存储在栈里)类型所对应的引用数据类型(对象)(存储在堆里)
- Object可统一所有数据,包装类的默认值是null
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rO8XPDxx-1642817403519)(C:\Users\LIUXINYU\Desktop\博客书写\Screenshot_20220121_152954_tv.danmaku.bili.jpg)]
类型转换与装箱、拆箱
- 装箱:把基本数据类型变成一个引用类型(把栈里面的拿到堆里面)
- 拆箱:把引用类型变成一个基本数据类型(把堆里面拿到栈里面)
public class Number {
public static void main(String[] args) {
//装箱:把基本类型转为引用类型
int num1=10;//基本类型
//使用Integer类创建对象
Integer integer1 = new Integer(num1);//装箱
Integer integer2=Integer.valueOf(num1);//装箱
System.out.println("装箱");
System.out.println(integer1);
System.out.println(integer2);
//拆箱:把引用类型转换为基本类型
Integer integer3=new Integer(100);
int num2=integer3.intValue();
System.out.println("拆箱");
System.out.println(num2);
//自动装箱
int age1=20;
Integer integer4=age1;
System.out.println("自动装箱");
System.out.println(integer4);
//自动拆箱
int age2=integer4;
System.out.println("自动拆箱");
System.out.println(age2);
}
}
//输出
装箱
10
10
拆箱
100
自动装箱
20
自动拆箱
20
基本类型和字符串之间转换
基本类型转换为字符串
- 使用+号
- 使用Integer中的toString()方法
public class StringSwitch {
public static void main(String[] args) {
//基本类型转换为字符串
int n1=16;
//使用+号
String s1=n1+"";
//使用Integer中的toString()方法
String s2=Integer.toString(n1);//toString有很多重载方法
String s3=Integer.toString(n1,2);//后面是改为几进制
System.out.println(s1);//16
System.out.println(s2);//16
System.out.println(s3);//10000
}
}
字符串转化为基本类型
public class StringSwitch {
public static void main(String[] args) {
//字符串改为基本类型
String s1="8";
int n1=Integer.parseInt(s1);
System.out.println(n1);//8
}
}
- boolean中true转坏为true,其余为false
public class StringSwitch {
public static void main(String[] args) {
//boolean中true转坏为true,其余为false
String s1="true";
String s2="false";
String s3="liu";
boolean b1=Boolean.parseBoolean(s1);
boolean b2=Boolean.parseBoolean(s2);
boolean b3=Boolean.parseBoolean(s3);
System.out.println(b1);//true
System.out.println(b2);//false
System.out.println(b3);//false
}
}
Integer缓冲区(看底下视频)
https://www.bilibili.com/video/BV1vt4y197nY?p=19&spm_id_from=333.1007.top_right_bar_window_history.content.click
public class AboutInt {
public static void main(String[] args) {
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);//false(integer1与integer2是引用类型,比较的是地址)
Integer integer3=100;//自动装箱//在-128到127之间,如果这个数已经存在就公用一个地址
Integer integer4=100;
System.out.println(integer3==integer4);//true(在-128到127之间)
Integer integer5=200;//自动装箱
Integer integer6=200;
System.out.println(integer5==integer6);//false(不在-128到127之间)
}
}
er integer5=200;//自动装箱
Integer integer6=200;
System.out.println(integer5==integer6);//false(不在-128到127之间)
}
}