java 中Integer 类型为啥能相加?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中Integer 类型为啥能相加?相关的知识,希望对你有一定的参考价值。

public class test

public static void main(String[] args)


Integer a=new Integer(12);
Integer b=new Integer(78);
System.out.println(a+b);


a和b都不是基本类型,却能相加,这是怎么实现的?
如果要自己写两个可以相加的类应该怎么办?

刚刚在另一个问题中提到这一点 jdk1.5的新特性 自动装箱和拆箱
也就是 包装类和它包装的简单类型 可以自由转换
以前我们实现这个例子时必须做的是
int a1 = a.intValue();
int b1 = b.intValue();
System.out.println(a1 + b1);
而有了新特性 就不那么多转化了 jvm就帮我们做这些事
参考技术A 基本数据类型:byte,int, short, long, boolean,char, float,double等
包装类型 : Byte,Integer,Short,Long,Boolean,Character,Float,Double等
JDK1.5的新特性:自动装包/拆包(Autoboxing/unboxing)
  自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
  自动装包:基本类型自动转为包装类.(int >> Integer)
  自动拆包:包装类自动转为基本类型.(Integer >> int)
  在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制
解决了我们的问题。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转换成Integer.
Integer b = new Integer(2);
c.add(b + 2);
  这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.
参考技术B Integer x=new Integer(2323);
这个构造方法没错,但
System.out.pringln(a+b);这里a和b不能直接相加,Integer是对int类型的包装,用于将其他的类型值转变为int型的,如int x=Integer.parseInt("12345");括号里面的值“12345”为字符串。还有其他基本数据类型的包装,如:Double,Float,String,等。
参考技术C 这个有点类似于运算符重载了,不过java中并不支持运算符重载,等待他人回答,学习

以上是关于java 中Integer 类型为啥能相加?的主要内容,如果未能解决你的问题,请参考以下文章

java里面既然可以用int定义整形变量,为啥还要用Integer,求大神详细解答

在java Web项目中 数据库中的主键类型integer类型那么实体类中应该用啥类型或最好用啥类型?为啥?

Java中short类型想加为啥会成为int型

java将int类型的变量转化成String类型的

为啥我们在枚举中写 Integer 而不是 int? [复制]

JAVA里面的int类型 和Integer类型,有啥不一样