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

    public class QQ {
    
        public static void main(String[] args) throws ParseException {
            int val = 5;
            changeVal(5);
            System.out.println(val);
    
            // Integer is a final class
            changeVal(Integer.valueOf(val));
            System.out.println(val);
    
            String valStr = "good";
            // String is a final class
            changeVal(valStr);
            System.out.println(valStr);
    
            QQ.Color color = new QQ.Color();
            color.setId(5);
            changeVal(color);
            System.out.println(color.getId());
    
        }
    
        public static void changeVal(int val) {
            val = 1;
        }
    
        public static void changeVal(Integer val) {
            val = Integer.valueOf(1);
        }
    
        public static void changeVal(String val) {
            val = "bad";
        }
    
        public static void changeVal(QQ.Color color) {
            color.setId(1);
        }
    
        static class Color {
            private int id;
    
            public int getId() {
                return id;
            }
    
            public void setId(int id) {
                this.id = id;
            }
        }
    }

    # 输出结果为:

    5
    5
    good
    1

    其实java中方法参数传递方式都是按值传递。
    如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
    如果参数是引用类型,传递的是该参数所引用的对象在堆中地址值的拷贝

    ref > https://www.zhihu.com/question/31203609

  • 相关阅读:
    B树
    23查找树和红黑树
    红黑树---满足红黑性质的二叉查找树
    AVL树---平衡的二叉查找树
    二叉查找树
    Ping程序
    ICMP:Internet控制报文协议
    Unix&Linux大学教程目录
    Linux文件系统
    git简介
  • 原文地址:https://www.cnblogs.com/lwmp/p/10650746.html
Copyright © 2011-2022 走看看