java字符串传值问题

package Test01;
public class test03 
{
      public static void stringUpd(String str) {
	   str = str.replace("j", "l");
	   System.out.println(str);
	  } 
      
	  public static void stringBufferUpd(StringBuffer bf) {
	   bf.append("c");
	   System.out.println(bf);
	  } 
	  
	  public static void main(String[] args) {
	   
	   /**
	    * 對於基本類型和字符串(特殊)是傳值
	    * 对于字符串,一旦定义,不能更改
	    * (1)定义方式之一:String s1 = "java";
	    * java放在字符常量池中
	    * 因为字符串不能更改,所以传递参数时,是传值(传副本)
	    * 
	    * 
	    * (2)定义方式之二:String s2 = new String("java");
	    * 先检查字符常量池中是否有java字符串,如果有,String s2=new String("java"),
	    * 然后new String()又在堆中分配了内存空间,将常量区中的“java"复制一份给了堆中的String对象。
	    * 
	    * 
	    * 先检查字符常量池中是否有java字符串,如果没有
	    * String s2=new String("java"),此时先是在String常量池中产生了一个“java”对象,
	    * 然后new String()又在堆中分配了内存空间,将常量区中的“java"复制一份给了堆中的String对象。
	    * 因此这段代码产生了两个对象,一个在常量区、一个在堆区。
	    * 
	    * 輸出lava,java
	    */
	   String s1 = "java";
	   stringUpd(s1);
	   System.out.println(s1);
	   System.out.println("-----------------------------");
	   
	   String s2 = new String("java");
	   stringUpd(s2);
	   System.out.println(s2);
	   System.out.println("-----------------------------");
	   
	   /**
	    * 對於對象而言,傳的是引用,而引用指向的是同一個對象
	   * 
	    * 輸出javac,javac
	    */
	   StringBuffer bb = new StringBuffer("java");
	   stringBufferUpd(bb);
	   System.out.println(bb);
	  }
}

/*
	 输出
	lava
	java
	-----------------------------
	lava
	java
	-----------------------------
	javac
	javac
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值