码迷,mamicode.com
首页 > 编程语言 > 详细

java方法参数接收是值与引用的思考

时间:2020-06-05 01:06:28      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:证明   span   div   out   public   class   基本   col   面向对象   

结论:

1、基本类型作为参数传递时,是传递值的拷贝不是值本身),无论你怎么改变这个拷贝,不会引起原值的改变的。

2、对象(String类型除外)作为参数传递时,是把对象在内存中的地址拷贝一份传给参数,即在该方法中修改该参数,引起原值的变化。

校验如下:

public class HelloMethod {
    public void p1(String s1, int i1, StringBuffer sb) {
        i1 = 2;
        s1 = "bcd";
        sb.append("加上abc");
     //思考?? sb
= new StringBuffer("eee"); } public static void main(String[] args) { String s2 = "aaa"; int i2 = 1; StringBuffer sb = new StringBuffer("abc"); HelloMethod helloMethod = new HelloMethod(); helloMethod.p1(s2, i2, sb); System.out.println(String.format("s2 = %s ,i1 = %s,sb = %s", s2, i2, sb)); } }

打印:

s2 = aaa ,i1 = 1,sb = abc加上abc

分析:

  1.当传递为String或int给方法时,在方法的内部做更改两个值得操作,其结果没有影响原始值,证明结论1。

  2.当传递的是StringBuffer对象时,在方法内部追加的值,其结果反应到了原始值上,证明结论2。

思考:为什么在方法中对该方法的参数重新赋值不会影响原始值。

  1.在面向对象的语言中(Java,javaScript),方法和方法的参数都是对象。

  2.对参数的重新赋值,就等于丢弃了传入方法的引用,而给方法的参数对象重新赋值。

java方法参数接收是值与引用的思考

标签:证明   span   div   out   public   class   基本   col   面向对象   

原文地址:https://www.cnblogs.com/jinliang374003909/p/13047191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!