equal和==,List中传递值(不传引用地址)方法

来源:互联网 发布:mysql最近执行语句 编辑:程序博客网 时间:2024/06/05 15:14
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() {@Overridepublic 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"运行速度快,因为"=="只是比较引用. */}}

0 0
原创粉丝点击