zoukankan      html  css  js  c++  java
  • Java类与对象课后作业

    一.动手动脑
    (1)以下代码为何无法通过编译?哪儿出错了?

    ·结论:因为如果类已经提供了自定义的构造方法,那么系统不再提供默认构造方法。“Foo obj1 = new Foo();”这里错了!
    (2)请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。
    ·结论(静态初始化块的执行顺序):静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。


    二.验证
    1.(进行实验)如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?
    ·谁比较靠后就是谁初始化起作用。
    ·类字段的初始化顺序:执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。执行类的构造函数。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
    2. 请输入并运行以下代码,得到什么结果?

    ·运行结果为: false

    结论:
    ·当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
    ·当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
    ·引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
    ·两个对象的“内容”,其实是指它们在某一时刻的所有字段的值,“内容相等”,其实是就“对应字段值”一致。在Java中要比对两个对象的字段值,可以 “重写(override)”基类的equals()方法。
    三.一个有趣的问题
    1.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
    ·源代码
    public class Test{
     public static void main(String[] args) {
      System.out.println("(静态变量)total_employees =  "+Employee.total_employees);
      //实例
      Employee e = new Employee();
      System.out.print("(实例变量)name =  "+e.name);
     }
    }
    class Employee
    {
     String name = "wangafn";
     long salary;
     static int total_employees;
     static void clear()
     {
      total_employees=0;
     }
    }

  • 相关阅读:
    12套有用的免费 PSD 格式 Android UI 素材
    使用 Canvas 和 JavaScript 创建逼真的下雨效果
    在网页设计中使用漂亮字体的16个优秀例子
    Koala – 开源的前端预处理器语言图形编译工具
    BackgroundCheck – 根据图片亮度智能切换元素样式
    经典网页设计:18个示例展示图片在网页中的使用
    TogetherJS – 酷!在网站中添加在线实时协作功能
    30个令人惊叹的灵感来自自然风光的网站设计《下篇》
    太有才了!创新的街头涂鸦手绘欣赏【中篇】
    15款美丽的设备模板,帮助展示你的 APP
  • 原文地址:https://www.cnblogs.com/wf1647790534/p/5981715.html
Copyright © 2011-2022 走看看