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
分析:方法里面传进去的是对象的地址,那么在方法体中进行的操作就可以改变这个对象
总结:当要传递的参数是原始类型数据的时候是值传递,当要传递的参数是对象的时候是引用传递
第一篇博客,不足之处欢迎在评论区中指正,谢谢!