Integer与int的区别
2016-07-18 08:32
204 查看
最近遇到了一个Integer与int相等的判断时有些模糊,不知道怎么写。特地去查询了一下相关的知识。
int是基本类型之一,Integer是引用类型。也就是说int里面存的是一个实实在在的我们赋予的值,而Integer中存储的是我们赋予值得内存或者引用地址,还做了如下实验
public class IntegerTest {
public static void main(String args[]){
Integer a=new Integer(1);
Integer b=new Integer(1);
int c=1;
Integer d=1;
Integer f=1;
if(a==b){
System.out.println("a==b为真");
}
if(d==c){
System.out.println("d==c为真");
}
if(d==f){
System.out.println("d==f为真");
}
if(d==a){
System.out.println("d==a为真");
}
if(a==c){
System.out.println("a==c为真");
}
}
}
运行的结果:
d==c为真
d==f为真
a==c为真
可以这样解释,a,b都是封装的数据类型,都使用了new来开辟了一块新的内存,其中存放的地址 ,类似于指针。当直接用==比较的应该直接比较的是内存地址,而不是实际指向的值。当使用equals方法时,比较a和b却为真,说明这个方法比较的是值。当Integer与int想比较的时候,比较的是值比较,这里涉及了Integer的自动拆箱的功能,d==c就为真了,a与c的比较也是这个道理。对于d与f的比较,这个涉及到对于常数,它有一个内存,或者说是缓存,当进行d和f的赋值方式时,会自动去内存中找,如果有,则直接把这块引用地址赋值给Integer类型的数据,这就是d==f的原因了。
补充一点:int的默认赋值为0,而Integer默认赋值为null(引用类型)。
int是基本类型之一,Integer是引用类型。也就是说int里面存的是一个实实在在的我们赋予的值,而Integer中存储的是我们赋予值得内存或者引用地址,还做了如下实验
public class IntegerTest {
public static void main(String args[]){
Integer a=new Integer(1);
Integer b=new Integer(1);
int c=1;
Integer d=1;
Integer f=1;
if(a==b){
System.out.println("a==b为真");
}
if(d==c){
System.out.println("d==c为真");
}
if(d==f){
System.out.println("d==f为真");
}
if(d==a){
System.out.println("d==a为真");
}
if(a==c){
System.out.println("a==c为真");
}
}
}
运行的结果:
d==c为真
d==f为真
a==c为真
可以这样解释,a,b都是封装的数据类型,都使用了new来开辟了一块新的内存,其中存放的地址 ,类似于指针。当直接用==比较的应该直接比较的是内存地址,而不是实际指向的值。当使用equals方法时,比较a和b却为真,说明这个方法比较的是值。当Integer与int想比较的时候,比较的是值比较,这里涉及了Integer的自动拆箱的功能,d==c就为真了,a与c的比较也是这个道理。对于d与f的比较,这个涉及到对于常数,它有一个内存,或者说是缓存,当进行d和f的赋值方式时,会自动去内存中找,如果有,则直接把这块引用地址赋值给Integer类型的数据,这就是d==f的原因了。
补充一点:int的默认赋值为0,而Integer默认赋值为null(引用类型)。
相关文章推荐
- java基础知识I/O流使用详解
- 【JAVA基础知识总结】-JAVA对象转型(转)
- Java发展方向
- JAVA笔记【20131203】
- JAVA笔记【20131204】
- JAVA中final用法【20131205】
- JAVA笔记【20131205】
- JAVA笔记【20131206】
- JAVA笔记【20131207】
- JAVA笔记【20131208】
- JAVA笔记【20131209】
- JAVA笔记【20131210】
- JAVA笔记【20131211】
- JAVA笔记【20131212】
- JAVA笔记【20131213】
- JAVA笔记【20131214】
- JAVA笔记【20131217】
- 黑马程序员-java基础-基础小知识
- [Java基础知识]开发环境以及JDK的安装与配置
- 【JAVA基础知识总结】Java I/0流概述以及使用方法