1.public class Test {
2. public static void changeStr(String str0){
3. str0="welcome";
4. }
5. public static void main(String[] args) {
6. String str="1234";
7. changeStr(str);
8. System.out.println(str);
9. }
10.}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xyter】截止到2008-07-26 15:04:23的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:20                       每贴平均分数:10                       
    回帖的总数量:13                       得分贴总数量:5                        回帖的得分率:38%                      
    结贴的总数量:1                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:50.00 %               结分的百分比:0.00  %                  
    无满意结贴率:0.00  %               无满意结分率:---------------------
    楼主加油
      

  2.   

      
     String str="1234"时在栈中定义一个字符串变量指向于字符串对像“1234”,
    而执行changeStr(str)时, 把字符串“1234“的引用传给了str0,但
    由于字符串是不可变长度的,因此,str0="welcome";时,str0指向了另一个
    字符串“welcome”,而原始的仍然没变。
    StringBuffer是可变长字符串。public class T { 
       public static void changeStr(StringBuffer str0){ 
           str0=str0.append("welcome"); 
       } 
       public static void main(String[] args) { 
           StringBuffer str=new StringBuffer("1234"); 
           changeStr(str); 
           System.out.println(str); 
       } 
      

  3.   

    1.public class Test {     //创建Test类
    2. public static void changeStr(String str0){   创建changeStr方法,并接收一个参数到str0中
    3. str0="welcome";                              给str0赋值
    4. }                                           
    5. public static void main(String[] args) {     主方法Main  
    6. String str="1234";                            定义String 对象str,并且给他赋值
    7. changeStr(str);                               调用changeStr方法
    8. System.out.println(str);                      打印出str的内容
    9. } 
    10.} 
      

  4.   

    又是String的不变性
    貌似讨论过好多次了
      

  5.   

    恩!
    涉及了String的不变性
      

  6.   

    传基本类型的时候,是值传递.
    传递String类型的时候,就是传基本类型.(因为是String 类中的value属性).
      

  7.   

    public class T { 
      public static void changeStr(String str0){ 
         // str0=("welcome");
      str0=str0.concat("welcome");
          System.out.println(str0);//打印出1234welcome
      } 
      public static void main(String[] args) { 
          String str=new String("1234"); 
          changeStr(str); 
        System.out.println(str); //打印出1234
      } 
    } //讨论String 的不变性public class T2 { 
      public static void changeStr(StringBuffer str0){ 
          str0=str0.append("welcome");
                  System.out.println(str0) //打印出1234welcome
      } 
      public static void main(String[] args) { 
          StringBuffer str=new StringBuffer("1234"); 
          changeStr(str); 
          System.out.println(str); //打印出1234welcome
      } 
    } //讨论StringBuffer可变性
      

  8.   

    这里只是利用了方法的副作用,而不是利用了str0=.....
      

  9.   

    1.public class Test {
    2. public static void changeStr(String str0){
    3. str0="welcome";
    4. }
    5. public static void main(String[] args) {
    6. String str="1234";
    7. changeStr(str);
    8. System.out.println(str);
    9. }
    10.} 
    -----------------------------
    changeStr(str)的执行过程:
    str0=str;  //将str0的引用地址赋值为str一样,都指向常量"1234"
    str0="welcome";  //将str0的引用地址赋值为常量"welcome"的地址这个过程中并没有改变str的引用地址,再者,str所指向的对象本身内容没有改变,所以会输出"1234"