jvm内存分配大致分为:
栈:存储变量
堆:存储对象(只要看到new就是开辟了内存空间,允许重复)
常量池:顾名思义就是常量(例如字符串,数字。。。)
特点:常量池中的数据是不存在重复的。
eg:
String str1 = "Star";
String str2 = new String("Star");
String str3 = "star";
他们互不相等:
str1直接指向了常量池中的内存地址。
str2首先是指向了堆内存地址,然后堆内存地址指向了常量池中的内存地址。
str3直接指向了常量池中的内存地址,但是因为常量池中不允许重复,java严格区分大小写,所以。。。