package com.kxw.string;
/**
* Created by kangxiongwei on 2015/6/19.
*/
public class StringInterview {
public static void main(String[] args){
String s1 = new String("abc"); //两个对象,一个在string pools中 一个在堆中
String s2 = "abc"; //不创建对象 指向string pools中的"abc"对象
String s3 = new String("abc"); //一个对象 堆中
System.out.println(s1 == s2); //false
System.out.println(s1 == s3); //false
System.out.println(s2 == s3); //false
System.out.println("-----------------------------------");
//intern() 如果string pools中包含内容 则返回string pools中的对象
System.out.println(s1 == s1.intern()); //false
System.out.println(s2 == s1.intern()); //true
System.out.println(s1.intern() == s3.intern()); //true
System.out.println("-----------------------------------");
String hello = "hello";
String hel = "hel";
String lo = "lo";
System.out.println(hello == "hel" + "lo"); //true +号两边都是字符串,会先将字符串合起来,再到string pools中找
System.out.println(hello == "hel" + lo); //false +号两边有一个是引用,则会在堆中创建对象
System.out.println(hello == hel + lo); //false
}
}