public class test_2 {
public static void main(String str[]){
String str1="abc";
String str2="abc";
String str3=new String("abc");
//test1 测试str1 与 str2 之间的关系
System.out.println("str1==str2?->"+(str1==str2));
System.out.println("str1 equals str2?->"+str1.equals(str2));
//test2 测试str1 与 str2 的关系
System.out.println("str1==str3?->"+(str1==str2));
System.out.println("str1 equal str3?->"+str1.equals(str3));
//test3 修改str2的值,并重新测试str1与str2的关系
str2="abc";
System.out.println("str1==str2?->"+(str1==str2));
System.out.println("str1 equals str2?->"+str1.equals(str2));
}
}
测试结果:
*********************************************************
str1==str2?->true
str1 equals str2?->true
str1==str3?->true
str1 equal str3?->true
str1==str2?->true
str1 equals str2?->true
**********************************************************
实验结果说明通过申明形式创建的变量,如果值相同,java会直接指向同一内存,如果在后续操作中改变了某个变量,则为该变量重新分配内存,并进行改变
如果是用new 创建的变量,则内存地址是不相同的!