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

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"运行速度快,因为"=="只是比较引用.
		 */
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值