Java十分钟精通包装类的使用与操作
包装类
何为包装类?
基本类型包装类的概述: 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据 包装类是将基本数据类型的值包装为Java中的对象,Java语言为8种基本数据类型分别提供了包装类 首先看一下八大数据类型的包装类:
包装类型出现的原因: 因为Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作
常用的操作:用于基本数据类型与字符串之间的转换
Integer类: 在这里就讲一下这个类,其他七个可以去查官方文档,用法什么的都是一样的。
Integer的构造方法:
Integer(int value) //构造一个新分配的 Integer 对象,它表示指定的 int 值 Integer(String s) // 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
例:
Integer i1 = new Integer(123); Integer i2 = new Integer("123"); System.out.println(i1); System.out.println(i2); //两者的结果输出都是123,这就是两个构造方法的使用
最重要的就是String和int类型的相互转换,当然这就需要用到Integer的一些方法: 首先, int----->String:
// int----String 有两个方法 int a = 100; //方法一: 直接拼接 String s1 = "" + a; //方便简洁的方法 System.out.println(s1); //方法二: String包装类里面的 valueOf(int i) 方法 //返回的 int参数的字符串表示形式。 String s2 = String.valueOf(a); //传入整数即可,需要用String类型接收 System.out.println(s1);
String----->int:
//方法一: //String---->Integer----->int //先将String转为Integer包装类,然后使用Integer内的方法intValue() 返回int String s = "100"; Integer i = Integer.valueOf(s); i.intValue(); //Integer内的方法intValue() 返回int System.out.println(i); //方法二: //Integer方法: parseInt(String s) ,将字符串参数作为带符号的十进制整数 int y = Integer.parseInt(s); System.out.println(s);
Integer的equals方法: Integer的equals方法继承自Object,并且进行了重写,也就是判断两个Integer值是否相等:
Integer i1 = new Integer(123); //输入int型的123 Integer i2 = new Integer("123"); //输入String型的123 boolean b = i1.equals(i2); System.out.println(b);
//这里输出的数 true
//Integer类型的对象 i1 和 i2包含的值相等时;其他情况返回false
Integer的其他主要方法,红色字体便是方法名:大家可以自行去尝试
基本类型和包装类型的总结:
- 基本类型的优势:数据存储相对简单,运算效率比较高
- 包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想
- 声明方式不同:基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间
- 存储方式及位置不同:基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
- 初始值不同:基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
- 使用方式不同,基本类型直接赋值直接使用就可以
在Java中,还有很多的类,比如Math,System,Date等等,若有需要这些都可以参考Java官方文档。
自动装箱和拆箱:
装箱:把基本数据类型转换成相应的包装类型
拆箱:把包装类型类型转换成相应的基本数据类型
装箱:
//这是一个Integer普通的构造: Integer i1 = new Integer(100); //而这个写法就是自动装箱,其实这个底层也做了 new Integer(100) Integer i1 = 100; //这两者效果是一样的
拆箱:
//比如要给i1加上200 Integer i1= 100; //因为现在i1是引用数据类型,得先转换成基本数据类型 i1 = i1.intValue()+200; //这个叫手动拆箱 System.out.println(i1); //这样输出就是300 //自动拆箱: nteger i1 = 100; i1+=200; //这个就是自动拆箱, //其实这个自动拆箱底层完成了一次拆箱和一次装箱 //首先i2.intValue(), 然后i2 = i2+200 System.out.println(i1);
但是我们会发现一个小问题:
//当i为null的时候: Integer i = null; i+=100; System.out.println(i); //这样执行会报一个NullPointerException的错误 //所以我们需要添加一个判断: Integer i = null; if(i!=null){ i+=100; } System.out.println(i);
所以我们需要注意:
只要是对象,在操作前,必须做一个不为null的判断
实际上,包装类比基本类型更好用——基本类型能做的事情,包装类也能做。 但包装类能做的,基本类型不一定能做,比如要赋一个 null 值。
到此这篇关于Java十分钟精通包装类的使用与操作的文章就介绍到这了,更多相关Java 包装类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!