下面分享几篇超级经典的文章给大家:
通过这篇文章你将彻底明白java中String类型在字符串拼接时的各种问题,知道字符串什么时候放在常量池中,什么时候放在堆中。
另外,对这篇文章稍做补充:
String s="hello";
String t="hello";
char c[]={'h','e','l','l','o'};
System.out.println(s.equals(t)); //true,比较字符串内容而不是地址
System.out.println(t.equals(c)); //false,c是数组,不能和字符串比较
System.out.println(s==t); //true,s和t都引用字符串池里的hello,是同一份hello字符串,所以地址相同
System.out.println(t.equals(new String("hello")));//true,比较字符串内容而不是地址
final String a1="a";
final String b1="b";
String a1b1=a1+b1;
System.out.println(a1b1=="ab"); //true,只有在a1和b1同时为常量时,a1+b1的值才会被放到字符串池中,否则,a1+b1的值不在字符串池中,用==判断就返回false
2. java陷阱之自动装箱
通过这篇文章我们就能分清java的基本数据类型和包装类之间的相互转化问题。