JAVA中的 == 和 equals

最近开始复习JAVA,在看JAVA编程思想的时候遇到了关于==的问题,于是我将其扩展了一下并且将其和equals作对比并且进行分析。
先上代码

		String str1 = "abc";
		String str2 = "abc";
		String str3 = new String("abc");
		String str4 = new String("abc");
		System.out.println(str1 == "abc");// true
		System.out.println(str1 == str2);// true
		System.out.println(str1 == str3);// false
		System.out.println(str1.equals(str3));// true
		System.out.println(str3 == str4);// false
		System.out.println(str3.equals(str4));// true

注释是运行结果
接下来一一分析,首先java中的 == 是比对双方的内存地址是否相等的,而str1其实就是指向字符串"abc"的地址的,并不是比对本身,所以str1 == abc。而str2也同样是指向"abc"的,所以str1 == str2。
str3指向的是new 出来的对象,而str4指向的有是一个新的构造对象所以str3!=str4。
而equals则是判断双方的字符串内容是否相同,所以str1 == tr3,str3 == str4。
(顺便一提,最初设计的时候Object的equals就是比对内存地址)
最后再画一个图,用以解释上面的分析:在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值