可能重复:
包装类和==运算符
当我学习自动装箱时,在网站上看到这段代码.
Integer i1 = 1;
Integer i2 = 1;
// true
System.out.println(i1 == i2);
Integer i3 = -200;
Integer i4 = -200;
// false
System.out.println(i3 == i4);
Run Code Online (Sandbox Code Playgroud)
我能理解为什么第二次比较会给出错误(比较参考文献).但为什么它会给第一个真实的呢?
可能重复:
包装类和==运算符
嗨,当我比较整数与==我有一些问题所以你能解释我为什么第二次测试也成功吗?
@Test
public void integerTest() {
Integer prvni = 127;
Integer druhy = 127;
Integer treti = 128;
Integer ctvrty = 128;
assertTrue(prvni == druhy);
assertTrue(treti != ctvrty);
}
Run Code Online (Sandbox Code Playgroud) 这是我的Java程序的一部分,我已经拿出并简化了测试.任务是比较ArrayList中的两个整数并说明它们是否相等.
以下代码适用于数字<128但任何数字> 128且代码不起作用.
任何帮助都会非常棒,谢谢.
import java.util.*;
public class test
{
public static void main (String[] args)
{
Integer seat1Store = 128;
Integer seat2Store = 128;
Integer seat3Store = 0;
Integer seat4Store = 0;
Integer seat5Store = 0;
ArrayList<Integer> proceedArray = new ArrayList<Integer>();
if (seat1Store !=0)
{
proceedArray.add(seat1Store);
}
if (seat2Store !=0)
{
proceedArray.add(seat2Store);
}
if (seat3Store !=0)
{
proceedArray.add(seat3Store);
}
if (seat4Store !=0)
{
proceedArray.add(seat4Store);
}
if (seat5Store !=0)
{
proceedArray.add(seat5Store);
}
System.out.println("ArrayList = " + proceedArray);
boolean proceed = …Run Code Online (Sandbox Code Playgroud) 可能重复:
关于自动装箱和对象相等/身份的Java问题
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = 210;
Integer i4 = 210;
if(i1 ==i2){
System.out.println("True");
}else{
System.out.println("False");
}
if(i3==i4){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(10) ==Integer.valueOf(10)){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(210) ==Integer.valueOf(210)){
System.out.println("True");
}else{
System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)
答案是
真正
假
真正
假
为什么它给2和4条件假?
可能重复:
整数包装器对象仅在值127内共享相同的实例?
public class test
{
public static void main(String args[])
{
Integer a1=127;
Integer a2=127;
System.out.println(a1==a2); //output: true
Integer b1=128;
Integer b2=128;
System.out.println(b1==b2); //output: false
Long c1=127L;
Long c2=127L;
System.out.println(c1==c2); // output: true
Long d1=128L;
Long d2=128L;
System.out.println(d1==d2); //output: false
}
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)true false true false
您也可以使用negetive值.当您使用值观察输出时,它们的行为会有所不同.这种不同结果的原因是什么?
对于任何数字,范围应为-127到+127,==则为true或为false.
(全部)伙计们抱歉这是一个拼写错误,我把它作为原始错误,但它是抽象的.抱歉这个错误.现在纠正了......
可能重复:
整数包装器对象仅在值127内共享相同的实例?
我对Java中的内存管理有疑问.
当我尝试以下代码时:
Integer a = 1;
Integer b = 1;
System.out.println(a==b); // this gives "true"
Run Code Online (Sandbox Code Playgroud)
然而,
Integer a = 256;
Integer b = 256;
System.out.println(a==b); //this gives "false"
Run Code Online (Sandbox Code Playgroud)
为什么?
非常感谢.