Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相等与内存比较问题 公共静态无效字符串[]args{ 长l=500L; 长l1=500L; System.out.printlnl==l1; 用户u=新用户; u、 setL500L; 用户u1=新用户; u1.setL500L; System.out.printlnu.getL==u1.getL; }_Java - Fatal编程技术网

Java 相等与内存比较问题 公共静态无效字符串[]args{ 长l=500L; 长l1=500L; System.out.printlnl==l1; 用户u=新用户; u、 setL500L; 用户u1=新用户; u1.setL500L; System.out.printlnu.getL==u1.getL; }

Java 相等与内存比较问题 公共静态无效字符串[]args{ 长l=500L; 长l1=500L; System.out.printlnl==l1; 用户u=新用户; u、 setL500L; 用户u1=新用户; u1.setL500L; System.out.printlnu.getL==u1.getL; },java,Java,上述程序的输出为false、true。为什么它会影响产出 公共类用户{ 私人长l; 公共长线{ 返回l; } 公共无效设置{ 这个。l=l; } } 上面的定义适用于用户类Long不是一个基本数据类型,而是一个将Long包装到对象中的类。 所以不能使用==运算符比较这两个对象,它将始终返回false。 您需要使用equals。Long不是一个基本数据类型,而是一个将Long包装到对象中的类。 所以不能使用==运算符比较这两个对象,它将始终返回false。 您需要使用equals。因为Long是一

上述程序的输出为false、true。为什么它会影响产出

公共类用户{ 私人长l; 公共长线{ 返回l; } 公共无效设置{ 这个。l=l; } } 上面的定义适用于用户类

Long不是一个基本数据类型,而是一个将Long包装到对象中的类。 所以不能使用==运算符比较这两个对象,它将始终返回false。 您需要使用equals。

Long不是一个基本数据类型,而是一个将Long包装到对象中的类。 所以不能使用==运算符比较这两个对象,它将始终返回false。
您需要使用equals。

因为Long是一个包装类==比较引用,就像两个变量指向内存中完全相同的对象相同的位置一样。要比较对象的内部,需要使用equals。但如果User.gerL返回原语long,那就另当别论了。对于基元类型==比较存储在这些基元中的内部值。这就是为什么第二次比较返回true。

因为Long是一个包装类==比较引用,就像两个变量指向内存中完全相同的对象位置一样。要比较对象的内部,需要使用equals。但如果User.gerL返回原语long,那就另当别论了。对于基元类型==比较存储在这些基元中的内部值。这就是为什么第二次比较返回true。

对于L,没有称为stringpool或intrger pool的内容。User.getL的返回类型是什么?是primitive long吗?@ivan是的,它只是一个primitive long。L没有称为stringpool或intrger pool。User.getL的返回类型是什么?是原始长的吗?@ivan是的,是原始长的only@user3309305是的,您讨论了Java的一个概念问题,==操作符可以方便地处理原语,但不能处理对象。在99%的情况下,程序员希望使用==来比较对象,而不是它们的指针。几乎所有语言都是这样做的。@MarcLeBihan不是一个知识渊博的java程序员。对象使用.equals,基元类型使用==。是的,我觉得这不是语言设计师的最佳决定,但我遵循这一决定,因为这就是语言的工作方式。一个真正有知识、不熟悉Java的程序员知道不要假设所有编程语言的行为方式都是一样的。@user3309305是的,您讨论了Java的概念问题,==运算符可方便地用于基本体,但不用于对象。在99%的情况下,程序员希望使用==来比较对象,而不是它们的指针。几乎所有语言都是这样做的。@MarcLeBihan不是一个知识渊博的java程序员。对象使用.equals,基元类型使用==。是的,我觉得这不是语言设计师的最佳决定,但我遵循这一决定,因为这就是语言的工作方式。一个真正有知识、不熟悉Java的程序员知道不要假设所有编程语言的行为方式都是一样的。