java.lang.String的用法小结:

本文深入探讨了Java中String对象的特点,特别是其不可变性带来的内存分配及引用传递的行为。通过实例代码展示了String对象在方法调用前后内存地址的变化,解释了为何String对象被认为是不可变的,并且讨论了这如何影响其在实际应用中的使用。

String 的特点:

长度一旦定义了,就不可以改变,即使改变也是重新new的

举例:

public class Test {
	public static void stringReplace(String text) {
		text = text.replace('j', 'i');
		System.out.println("新的对象:" + text);
	}

	public static String stringReplace2(String text) {

		return new String(text);
	}

	

	public static void main(String args[]) {
		
		String s1 = "a";
		String s2 = "a";
		System.out.println("s1== s2: " +(s1 == s2));
		System.out.println("s1.equals(s2) " + s1.equals(s2));

		String news1 = new String("a");
		String news2 = new String("a");
		System.out.println("news1.equals(news2): " + news1.equals(news2));
		System.out.println("news1 == news2: " + (news1 == news2));
		/**
只要重新new过,即使值相同,地址也不同
*/
		
		 String textString = new String("java");
		 stringReplace(textString);
		 System.out.println(textString);
		 /**
		 * 结果:java
		 * 说明:传过去的值被改变成了iava,意思是在内存区域(堆)中重新new
		 * 了一块,值是“iava”,在stringReplace()中,是textString的引用赋给了text,指向了
		 “iava”,但是一旦方法执行完毕
		 * 局部变量text也就消失,在打印textString时,还是指向原来的“java”区域。
		 */
		 
		 

 

结果:s1== s2: true
    s1.equals(s2) :true
news1.equals(news2): true
news1 == news2: false
新的对象:iava
java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值