值传递和引用传递

1.值传递

 1 package com.sky.test;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         int i = 5;
 6         valueTransmit(i);
 7         System.out.println("方法结束后的i : " + i);
 8         
 9     }
10     
11     public static void valueTransmit(int i){
12         i++;
13         System.out.println("方法中的i : " + i);
14     }
15 }

结果为:

方法中的i : 6
方法结束后的i : 5

可以清楚的看到,方法中的i的值改变了,进行++操作,但是当方法结束后,i的值又变回了5,也就是方法调用之前的值,这就是值传递的涵义。

2.引用传递

 1 package com.sky.test;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         
 6         User user = new User("10086", "张三");
 7         quoteTransmit(user);
 8         System.out.println("方法结束后的user对象的值:"+user);
 9     }
10     
11     public static void quoteTransmit(User user){
12         user.setUserId("10000");
13         user.setName("李四");
14         System.out.println("方法中的user的值:"+user);
15     }
16 }
17 
18 class User {
19     private String userId;
20     private String name;
21     
22     public User(String userId, String name) {
23         this.userId = userId;
24         this.name = name;
25     }
26     
27     public String getUserId() {
28         return userId;
29     }
30     public void setUserId(String userId) {
31         this.userId = userId;
32     }
33     public String getName() {
34         return name;
35     }
36     public void setName(String name) {
37         this.name = name;
38     }
39     @Override
40     public String toString() {
41         return "User [userId=" + userId + ", name=" + name + "]";
42     }
43     
44 }

结果为:

方法中的user的值:User [userId=10000, name=李四]
方法结束后的user对象的值:User [userId=10000, name=李四]

主方法中创建了一个user对象,赋值,方法中将这个对象作为参数传递,方法中并且修改了user的属性值,并且修改后打印,当方法结束后在主方法中继续打印user对象,发现两次输出的值完全一样,方法中修改了,这个对象的值意味着方法结束后也是被修改了,这就是引用传递。

原文地址:https://www.cnblogs.com/yujiwei/p/6886179.html