整数a = 5和new Integer(5)有什么区别? [英] what is difference between integer a = 5 and new Integer(5)?

查看:154
本文介绍了整数a = 5和new Integer(5)有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我写下面的代码(在java中):

if i write below code(in java):

Integer a =new Integer(5);
Integer b=new Integer(5);
if(a==b){
  System.out.println("In ==");
}
if(a.equals(b)){
 System.out.println("In equals");
}

我的输出是:等于
但是如果我改变了第一行和第二行到 - >

My output is: "In equals" But if i change first and second line to ->

Integer a =5;
Integer b=5;

然后我的o / p是:

then my o/p is:

In == 
In equals

那又怎样创建一个Integer对象有区别吗?当我们这样做时如何创建整数a = 5

So what is difference in creating a Integer object? How it gets created when we do Integer a =5?

这是否意味着a和b对象引用相同的对象,如果我创建整数a = 5 并创建另一个对象整数b = 5

Does it mean that a and b object refer to same object, if i create Integer a=5 and creates another object Integer b=5 ?

推荐答案

整数a = 5 ;被称为自动装箱,编译器将此表达式转换为实际的

Integer a = 5; is called autoboxing, compiler converts this expression into actual

Integer a = Integer.valueOf(5);

对于小数字,默认为-128到127,Integer.valueOf(int)不会创建新的Integer实例,但从其缓存中返回一个值。所以这里

For small numbers, by default -128 to 127, Integer.valueOf(int) does not create a new instance of Integer but returns a value from its cache. So here

Integer a = 5;
Integer b= 5;

a b 指向同一个对象, a == b true

a and b point to the same Object and a == b is true.

这篇关于整数a = 5和new Integer(5)有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆