zoukankan      html  css  js  c++  java
  • java 关于值引用、地址引用的问题

    8种基本引用类型

      四种整数类型(byte、short、int、long)

      两种浮点数类型(float、double)

      一种字符类型(char)

      一种布尔类型(boolean)

      以及如String, final类型的数据类型时。

    在方法调用时,属于值传递,在方法中改变了值之后,原始值不会改变。

    除了以上之外的数据类型,如自定义的对象,Map,List之类的引用,都是地址引用。

    如下demo:

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author liyuechao *
     * @since:2017年8月10日 下午5:12:07
     */
    public class Test {
        public static void main(String[] args) {
            List<A> list = new ArrayList<>();
            A a = new A();
            a.setName("a");
            A b = new A();
            b.setName("b");
            list.add(a);
            list.add(b);
            Map<String, List<A>> map = new HashMap();
            map.put("ha", list);
         // null的时候不会改变,因为没有具体的指向地址 map.put(
    "he", null); List<A> lista = map.get("ha"); List<A> listc = map.get("ha"); List<A> listd = map.get("he"); for (A a2 : lista) { modi(a2); } setValue(listd); List<A> listb = map.get("ha"); for (A a2 : listb) { System.out.println(a2.getName()); } for (A a2 : listc) { System.out.println(a2.getName()); } for (A a2 : listd) { System.out.println(a2.getName()); } } public static void modi(A a) { a.setName("x"); } public static void setValue(List<A> list) { if (list == null) list = new ArrayList<>(); A a = new A(); a.setName("y"); list.add(a); } } /** * @author liyuechao * * @since:2017年8月10日 下午5:12:31 */ public class A { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

     运行结果:

  • 相关阅读:
    python-套接字编程之udp
    python-套接字编程之tcp
    用脚本获取windows的mac地址
    电脑控制安卓手机(手机投屏)
    人体内脏分布图
    电子发票打印出来太大了,怎么办?
    局域网内搭建各部门文件共享
    樊登读书会:《善战者说:孙子兵法与取胜法则十二讲》
    健康饮食——百万教程
    减肥十律
  • 原文地址:https://www.cnblogs.com/KongkOngL/p/7340592.html
Copyright © 2011-2022 走看看