package test615;
import java.util.ArrayList;
import java.util.List;
public class TestList {
static List<Integer> listInteger = new ArrayList<Integer>();
private static ArrayList<Integer> listIntegerQ;
protected static void printTime() {
new Thread(new Runnable() {
@Override
public void run() {
int i = 0;
while (i < 1000) {
try {
Thread.sleep(5000);// 5秒钟后会有所变化
listInteger.add(i);
i++;
} catch (final InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
public static void main(final String[] args) {
printTime();
// 这样做引用地址和地址里的值都相同
// List<Integer> listIntegerQ = new ArrayList<Integer>();
// listIntegerQ = listInteger;// equals ==(永远输出这个结果)
// 这样做应用地址不同,但是值相同
listIntegerQ = new ArrayList<Integer>(listInteger);// (前5秒equals !==)(5秒后!equals !==)
while (true) {
System.out.println(listIntegerQ.size());
System.out.println(listIntegerQ.equals(listInteger) ? "equals" : "!equals");
System.out.println(listIntegerQ == listInteger ? "==" : "!==");
}
/*
* 总之:
* “==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
* equal用于比较两个对象的值是否相同【不是比地址】
* 【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,
* 必须重写equals方法。
* "=="比"equal"运行速度快,因为"=="只是比较引用.
*/
}
}
equal和==,List中传递值(不传引用地址)方法
最新推荐文章于 2022-05-01 18:26:28 发布