A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jbl3344 中级黑马   /  2015-8-26 22:43  /  756 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,String类定义一个对象之后,这个对象的值是不可以改变的,而Stringbuffer类定义一个对象之后,这个对象的值是可以改变的。这个要怎么理解。下面是我写的一段代码
  1. public class StringDemo {
  2. //        public static void main(String[] args) {
  3. //        String s1="fiusiua";
  4. //        String s2="iurguer";
  5. //        s1=s1+s2;
  6. //        s2=s1+s2;
  7. //        System.out.println(s1);
  8. //        System.out.println(s2);
  9. //        }//String 在同一方法中定义String对象的值是可变的,但是如果调用下一个方法后
  10.         //在下一方法中改变String对象的值,在这个方法中String对象的值是无法改变的。
  11.         public static void main(String[] args){
  12.                 String s1 = "abc";
  13.                 String s2 = "xyz";
  14.                 show(s1,s2);
  15.                 System.out.println(s1+"---------"+s2);
  16.                 }
  17.         static void show(String s1,String s2){
  18.          s1 = s2+s1+"Q";
  19.      s2 = "W"+s1;
  20.      System.out.println(s1);
  21.      System.out.println(s2);
复制代码
代码中我在show方法中打印了s1和s2,发现这里的s1和s2的值是改变了。这又该怎么解释。

5 个回复

倒序浏览
一直没怎么弄懂
回复 使用道具 举报
String对象什么都打印不出来。
String s=new String();
System.out.println(s);
回复 使用道具 举报
函数括号里面的是形参啊,相当于这样
public static void main(String[] args){
                String s1 = "abc";
                String s2 = "xyz";
                s1=show(s1,s2);
                System.out.println(s1+"---------"+s2);
                }
        
        static String show(String s3,String s4){
     s3 = s4+s3+"Q";
     s4 = "W"+s3;
     System.out.println(s3);
     System.out.println(s4);
         return s3;
        }
回复 使用道具 举报
一直没怎么弄懂
回复 使用道具 举报
1.java中参数传递形式是值传递
2.局部变量在函数结束时会被清除
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马