Java到底是值传递还是引用传递?

值传递与引用传递:

       Java到底是引用传递还是值传递,之前我看过一些介绍,但是好记性不如烂笔头,时间长了最近看到居然又忘了,所以现在记下来,方便以后查看。

       既然说到值传递和引用传递,那么到底什么才是值传递,引用传递又是什么呢?

       值传递,简单来说就是在操作前对值进行了拷贝,然后两部分操作的就是完全无关的两部分内容了。

public class TempTest {  
    private void test1(int a){  
        a = 5;  
        System.out.println("test1方法中的a="+a);  
}  
    public static void main(String[] args) {  
        TempTest t = new TempTest();  
        int a = 3;  
        t.test1(a);//传递后,test1方法对变量值的改变不影响这里的a  
        System.out.println(”main方法中的a=”+a);  
 }  
}  

运行结果:

test1方法中的a=5  

main方法中的a=3  


       引用传递,同样很简单,就是说传递了对对象的引用,也就是地址。进而操作的就是同一片内容,因而执行改动操作就会真正修改原内容了。

public class TempTest {  
    void test1(A a){  
       a.age = 20;   
       System.out.println("test1方法中的age="+a.age);   
 }   
    public static void main(String[] args) {  
       TempTest t = new TempTest();   
       A a = new A();   
       a.age = 10;   
       t.test1(a);   
       System.out.println(”main方法中的age=”+a.age);   
     }  
}  

class A{   
       public int age = 0;  
}  


 

运行结果:

test1方法中的age=20 
 
main方法中的age=20  

       至于在Java中到底是值传递还是引用传递,我的想法是这样的:

       Java只有值传递,没有引用传递:普通变量是直接传递的变量的副本,而若是类做参数,则会拷贝栈中的引用地址,指向堆中的同一片地址,操作同一片内容。但是论其本质,还是值传递,毕竟复制了栈中的内存地址嘛


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值