zoukankan      html  css  js  c++  java
  • 值传递和引用传递

    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对象,发现两次输出的值完全一样,方法中修改了,这个对象的值意味着方法结束后也是被修改了,这就是引用传递。

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/yujiwei/p/6886179.html
Copyright © 2011-2022 走看看