package zero.desk.stringconstantpool;import org.junit.Test;/** * @author Zero * @since 2019-09-17. * Description: * 當調用intern方法時, * 如果池已經包含此字元串(equals ...
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 當調用intern方法時,
* 如果池已經包含此字元串(equals確定),則返回池中字元串。
* 否則,將此String對象添加到池中並且返回該String對象的引用。
*/
public class StringConstantPool_Intern {
@Test
public void test1() {
String a1 = "AA";//當調用intern方法時,如果池已經包含此字元串(equals確定),則返回池中字元串。否則,將此String對象添加到池中並且返回該String對象的引用。
a1.intern();
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* /Users/zero/Code/Myself/Project/zero-Project/jvm/target/classes/zero/desk/stringconstantpool
* javap -verbose StringConstantPoolAA
* cd ../stringconstantpool
*/
public class StringConstantPoolAA {
@Test
public void test1() {
String a1 = "AA";//在常量池上創建常量AA
String a2 = "AA";//直接返回已經存在的常量AA
System.out.println(a1 == a2); //true
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolAAAA {
@Test
public void test1() {
String a1 = new String("AA");//在堆上創建常量AA
String a11 = a1.intern();
String a2 = "AA";//在常量池上創建常量AA
System.out.println(a1 == a2); //false
System.out.println(a1 == a11); //false
System.out.println(a11 == a2); //true
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolAABB {
@Test
public void test1() {
String a1 = "AA"+"BB";//在常量池上創建常量AABB
String a2 = "AABB";//在常量池上創建常量AABB
System.out.println(a1 == a2); //true
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolNAA {
@Test
public void test1() {
String a1 = "AA";//在常量池上創建常量AA
String a2 = new String("AA");//在堆上創建對象AA
String a3 = a2.intern();//常量池上存在常量AA,直接返回常量池上常量AA,即a1
System.out.println(a1 == a2); //false
System.out.println(a1 == a3); //true
System.out.println(a2 == a3); //false
System.out.println(System.identityHashCode(a1));
System.out.println(System.identityHashCode(a2));
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolNAABB {
@Test
public void test1() {
String a3 = "AA"+new String("BB"); //在堆上創建對象AABB
// String a33 = a3.intern();
String a333 = "AABB";//在常量池上創建常量AABB
System.out.println(a333 == a3); //false
//
System.out.println(System.identityHashCode(a3));
System.out.println(System.identityHashCode(a333));
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolNAABBi {
@Test
public void test1() {
String a3 = "AA"+new String("BB"); //在常量池上創建常量AABB
String a33 = a3.intern();
String a333 = "AABB";//在常量池上創建常量AABB
System.out.println(a333 == a3); //true
//
System.out.println(System.identityHashCode(a3));
System.out.println(System.identityHashCode(a33));
System.out.println(System.identityHashCode(a333));
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolNAANBB {
@Test
public void test1() {
String a3 = new String("AA")+new String("BB"); //在堆上創建對象AABB
// String a33 = a3.intern();
String a333 = "AABB";//在常量池上創建常量AABB
System.out.println(a333 == a3); //false
//
System.out.println(System.identityHashCode(a3));
System.out.println(System.identityHashCode(a333));
}
}
package zero.desk.stringconstantpool;
import org.junit.Test;
/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考題
*/
public class StringConstantPoolNAANBBi {
@Test
public void test1() {
String a3 = new String("AA")+new String("BB"); //在常量池上創建常量AABB
String a33 = a3.intern();
String a333 = "AABB";//在常量池上創建常量AABB
System.out.println(a333 == a3); //true
//
System.out.println(System.identityHashCode(a3));
System.out.println(System.identityHashCode(a33));
System.out.println(System.identityHashCode(a333));
}
}