欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java不同类之间参数传递_《java基础》整型包装类之间值得比较

发布时间:2025/4/17 编程问答 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java不同类之间参数传递_《java基础》整型包装类之间值得比较 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题的起源

事情的起源是上周公司的一个实习生写出的一个BUG,本来没打算写一篇文章的,可是这周我发现另一个实习生也重蹈覆辙。所有想把这个问题分享给各位小白。话不多说直接上问题代码。

问题代码

/** * 该代码是我模拟的问题代码。 */public class Demo { public static void main(String[] args) { // 定义两变量 Integer num1 = 128; Integer num2 = 128; // 进行比较 if(num1 == num2){ System.out.println("num1等于num2"); } else { System.out.println("num1不等于num2"); } } }

那么请问是输出相等还是不等呢??


解决方案

先保留疑问我先提供解决方案

public static void main(String[] args) { // 定义两变量 Integer num1 = 128; Integer num2 = 128; // 解决方法特别简单我们将==换成equals()方法,此时问题迎刃而解。 if(Objects.equals(num1, num2)){ System.out.println("num1等于num2"); } else { System.out.println("num1不等于num2"); } }

解惑

有没有人很不解?明明看着相同的两个数为什么不同那?其实很简单,java中 == 比较的是地址值。当Integer的值在-128至127之间时,Integer对象是在IntegerCache.cache中产生会复用已有对象。当超过这个范围时产生的对象是在堆内存中,就不会复用已有的对象。所以用 == 比较就会出现问题。建议大家使用整形包装类比较时统一都使用equals方法。

欲戴王冠,必承其重。哪有什么好命天赐,不都是一路披荆斩棘才换来的。

总结

以上是生活随笔为你收集整理的java不同类之间参数传递_《java基础》整型包装类之间值得比较的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。