java常用类_String

package test;
import org.junit.Test;
public class String_ {
	/**
	 * String:字符串,使用一对""来表示
	 * String声明为final,表明是不可变的
	 * String实现了Serializable接口:表示字符串是支持序列化的
	 *       实现Comparable接口:表示可以比较大小
	 * String内部定义了final char[] value用于存储字符串数据
	 * String代表不可变的字符序列
	 * 
	 */
	@Test
	public void test() {
		String string = "abc";//字面量的定义方式,此实abc是在方法区的字符串常量池(区别于new方式)字符串常量池是不会存储相同的字符串常量
		String string2 = "abc";
		System.out.println(string==string2);//返回的是true,因为是字符串常量池同一个字符串
		string = "hello";//这是并不会改变abc因为value是final的,这时候会重新在字符串常量新建一个hell字符串常量
		System.out.println(string2);//此时输出的还是abc,
		System.out.println("*****************************************************");
		String string3 = "abc";//此时string3和string2引用的同一个字符串常量
		string3 = string3 + "de";//此时的string3又在字符串常量池新建了一个字符串常量,
		System.out.println(string3==string2);//此时返回false
		String string4 = "abc";
		System.out.println(string4);
		System.out.println(string4.replace("a","m"));//调用rplace方法时,此时又是在字符串常量池新建一个
	}
	
	//
	@Test
	public void test2() {
		/**
		 * String的实例化方式
		 * 1.通过字面量定义
		 * 
		 * 2.通过new关键字
		 * 
		 * String string = new String("abc")创建了两个对象
		 * 一个是堆空间中new的结构,另一个是字符串常量池的数据“abc"
		 */
		String s1 = "abc";
		String s2 = "abc";
		
		//此时s3,s4的地址保存在堆空间中
		String s3 = new String("abc");
		String s4 = new String("abc");
		
		//s3,s4地址相同吗?
		System.out.println(s3==s4);
		//s1,s4地址相同吗 
		System.out.println(s1==s4);
		
	}
	
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值