这是一些代码
package deleteit;
import java.lang.*;
import java.io.*;
import java.util.*;
public class Deleteit {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> arr1=new ArrayList<Integer>();
arr1.add(100000);
arr1.add(1);
arr1.add(100000);
arr1.remove(1);
if(arr1.get(0)==arr1.get(1))
{
System.out.println("GUd");
}
else
System.out.println("damnit");
}
}
现在应该打印Gud,因为100000等于100000,因为1从ArrayList中删除,所以它留下100000和100000。 那为什么要打印该死的?
这是一个BUG吗?
答案 0 :(得分:2)
您必须使用4.294967296E9
5.25hr
而不是equals
。
以下是一些示例代码:
==
数字对象(import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class DeleteIt {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> arr1 = new ArrayList<Integer>();
arr1.add(100000);
arr1.add(1);
arr1.add(100000);
arr1.remove(1);
if (arr1.get(0).equals(arr1.get(1))) {
System.out.println("GUd");
} else
System.out.println("damnit");
}
}
,Integer
,Double
)应始终与Short
进行比较,而不是.equals
。顺便说一句,这同样适用于==
。
如果您使用String
,则表示您正在比较参考,而不是实际值。
顺便说一句,关于取消装箱并使用==
标志。如果您对比较的第一个值应用==
,则可以使用intValue()
符号。所以这段代码也可以工作:
==
后一个代码似乎强制取消装箱,然后package stackoverflow;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class DeleteIt {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> arr1 = new ArrayList<Integer>();
arr1.add(100000);
arr1.add(1);
arr1.add(100000);
arr1.remove(1);
if (arr1.get(0).intValue() == arr1.get(1)) {
System.out.println("GUd");
} else
System.out.println("damnit");
}
}
不是比较参考,而是实际值。