Java中int和Integer的关系是什么
Java中int和Integer的关系是什么
还有boolean和Boolean,short和Short,char和Character,byte和Byte,long和Long,float和Float,double和Double。初学Java时有些困惑,拿int和Integer举例说明:
- int是基本数据类型,和C++中类似,但Java是一门面向对象语言,所以对其进行了扩展,封装,形成了Integer类,使其拥有了更多的方法。
- 初始化时int的变量初始化为0,为Integer为null
- 他们都可以表示数值,但不能互用
- 当使用hashmap这样的容器时无法使用int,因为容器内装的都是object
- 如果只是用于简单的运算和参数传递可以使用int,想要使用更多方法就声明为一个对象
对其他的基本类型和封装类也是同样的道理。
Java并不是完全面向对象的语言,依旧保留了基本类型,所以有些地方使用是有点麻烦的,比如在调用函数时,对对象赋值传递的是地址,而基本类型传递的值,所以参数中 int 类型是值传递,不会对实参造成影响,但又不能使用 C 中指针或引用,最近就遇到了这个问题:
- 我先尝试使用 Integer 封装对象,但实参依旧没有改变,原因是 Integer 中的值 int 为 final 类型,无法改变,所以在改变 Integer 对象时是创建了新的对象
- 网上有一些方法,但我觉得都太麻烦了,比如自己封装一个类,传递专用AtomicInteger原子整型对象等。最后选择了最简单的解决办法:将原本要传递的 int 参数改为 int[] 数组类型,可以达到效果