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

Java 值传递和引用传递

时间:2016-07-21 12:21:43      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

先上代码:

public class JavaTest {
    private int paraInt = 10;

    public int getParaInt() {
        return paraInt;
    }

    public void setParaInt(int paraInt) {
        this.paraInt = paraInt;
    }
    
    public void tryChangeBasicData(int para){
        para = 100;
        System.out.println("inner tryChangeBasicData method:para = " + para);
    }
    
    public void tryChangeObject(JavaTest jTest){
        jTest.setParaInt(100);
        System.out.println("inner tryChangeObject method:para = " + jTest.getParaInt());
    }
    
    public static void main(String[] args) {
        JavaTest jTest = new JavaTest();
        
        System.out.println("基本数据类型作为参数传递");
        System.out.println("before method: " + jTest.getParaInt());
        jTest.tryChangeBasicData(jTest.getParaInt());
        System.out.println("after method: " + jTest.getParaInt());
        
        System.out.println("");
        
        System.out.println("对象引用作为参数传递");
        System.out.println("before method: " + jTest.getParaInt());
        jTest.tryChangeObject(jTest);
        System.out.println("after method: " + jTest.getParaInt());
    }
}

输出:

基本数据类型作为参数传递
before method: 10
inner tryChangeBasicData method:para = 100
after method: 10
***
对象引用作为参数传递
before method: 10
inner tryChangeObject method:para = 100
after method: 100

 

1. 基本数据类型作为参数传递

是按值传递,实际上是对传入的基本数据类型参数A 做了一个值拷贝B,然后所有操作是针对这个拷贝B 的,因此不会影响到原参数A。

比如上面代码中,tryChangeBasicData() 方法前后 paraInt 值并没有改变。

 

2. 对象引用作为参数传递

是引用传递,实际上是对传入引用X 做了一个拷贝引用Y,传入引用X 和拷贝引用Y 指向同一个地址。

上面代码中,tryChangeObject() 方法对拷贝引用Y 指向的地址空间内的变量进行修改,所以传入引用X 取得的变量值是修改后的值。

 

3. 说明

在《Java 核心技术》中提到的 “Java里面参数传递都是按值传递” 意思是:按值传递传递的是值得拷贝,按引用传递实际传递的是引用的地址值,统称为按值传递。

 

Java 值传递和引用传递

标签:

原文地址:http://www.cnblogs.com/xmsx/p/5691210.html

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