JavaWeb程序员

面向对象-包装类

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');

包装类总结






上一篇下一篇

猜你喜欢

热点阅读