面向对象-包装类
2018-11-06 本文已影响1人
我叫吴智斌
包装类
对基本数据类型就行包装的,把基本数据
类型包装成一个对象
把基本数据类型变得更强大,以面向对象的思想来去使用这些类型
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
装箱操作
把基础类型
变成包装类
-->装箱操作
int a =10;
//把基础类型变成包装类-->装箱操作
Integer num=new Integer(a);//第一种装箱方式
Integer num2 = Integer.valueOf(20);//第二种装箱方式
//Integer 内部覆盖了toString
System.out.println(num);//所以打印出来的是10
System.out.println(num.MAX_VALUE);//打印出int类型的最大值
System.out.println(num.MIN_VALUE);//打印出int类型的最小值
System.out.println(num.TYPE);// 知道是由什么基本数据类型包装过来的
MAX_VALUE和MIN_VALUE是一个常量
//public static final int MAX_VALUE = 0x7fffffff;
文档的使用
文档在手,天下我有
//---------------------
//jdk api 中文版 Ctrl+滚轮放大缩小 查阅文档
int xq = 20;
Integer xq1 = new Integer(xq);
//可以把一个字符串转成Integer类型 字符串当中必须是数字
Integer xq2 = new Integer("123");
//把整数转成二进制
System.out.println(Integer.toBinaryString(38));
拆箱操作
把包装类的对象,转换成对应的基本数据类型的变量
Integer num1 = new Integer(12);//装箱操作
System.out.println(num1);
System.out.println(num1.getClass());//对象有方法值
int num2 = num1.intValue();//拆箱的操作
System.out.println(num2);
自动装箱
可以直接把一个基本数据类型的值,赋值给包装类对象
Integer i = 20;// --->语法糖 自动装箱 实际上会做 Integer i = new Integer(20);
System.out.println(i);
// 自动拆箱:可以直接把一个包装类对象赋值给基本数据类型的变量
int i1 = i; // --->语法糖 自动拆箱 实际上会做 int i1 = i.intValue();
字符中与其它类型转换
Stirng与基本数据类型,包装类型之间的转换问题
// 1.如何把一个字符串转成包装类型
// 字符串当中必须都是数字
Integer a = new Integer("123");
System.out.println(a);
Integer a2 = Integer.valueOf(100);
String str = a2.toString();// 把包装类对象转成字符串
// 2.基本数据类型转成字符串
int a3 = 2;
String str2 = a3 + "";
// 3.把字符串转成基本数据类型
String str3 = "300";
int s = Integer.parseInt(str3);
double i = Double.parseDouble(str3);
System.out.println(i);//300.0
//4.字符串转boolean 除了true,其他结果都为false
Boolean b = new Boolean("a");
System.out.println(b);//false
基本数据类型与包装类型区别
1.默认值
int 0
Integer null
2.包装类当中提供了很多方法直接给我们使用
Integer.toBinaryString(5)
3.集合框架当中不能存放基本数据类型 ,只能存对象
什么时候使用基本数据类型 什么时候使用包装类
在类当中,成员变量一般使用包装类型
在方法当中,我们一般都是使用基本数据类型
方法中,基本数据类型存储在栈当中,包装类型存放在堆当中
包装类valueof缓存设计
Integer i = new Integer(300);
Integer i2 = new Integer(300);
System.out.println(i==i2);//比较的是地址 不相等 每new一次 都会创建一个新地址
Integer i3 = Integer.valueOf(100);
Integer i4 = Integer.valueOf(100);
System.out.println(i3==i4);//包装类的缓存设计 true
//range -128 to 127, 缓存范围只有-128 到 127 超过这个范围就不会使用缓存,直接创建新地址
Integer i5 = Integer.valueOf(300);
Integer i6 = Integer.valueOf(300);
System.out.println(i5==i6);//false
new Character('a');//[0 127] 缓存范围
//Character.valueOf('c');
包装类总结