Java中参数传递问题

Java中参数传递可以分为值传递和引用传递,话不多说直接撸代码

1.传原始类型(int,String等)数据是值传递

 1 package test_1;
 2 public class Test {
 3     public static void main(String[] args) {
 4         String str = new String("abc");
 5         change1(str);
 6         System.out.println(str);
 7     }
 8     
 9     private static void change1(String str1) {
10         str1 += "123";
11         System.out.println(str1);
12     }
13 }

结果:abc123
         abc

分析:最后输出的还是abc,说明在函数里面改变的值不是它本身

2.传对象是引用传递(包括数组)

 1 package test_1;
 2 class Time {
 3     public int hour;
 4     public int minute;
 5     public int second;
 6 }
 7 
 8 public class ObjectParamTransfer {
 9     Time time;
10 
11     public static void main(String[] args) {
12         ObjectParamTransfer opt = new ObjectParamTransfer();
13         opt.time = new Time();
14         opt.time.hour = 11;
15         opt.time.minute = 22;
16         opt.time.second = 33;
17 
18         opt.method(opt.time);
19         System.out.println("执行方法后的time的属性值");
20         System.out.println("hour=" + opt.time.hour);
21         System.out.println("minute=" + opt.time.minute);
22         System.out.println("second=" + opt.time.second);
23 
24     }
25 
26     private void method(Time t) {
27      
28         t.hour = 44;
29         t.minute = 55;
30         t.second = 60;
31     }
32 }

结果:执行方法后的time的属性值
hour=44
minute=55
second=60

分析:方法里面传进去的是对象的地址,那么在方法体中进行的操作就可以改变这个对象

总结:当要传递的参数是原始类型数据的时候是值传递,当要传递的参数是对象的时候是引用传递

第一篇博客,不足之处欢迎在评论区中指正,谢谢!               

                                                                                                                 

心之所向,素履以往
原文地址:https://www.cnblogs.com/yinbiao/p/8052422.html