首先,让我们先来打好基础
第一个知识点:
JAVA中的两种数据类型
看上面,也许你会看到头晕吧!
没关系,让我们举个栗子吧!
#基本数据类型:int a = 2
#引用数据类型:String b = new String("2")
你只要记住这两个就好了!
第二个知识点:
栈:存储基本数据类型和对象的引用
问:老湿,存储基本数据类型我懂了,但是那么什么是对象的引用呢?
答:通俗的讲就是存储一个对象的地址
@地址是什么呢?比如北京市朝阳区,我能通过这个地址找到你家
@内容是什么呢?你家里面放了哪些东西,这些东西就是内容。
堆:存储引用数据类型
你可以理解直接存储了引用数据类型的内容,就是你家房子里面的东西
第三个知识点:
字符串池你可以理解为一个池子,里面养着很多字符串,如果这个池子里面已经有了这个字符串,那我就不需要重新再生成一个字符串了,直接拿来就用,所谓拿来主义,就是这么来的。
那么什么时候我可以伸手去拿呢?
当然是有条件的啦 比如说String a = "aaa" 这句代码的含义就是说我去字符串池里面去寻找存不存在“aaa”的字符串,如果存在那么我就直接拿来用了,此时相同字符串的栈里面存储的都是这存储这个字符串堆中的引用。
String a = new String("aaa") 这个不会去字符串池里面去找的哈 它表达的意思是 我想要新的 我不要旧的 我喜新厌旧。
其次,让我们记住这两个知识点本章就结束了
equals:
#如果比较基本数据类型:比较栈中的内容
#如果比较引用数据类型:比较堆中的内容
==:
#如果比较基本数据类型:比较栈中的内容
#如果比较引用数据类型:比较栈中的内容
本章就这么愉快的结束了!!!开不开心 快不快乐
最后,来几个例子吧!
例1:
int a = 1
int b = 1
a == b 结果为true
a.equals(b) 结果为true
例1分析:
a,b均为基本数据类型,均存储在栈中
== 如果比较基本数据类型:比较栈中的内容
equals 如果比较基本数据类型:比较栈中的内容
例2:
String a = new String("aa")
String b = new String("aa")
a == b 结果为false
a.equals(b) 结果为true
例2分析:
a,b均为引用数据类型,均存储在堆中
== 如果比较引用数据类型:比较栈中的内容 此时栈中为对象的引用
equals 如果比较引用数据类型:比较堆中的内容
例3:
String a = "aaa"
String b = new String("aaa")
String c = "aaa"
a == b 结果为false
a == c 结果为true
b == c 结果为false
例3解析便在我的第三个知识点 翻上去看看吧!!!