java中参数传递详解:call by value(按值传递)和 call by reference(按引用传递)


参数传递的一些知识,不全面部分望指点。



call by value: 按值传递
call by reference: 按引用传递

特点:
call by value。 不改变值,即操作的是一个值的拷贝,所以原值不变。
call by reference 改变值,但是不改变实际参数的参考地址。可以理解为将另一个引用也指向同一个对象。

代码:
public  static void  st(String str){
   // System.out.println(str.hashCode());
    str = str.replace("1","2");
   // System.out.println(str.hashCode());
}
public static void st1(StringBuffer stringBuffer){
    stringBuffer.append("S");
    stringBuffer = new StringBuffer("567");
    stringBuffer.append("890");
}
public static void main(String...args){
    String s = "123";
    st(s);
    System.out.println(s);
    System.out.println(s.hashCode(););
    StringBuffer str1 = new StringBuffer("sss");
    System.out.println(str1);
    st1(str1);
    System.out.println(str1);
}


输出结果:
48690
49651
123
48690
sss
sssS
String类的replace,返回的是一个新的String对象,然后将str这个引用指向了新的对象。在st1方法中,StringBuffer的append();方法操作的是原对象的值,而且返回的是原对象。
stringBuffer = new StringBuffer( "567" );而这句则将引用stringBuffer指向了新的对象。

发布了26 篇原创文章 · 获赞 0 · 访问量 9936

猜你喜欢

转载自blog.csdn.net/weixin_38246518/article/details/78714390