//本程序用来分析典型内存分配的问题
public class zhang5
{
public static void main(String[] args)
{
String str1 = new String ("zhang"); // 栈区【局部变量】 堆区【new 出来的东西】
String str2 = new String ("zhang"); // 栈区 堆区
System.out.println(str1.equals(str2)); //true 判断指针变量str1所指向的变量与 指针变量str2所指向的变量是否是同一个变量
System.out.println(str1 == str2);//判断str1的数值与str2的数值是否相等 false
String str3 = "zhang"; //栈区 【数据类型+变量名】 数据区【静态变量+字符串常量】
String str4 = "zhang"; // 栈区 数据区 str3 与 str4 本质上为指针变量
System.out.println(str3.equals(str4));//true 判断指针变量str3所指向的变量与 指针变量str4所指向的变量是否是同一个变量
System.out.println(str3 == str4);//true 因为“zhang”只在代码区分配了一块存储空间
//所以str3与str4这两个指针变量存放的地址都相同,所以str3与str4的数值都相同
}
}
/*运行结果:
D:\java>java zhang5
true
false
true
true
*/
public class zhang5
{
public static void main(String[] args)
{
String str1 = new String ("zhang"); // 栈区【局部变量】 堆区【new 出来的东西】
String str2 = new String ("zhang"); // 栈区 堆区
System.out.println(str1.equals(str2)); //true 判断指针变量str1所指向的变量与 指针变量str2所指向的变量是否是同一个变量
System.out.println(str1 == str2);//判断str1的数值与str2的数值是否相等 false
String str3 = "zhang"; //栈区 【数据类型+变量名】 数据区【静态变量+字符串常量】
String str4 = "zhang"; // 栈区 数据区 str3 与 str4 本质上为指针变量
System.out.println(str3.equals(str4));//true 判断指针变量str3所指向的变量与 指针变量str4所指向的变量是否是同一个变量
System.out.println(str3 == str4);//true 因为“zhang”只在代码区分配了一块存储空间
//所以str3与str4这两个指针变量存放的地址都相同,所以str3与str4的数值都相同
}
}
/*运行结果:
D:\java>java zhang5
true
false
true
true
*/