眼前的等不是等,你说的空是什么空 --- (equal 和 == && null 和““)

一、equal 和 ==:

1、==:
比较对象的地址基本类型的值

2、Equals :
Java 语言里的 equals方法是交给开发者去覆写的,让开发者自己去定义满足什么条件的两个Object是equal的。所以我们不能单纯的说equals到底比较的是什么。你想知道一个类的equals方法是什么意思就是要去看定义。

如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是"== "的判断。

源码中依然使用==来进行比较意义不大 所有java中一些类对这个方法进行重写.比如String类的equal方法覆写后是,直观的讲,就是比较字符串内容是不是都相同.

所以如果没有重写equals()方法比较的是对象的地址,因为对Object来说对象没有什么属性可以比较,只能比较最底层的地址。

总结一:
==比较的对象的地址 ,被String重写的equals比较的是内容。

3、null
NULL:代表声明了一个空对象,空引用(没有指向任何空间的引用)

4、""
存在引用 ,但指向一块空的内存空间,可进行实际的操作。

String s=”a” 和 String s=new String(“a”) 是有本质上的区别的 :

  • String str=”aaa”; //于栈上分配内存 ;

    在字符串池里写入一个字符’a’,然后用s指向它;

  • String str=new String(“aaa”); //于堆上分配内存

    在堆上创建一个内容为”a”的字符串对象

补充知识:
堆: 用来存放实例化的对象还有数组 ;
栈 : 主要是用来存放一些基本类型的数据还有引用 ;

5、赋值
关于null != a 与 a != null 的区别
与equals类似!,需要对null的位置进行编码风格的统一。
https://blog.csdn.net/u010321349/article/details/81562185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值