• Java类与对象


    一、请输入并运行以下代码,得到什么结果?

    程序截图和结果截图:

     

     

     

    二、以下代码为何无法通过编译?哪儿出错了?

    程序截图和结果截图:

     

    结论:如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

     

    三、请依据代码的输出结果,自行总结Java字段初始化的规律。

    程序截图:

     

    结果截图:

     

     

    规律:Java进行初始化赋值时如果有很多次对同一个变量进行了初始化,那么Java会将最后一次的初始化结果赋给该变量。

     

    四、当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    程序截图:

     

    结果截图:

     

    总结:

    创建子类对象会导致父类初始化块的执行顺序是:

        先初始化父类(最高层次的)的静态初始化块,父类的无参构造器,在进行子类的静态初始化块,子类的无参构造器;

    然后是父类的普通初始化块,子类的普通初始化块;父类的带参构造器,子类的带参构造器。

    静态初始化块的执行顺序是:

        先初始化父类(最高层次的)的静态初始化块,父类的无参构造器,在进行子类的静态初始化块,子类的无参构造器;

    然后是父类的普通初始化块,子类的普通初始化块;父类的带参构造器,子类的带参构造器。

    静态初始化块只执行一次。 创建子类型的对象时,也会导致父类型的静态初始化块的执行。

     

    五:在静态方法中访问类的实例成员

    程序截图:

     

     

     

    六:神奇代码Integer诡异特性

    程序截图:

     

    结果截图:

     

     

    原因:其调用了Integer中的valueOf方法如下:

     

    由上述代码可知当数值在-128~127之间时,便返回指向IntegerCache.cache中已经存在的对象的引用;否则将创建一个新的Integer对象。因为i1i2的数值为100,所以会直接从cache中取已经存在的对象,所以i1i2指向的是同一个对象,而i3i4则是分别指向不同的对象。

     

  • 相关阅读:
    Spring学习总结[1]-入门
    MyBatis学习总结[5]-动态 SQL
    MyBatis学习总结[4]-ResultMap子元素
    MyBatis学习总结[3]-多表查询
    MyBatis学习总结[2]-接口式调用
    MyBatis学习总结[1]-入门
    Bootstrap table两种分页示例
    spring ioc原理(看完后大家可以自己写一个spring)
    Junit4单元测试
    数字转换为字母有多少种方式
  • 原文地址:https://www.cnblogs.com/mengqimoli/p/4887523.html
Copyright © 2020-2023  润新知