• 个人对内存中对象中包含对象的理解


    我们想要调用手机的充电功能,但是实际上我们调用的是电池充电的功能,但是出现了空指针异常,因为手机类中的电池(这个属性)是成员变量,在测试类new一个手机时初始化默认为null(空的什么都不是,不能调用方法)--------->分析怎么让这个cell内存空间中存的不是null-------->在调用充电功能的方法中构造一个cell(cell = new Cell() ;),那样他就成为了一个对象,可以调用电池类中的充电方法  


    总结:一个类中的属性(cell)是另一个类(Cell)的对象,想要调用对象的方法,就必须构造一个出来一个对象(new Cell( );),然后把这个对象赋给另一个类的属性 cell = new Cell();  他们是包含关系


    形象化理解:

    public class PhoneTest {
        public static void main(String[] args) {
            /*
             * Iphone phone = new Iphone();
             * 
             * phone.phoneCharge();
             */
            int[][] m = new int[3][];
            System.out.println(m);
            System.out.println(m[0]);
    
        }
    }
    运行结果:
    [[I@7852e922
    null

    int[ ] [ ]  m  =  new int[ 3] [ ]; / /此时编译不报错,可以输出二维数组的地址值和二维数组中行数的值(行数中存的是列数的地址,但是此时没有给列数分配空间,所以默认为null)

    public class PhoneTest {
        public static void main(String[] args) {
            /*
             * Iphone phone = new Iphone();
             * 
             * phone.phoneCharge();
             */
            int[][] m = new int[3][];
            System.out.println(m[0][0]);
        }
    }
    运行结果:
    Exception in thread "main" java.lang.NullPointerException
        at com.woniuxy.demo02.PhoneTest.main(PhoneTest.java:9)

    此时输出二维数组中的第一个一维数组的第一个元素,报了空指针异常,因为我们根本就没有个一维数组分配空间

    当我们给二维数组中的一维数组分配空间时int[ ][ ] m = new int[3][1];

    public class PhoneTest {
        public static void main(String[] args) {
            /*
             * Iphone phone = new Iphone();
             * 
             * phone.phoneCharge();
             */
            int[][] m = new int[3][1];
            System.out.println(m);
            System.out.println(m[0]);
            System.out.println(m[0][0]);
        }
    }
    运行结果:
    [[I@7852e922
    [I@4e25154f
    0

    正常输出结果,一维数组中没有存元素,默认为0

    总结:二维数组的意思就是二维数组中存了几个一维数组,每个一维数组有几个元素。二维数组就是手机,几个一维数组就是之前讲的手机中的属性(电池,颜色什么的),一维数组就是电池这个对象。如果我们没有把这个对象实例化,它就是一个属性,属性是不可能调用方法的。

    转载于:https://www.cnblogs.com/19322li/p/10610012.html

  • 相关阅读:
    BZOJ 3252: 攻略(思路题)
    BZOJ 2821: 作诗(Poetize)(分块)
    BZOJ 2597: [Wc2007]剪刀石头布(费用流)
    BZOJ 1565: [NOI2009]植物大战僵尸(网络流+缩点)
    BZOJ 1927: [Sdoi2010]星际竞速(费用流)
    BZOJ 5120: [2017国家集训队测试]无限之环(费用流)
    洛谷 5205 【模板】多项式开根
    LOJ 2737 「JOISC 2016 Day 3」电报 ——思路+基环树DP
    LOJ 2736 「JOISC 2016 Day 3」回转寿司 ——堆+分块思路
    bzoj 2216 [Poi2011]Lightning Conductor——单调队列+二分处理决策单调性
  • 原文地址:https://www.cnblogs.com/twodog/p/12135006.html
Copyright © 2020-2023  润新知