java基础中==,equals(),Objects.equals()详细区别与细节

java中==的含义

==的基本解释

==是二元运算符,其最终的结果返回的是基本数据类型中的boolean型。它是比较基本数据类型和引用数据类型,它的作用是比较两个变量是否相等,但对相等的定义我们应该达成一致。

情况一,基本数据类型之间比较

byte,short,char,int,long,float,double,boolean 他们之间的比较,比较的是他们的值。在比较它们值时,可能存在变量类型不同,在两个基本数据类型变量一致时,比较的是值。在比较两个基本数据类型不同是,会进行自动类型转换,小类型会转换成大类型,此时比较的也是值,当无法进行自动类型转换,便会报语法错误。
从本质来讲,基本数据类型比较的是内存地址,因为有jvm的常量池,所以我们赋值的是常量的内存地址。我们仅仅可以假想它们比较的是"值",但实质上是因为它们指向了同样的内存地址

情况二,引用数据类型之间比较

引用数据类型是指对象、数组、字符串等之间的比较,比较的是它们的内存地址。

字符串比较
	String s1 = "abs";
    String s2 = "abs"; //
    String s3 = new String("abs");
    System.out.println(s1 == s2);//s1与s2 内存地址相同
    System.out.println(s2 == s3);//s2与s3 内存地址不相同

在编译时s1和s2的字符串"abs"会被放入jvm的常量池中。所以s1和s2在赋值的时候都是一样指向常量池中"abs"的内存地址。而s3不同,s3新new String对象,其字符串内容被放在heap中,s3在stack中指向heap地址。因此s2和s3内存地址不同。

情况三、基本数据类型与包装器类型的比较

包装器类型是指基本数据类型对应的类(int、Integer)。在比较时,会进行自动拆箱、装箱的操作。

自动拆箱、装箱
//自动装箱
Integer a = 127; //实际上是 Integer.valueOf(127)
//自动拆箱
int b = a;//实际上是 a.intValue()

装箱就是包装成对象࿱

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值