【java】基础1-字符串、堆、栈、静态与引用类型

Posted on 2022-03-10 16:53  罗芭Remoo  阅读(52)  评论(0)    收藏  举报
/*结论:
1,一般变量(int,float,boolean..)使用==比较,引用类型(String,int[],对象)使用equals比较。
2,一般的变量存放在栈中,new出来的对象都存放在堆中,字符串等常量存放在静态变量区中。
3,String str1 = "文本1";
这段代码中,str1存储在栈中,在栈中存放的是一串地址,地址指向字符串所在的静态变量区之中。
4,String str2 = new String("文本2");
这段代码中,str2也存储在栈中,但是str2的地址指向的是堆,堆中所存放的地址再指向静态变量区中的字符串。
换句话说,使用new构造方法的str2想要访问到"文本2"这个字符串,需要先经过堆,再去到最终的静态变量区。

*/
public class ZiFuChuan {
public static void show(boolean b){
System.out.println(b);
}
public static void main(String[] aa){
//实验1
show("remoo"=="remoo");//返回true

//实验2
String str1 = "remoo";
String str2 = "remoo";
show(str1==str2);//返回true

//实验3
String str3 = new String("remoo");
String str4 = "remoo";
show(str3==str4);//返回false

//equals
show(str3.equals(str4));//返回true
//compareTo(String)
//equalsIgnoreCase(String)

}
}