java中“==“与“equals“的区别

java中"=="与"equals"的区别

java类型分为两种:基本类型 和 引用类型
基本类型:byte ,short,int,long,double,float,boolean,char标志
譬如: int a = 10;int b = 10 (基本数据类型)
引用类型:四种情况 强引用,弱引用,软引用,虚引用
譬如: String t = new String(a);(引用数据类型)

“==” 两种情况:
基本类型的比较:
① 比较的是地址值是否相同, 比较的是值 例子:t1 == t2 true
引用类型的比较
② 比较的是引用所指向的地址值是否相同 例子:t1 == t8 false t1指向的地址值是常量池。 t8指向的地址值是 堆中 开辟的一块内存,(内存中包含对象)

在这里插入图片描述

“equals” 比较的是两个对象的内容(源码分析总结)
①先比较两个对象的地址值是否相同。相同直接返回 true。 不相同继续比较。
②再判断两个对象是否 是string类的实例。 不是 返回false。是就继续比较。
③再判断两个对象的字符串长度,如果长度不相同就返回 false。 长度相同就继续比较。
④分别把两个对象中的字符(char)拿出来依次比较,有一个字符不相同,返回false。 所有的字符比较都相同 ,则返回true。

package mylove.home.demo;

/**
 * 测试 == 与equals 的区别
 * @author RioNice#XWX
 * “==” 两种情况:  
 * 基本类型的比较① 比较的是地址值是否相同, 比较的是值   例子:t1 == t2 true
 * 引用类型的比较② 比较的是引用所指向的地址值是否相同 例子:t1 == t8 false  t1指向的地址值是常量池。 t8指向的地址值是 堆中 开辟的一块内存,(内存中包含对象)
 * java类型分为两种:基本类型 和 引用类型
 * 基本类型:byte ,short,int,long,double,float,boolean,char标志    
 *  譬如: int a = 10;int b = 10   (基本数据类型)
 * 引用类型:四种情况 强引用,弱引用,软引用,虚引用
 *  譬如:  String t = new String(a);(引用数据类型)
 * 
 * “equals” 比较的是两个对象的内容(源码分析总结)
 * ①,先比较两个对象的地址值是否相同。相同直接返回 true。 不相同继续比较
 * ②再判断两个对象是否 是string类的实例。 不是 返回false。是就继续
 * ③再判断两个对象的字符串长度,如果长度不相同就返回 false。 长度相同就继续
 * ④分别把两个对象中的字符(char)拿出来依次比较,有一个字符不相同,返回false。 所有的字符比较都相同 返回true
 */

public class DemoEquals {
	public static void main(String[] args) {
		String t1 = "zhangsan";
		String t2 = "zhangsan";
		
		String t3 = "zhang"+"san";
		String t4 = "zhang"+new String("san");
		
		String t5 = "zhang";
		String t6 = "san";
		String t7 = t5+t6;
		
		String t8 = new String("zhangsan");
									
		System.out.println(t1 == t2);//true
		System.out.println(t1.equals(t2)); //true
		
		System.out.println("-------------------------");
		System.out.println(t1 == t3);//true
		System.out.println(t1.equals(t3));//true
		
		System.out.println(t1 == t4);//false
		System.out.println(t1.equals(t4));        //true
		System.out.println("++++++++++++++++++++++++++++++++++++");
		System.out.println(t1 == t7);//false
		System.out.println(t1.equals(t7));         //true
		
		System.out.println(t1 == t8);//false
		System.out.println(t1.equals(t8));       	//true
		
		System.out.println("***********************t4比 t8");
		System.out.println(t4==t8);//false
		System.out.println(t4.equals(t8)); //true
	}

}

Console控制台输结果

true
true
-------------------------
true
true
false
true
++++++++++++++++++++++++++++++++++++
false
true
false
true
***********************t4比 t8
false
true

下面是借鉴大佬的图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值