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

来源:互联网 发布:数据嗅探 编辑:程序博客网 时间:2024/05/17 03:07


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



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 =newStringBuffer("567");而这句则将引用stringBuffer指向了新的对象。

阅读全文
0 0
原创粉丝点击