Java API_String原理分析

/**
 * 
 * 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";
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值