实验02博客园总结

本周的java实验课讲了一些关于类与对象的知识,我在此进行总结并完成PPT上的动手动脑任务:

#原始数据类型变量与引用类型变量的区别:

  int value = 100 原始数据类型的变量 定义时会马上分配空间
  MyClass obj = new MyClass() 引用类型变量 声明一个对象类型变量时,实际上并没有创建一个对象 此变量=null
  java要求定义变量时,必须显式初始化变量;对象变量如果不引用一个真实对象,必须声明为null。

#上网查询了关于final关键字的内容,讲解如下:

  final关键字
  1.修饰类:当用final修饰一个类时,这个类称为终态类,不能被继承
  2.修饰方法:想明确禁止方法在子类被覆盖
  3.修饰变量:修饰基本数据类型,初始化后就不能更改;修饰引用类型,初始化后不能再指向另一个对象

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

public class Test{
      public static void main(String[] args){
           Foo obj1 = new Foo(); 
      }           
}

class Foo{
      int value;
      public Foo(int initValue){
           value = initValue;
      }
}

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

#类字段的初始化顺序:

public class InitializeBlockClass {
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){     //构造方法
        this.field=value;
    }
    public InitializeBlockClass(){                //构造方法
        
    }
    public static void main(String[] args){
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);//100
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);//300
    }
}

  结论:初始化块、构造方法、变量初始值,哪一个是初始化的最终结果,

    我把这三块先后换了一下位置发现,最后进行的那一步才是最终结果。

#==施加在不同位置:

  == 施加在原始数据类型变量时,是比较变量所保存数据是否相等
  == 施加在引用类型变量时,时比较两个变量是否引用同一对象,
  引用代表地址,所以实际上是比较两个变量中保存的地址是否相同。

#java中定义一个类时,如果不显式指明父类是哪个,则默认为Object
Object是java最顶层基类,其中定义了equals()方法

#动手动脑 静态初始化块的执行顺序:

  创建一个类对象时,会首先依次执行从父类到子类其中的静态初始化块,

  然后再从父类开始,按 普通初始化块->无参构造器->有参构造器 的顺序

  执行。

#静态方法不能直接访问同一类中的非静态成员,而必须先创建对象,再通过对象访问。

  

原文地址:https://www.cnblogs.com/jmdd/p/9827028.html