关于java如何传参的试验

大家应该都知道C语言有两种参数传递方式,一种是形参,一种是实参。

  形参会复制一份使用,随函数出栈销毁,传递的是值

  实参会将引用也就是指针传递过去,被调用函数参数内的变化会影响到调用函数内参数的变化,传递的是引用。

在使用java的时候有时是感觉按照值传递的,有时候感觉是按照引用传递的,那么java到底是怎么传递参数的呢?

来写个简单的事例试验一下吧

  先定义几个方法来进行测试

  update(){}//用来对参数进行操作

首先是java基本数据类型

/*
* 4类8种基本数据类型,剩下的就是引用数据类型
*
* 基本
* -布尔
* -整型
* -浮点
* -字符
* 引用
*/

14 
15     
16     public void update(int value) {
17         value++;
18     }
19     
20     public void update(byte value) {
21         value++;
22     }
23     
24     public void update(short value) {
25         value++;
26     }
27 
28     public void update(long value) {
29         value++;
30     }
31 
32     public void update(double value) {
33         value++;
34     }
35 
36     public void update(float value) {
37         value++;
38     }
39 
40     public void update(char value) {
41         value='a';
42     }
43 
44     public void update(boolean value){
45         value=!value;
46     }

然后是java的类数据类型

 1 public void update(TypeA value) {
 2         value.a=0;
 3 }
 4 
 5 public class TypeA {
 6     int a;
 7     
 8     public void setA(int a) {
 9         this.a = a;
10     }
11     
12     @Override
13     public String toString() {
14         return "TypeA [a=" + a + "]";
15     }
16     
17 }

先测试一下

1 public static void main(String[] args) {
2         int i = 0;
3         new Pointer().update(1);
4         System.out.println(i);
5     }

其他基本数据类型代码都差不多,只是定义的类型不同,就不粘贴了

输出结果:0

根据上面的结果可以胡诌出来一个结论:

java的基本数据类型是按照值传递(不对之处,请指正)

接下里看引用数据类型

1 public static void main(String[] args) {
2         TypeA a = new TypeA();
3         a.a = 123;
4         new Pointer().update(a);
5         System.out.println(a);
6     }

输出结果:TypeA [a=0]

值得改变影响到了主函数,传递的是引用。

java引用数据类型的传递是引用,基本数据类型的传递是值。

如有不对之处,请多指教。

转载于:https://www.cnblogs.com/bin-k/p/6296807.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值