java参数传递方式 string_java String 参数传递问题 如下程序

展开全部

这个问题要涉及到值传递跟引用传递了。

那么问题来了,到底什么是值传递,什么是引用传递呢?

要想知道62616964757a686964616fe4b893e5b19e31333335343438什么是值传递跟引用传递,需要先知道什么是基本数据类型跟引用数据类型。

基本数据类类型存的是数值本身。而引用类型变量在内存放的是数据的引用,并不是数据的本身,引用类型变量是以间接方式去获取数据。

引用类型变量都属于对象类型,如:数组、类、字符串等都属于引用类型变量。所以,引用类型变量里面存放的是数据的地址。

说白了基本数据类型变量就像是直接放在柜子里的东西,而引用数据类型变量就是这个柜子对应编码的钥匙。钥匙号和柜子对应。

了解了基本数据类型和引用数据类型之后,再来了解值传递跟引用传递。

值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。

引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

值传递时,等于传递了一个副本,传过去之后就跟原变量无关了,在副本上做的任何操作都不会对原变量造成任何影响,所以原变量的值不会变。

引用传递时,传过去的是一个地址,指向存放变量值的地址,等于说是原变量拷贝了一个地址传过去,拷贝的地址跟原变量的地址都是指向的同一个地址,这个地址内存放的是变量的值,如果改了这个值,那么原变量的值就会改变。

我举两个例子:例子1:

//在函数中传递基本数据类型,

public   class  Test {

public   static   void  change( int  i,  int  j) {

int  temp = i;

i = j;

j = temp;

}

public   static   void  main(String[] args) {

int  a =  3 ;

int  b =  4 ;

change(a, b);

System.out.println( "a="  + a);

System.out.println( "b="  + b);

}

}

结果为:

a= 3

b= 4

原因就是 参数中传递的是 基本类型 a 和 b 的拷贝,在函数中交换的也是那份拷贝的值 而不是数据本身;

例子2:

//传的是引用数据类型

public   class  Test {

public   static   void  change( int [] counts) {

counts[ 0 ] =  6 ;

System.out.println(counts[ 0 ]);

}

public   static   void  main(String[] args) {

int [] count = {  1 ,  2 ,  3 ,  4 ,  5  };

change(count);

}

}

在方法中 传递引用数据类型 int 数组,实际上传递的是其引用count的拷贝,他们都指向数组对象,在方法中可以改变数组对象的内容。即:对复制的引用所调用的方法更改的是同一个对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值