zybzhen 2011-05-17 20:49
浏览 231
已采纳

StringBuilder一疑问

public static void main(String[] args) {
StringBuilder b1 = new StringBuilder("a");
StringBuilder b2 = new StringBuilder("b");
op(b1,b2);
System.out.println(b1+","+b2); // 结果为 ab,b 为什么??
}

public static void op(StringBuilder b1, StringBuilder b2){
    b1.append(b2);
    b2 = b1;
}
  • 写回答

4条回答 默认 最新

  • suziwen 2011-05-17 21:20
    关注

    入门基础 Java参数传递方式

    1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
    2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象( 70-305 ),方法调用结束后,原来对它的引用并没用指向新的对象。
    代码如下:
    public class Tester {
    public static void main(String[] args) {
    int primitive = 2;
    changePrimitive(primitive);
    //primitive的值依然是2
    MyClass myClass = new MyClass();
    changeObject(myClass);
    //myClass仍然指向的是执行changeObject之前的那个对象
    //但是myClass.i等于3了
    }

    public static void changePrimitive(int primitive) { 
        primitive = 3; 
    } 
    
    public static void changeObject(MyClass myClass) { 
        myClass.i = 3; 
        myClass = new MyClass(); 
    } 
    

    }

    class MyClass {
    int i;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建