[code]
String str1 = new String("abc"); //数据存储在堆中
String str2 = new String("abc"); //数据存储在堆中
System.out.println(str1 == str2);//比较引用地址是否相等 false
System.out.println(str1.equals(str2));//比较值是否相等 true
String str3 = "abc"; //数据存储在栈中
String str4 = "abc"; //数据存储在栈中
System.out.println(str3 == str4);//比较引用地址是否相等 true
System.out.println(str3.equals(str4)); //比较值是否相等 true
System.out.println(str3 == str2); //比较地址是否相等 false
System.out.println(str3.equals(str1)); //比较值是否相等 true
int a = 3;
//(变量类型)自动变量 引用 字面值
// (栈) (栈)
String b = "abc";
//(变量类型)类变量 引用 字面值
// (栈) (栈)
String c = new String("abc");
//(变量类型)类变量 引用 类对象
// (栈) (堆)
1. 寄存器(Register):在处理器中,由编译器分配。
2.栈(Stack):存储原始(primitive)数据类型和对象的引用
3.堆(Heap):存储对象
4.静态存储区(Static Storage):存储整个运行期都可以访问的数据成员和方法
5.固定存储(Constant):存储常量
6.非内存的存储:
[/code]
String str1 = new String("abc"); //数据存储在堆中
String str2 = new String("abc"); //数据存储在堆中
System.out.println(str1 == str2);//比较引用地址是否相等 false
System.out.println(str1.equals(str2));//比较值是否相等 true
String str3 = "abc"; //数据存储在栈中
String str4 = "abc"; //数据存储在栈中
System.out.println(str3 == str4);//比较引用地址是否相等 true
System.out.println(str3.equals(str4)); //比较值是否相等 true
System.out.println(str3 == str2); //比较地址是否相等 false
System.out.println(str3.equals(str1)); //比较值是否相等 true
int a = 3;
//(变量类型)自动变量 引用 字面值
// (栈) (栈)
String b = "abc";
//(变量类型)类变量 引用 字面值
// (栈) (栈)
String c = new String("abc");
//(变量类型)类变量 引用 类对象
// (栈) (堆)
1. 寄存器(Register):在处理器中,由编译器分配。
2.栈(Stack):存储原始(primitive)数据类型和对象的引用
3.堆(Heap):存储对象
4.静态存储区(Static Storage):存储整个运行期都可以访问的数据成员和方法
5.固定存储(Constant):存储常量
6.非内存的存储:
[/code]