写在开头:这篇写完之后才发现好像没讲到jdk改版对内存的影响。。
这是一个很有趣的现象,如果没人告诉我的话遇到问题想必我会一头雾水。
首先来看一段代码:
String s1 = new String("A");
System.out.println(s1); //A
String s2 = s1.intern();
String s3 = "A";
将String作为一个引用类型,这对于先学Python的我来说是十分古怪的做法,因为Python中是没有字符只有字符串的,将字符串分出基本类型行列,诡异而无理:如此常用的类型竟不是基本类型?!
学过Java之后对类型、内存管理的概念更加清晰了不少,而这个例子让我十分清晰地认识了他们。
String s1 = new String("A"); //新建一个字符串对象A,并在常量池放入字符串A
System.out.println(s1); //A
String s2 = s1.intern(); //将s1对应的值从常量池中取出并赋值给s2
String s3 = "A";