/**
*
* String 表示一个字符串,内部使用字符数组,不能实现继承(最终类),不可变
*
*/
public class StringDemo {
public static void main(String[] args){
//String 的两种赋值方式
//1.直接赋值,推荐使用这一种
String s1="粪粪";//在常量池
//2.使用new关键字创建对象,new表示申请内存空间,生成两个对象
String s2=new String("粪粪");//在堆里面
String s3="粪粪";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println(s1==s3);
//代码示例:4种情况分析:直接赋值字符串连接时,考虑编译期和运行期
//如果在编译期可以被确定,那么久使用已有的对象,否则会创建新的对象
System.out.println("---------第一种情况-----------");
String a="a";
String a1=a+1;//在堆中创建
String a2="a1";//在常量池创建
System.out.println(a1==a2);//false
System.out.println("---------第二种情况-----------");
final String b="b";//这里b是常量,所以可以确定
String b1=b+1;
String b2="b1";
System.out.println(b1==b2);//true
System.out.println("---------第三种情况-----------");
String c=getC();
String c1=c+1;
String c2="c1";
System.out.println(c1==c2);//false
//方法在运行期执行
System.out.println("---------第四种情况-----------");
final String d=getD();
String d1=d+1;
String d2="di";
System.out.println(d1==d2);//false
}
private static String getC(){
return "c";
}
private static String getD(){
return "D";
}
}
Java API_String原理分析
最新推荐文章于 2023-04-01 21:22:04 发布