• 20200927 Java 方法参数传值问题


    Java 中类型分为基础类型和引用类型。之前一直认为,方法传参时,如果传的入参是基础类型,方法内改变无效;如果传的是引用类型,方法内改变有效;

    但是,如果改变的是引用类型的值,改变无效,参考 test1 方法。

    所以,更准确地说法应该是,如果改变的是引用类型指向对象的值,改变有效。

    public class TestAAA {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("main");
            System.out.println(list);
    
            test1(list);
            System.out.println(list);
    
            test2(list);
            System.out.println(list);
        }
    
        /**
         * 传的是引用的值,类似于基础类型
         * 引用的值在方法内改变无效
         *
         * @param list
         */
        private static void test1(List<String> list) {
            list = null;
        }
    
        /**
         * 改变的是引用指向的 List 对象,改变有效
         * 引用没有改变
         *
         * @param list
         */
        private static void test2(List<String> list) {
            list.add("test2");
        }
    }
    
  • 相关阅读:
    javascript之instanceof原理
    x86之描述符表寄存器
    Mac之DTerm
    C的一些特性
    Mac i386 Operands and Addressing Modes
    shell之条件测试
    linux之dup&dup2
    javascript之this
    x86之段描述符
    进制转换
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/13740469.html
Copyright © 2020-2023  润新知