Java包装类
来源:互联网 发布:我国农产品出口数据 编辑:程序博客网 时间:2024/06/05 02:58
为什么有了基本类型还要有包装类型?
Java是一个面相对象的编程语言,但基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。比如,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。
基本类型和包装类型
基本数据类型
包装类
byte
Byte
boolean
Boolean
short
Short
char
Character
int
Integer
long
Long
float
Float
double
Double
基本类型和包装类型的区别
1.基本类型直接使用赋值的方式,如int a=1;而包装类型使用new的方式创建,如 new Integer(1)。
2.基本类型是存在内存中的栈,而包装类型是引用类型,会把new出来的对象存在堆中,我们通过引用来使用对象。
3.基本类型的默认值为0,false等,而包装类型的默认值则是null。
自动拆箱和自动装箱(jdk5)
自动装箱-boxing
基本类型就自动地封装到与它相同类型的包装中,如:
Integer i = 100;
本质上是,编译器编译时为我们添加了:
Integer i = Integer.valueOf(100);
自动拆箱autounboxing
包装类对象自动转换成基本类型数据。如:
int a= new Integer(100);
本质上,编译器编译时为我们添加了:
int a= new Integer(100).intValue();
基本类型和字符串之间的转化(前提是字符串是数字形式,否则会报异常)
1.字符串转基本类型
int a= Integer.parseInt(11);
2.基本类型转字符串
String str= Integer.toString(123);
关键点:
Integer integer1 = new Integer(123);Integer integer2 = new Integer(123);System.out.println(integer1 == integer2); //trueSystem.out.println(integer1.equals(integer2));//true
Integer源码中有一个IntegerCache内部类,内部定义了一个Integer对象数组,存储的是-128~127范围内的值。
第一行代码,创建了一个值为123的Integer对象,第二行代码执行时会先判断123是不是符合IntegerCache内部类中定义的数组范围,如果符合,并且缓存中有这个数,就直接在缓存中取出上次创建的,否则再重新创建,所以两个情况都为true。如果将123 改成1234则第一个为false,第二个为true,因为创建的值已经超出了范围没有放在缓存里。
总结:
①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new Integer的引用指向堆,而Integer指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。 j
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
阅读全文
0 0
- java包装类
- Java包装类学习
- Java 包装类
- java包装类
- JAVA 包装类
- Java包装类
- JAVA 包装类
- java包装类笔记
- java 包装类
- java包装类
- JAVA笔记:包装类
- java的包装类
- 包装类--java
- java包装类
- java包装类
- java 包装类
- java包装类
- java包装类
- php性能采样和调优完美工具xhprof UI
- C# Directory类,文件夹类
- Longest Common Prefix--LeetCode
- java面试题
- 一键绕过App签名验证
- Java包装类
- latex 符号
- 使用递归打印该目录下的所有子目录和文件
- hdu_2546_饭卡(01背包)
- Python入门(一)随意感受一下
- java正则表达式
- dropdownList与TextBox结合(.Net控件开发学习第一步)
- 对象克隆
- 网线的排序