类与对象

一。类与对象

    结果为:类与对象

二。类与对象

  结果:类与对象

   

    1)当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等

    2)当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。

    3)引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。两个对象各有各的地址,所以结果为false。

三。类与对象

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

 四。类与对象

  结果:类与对象

   java字段初始化的规律:执行类成员定义时指定的默认值或类的初始化块,前面的先执行。也可通过执行类的构造函数为其赋值。

五。示例结果截图:类与对象

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

  如果定义初始化块时使用了static修饰符,则变成了静态初始化块。静态初始化块时类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。

  因此静态初始化块总是比普通初始化块先执行。

   与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯  到java.lang.Object类,先执行java.lang.Object类中的静态初始化块,然后执行其父类的静态初始化块,最后才执行该类的静态初始化块。经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问类method、类Field,或者用这个类来创建实例。

六。如何在静态方法中访问类的实例成员?

  

  public class T1
  { int x = 2;//类的实例变量,初始化值为2
  static int y = 6;//类的静态变量,初始化值为6
  public static void method()//静态方法
  {
  System.out.println("实例变量x = " + new T1().x);//在静态方法中访问类的实例变量需首先进行类的实例化
  System.out.println("静态变量y = " + y);//在静态方法中可直接访问类的静态变量
  }

  public static void main(String[] args)
  {
  T1.method();
  T1 ex = new T1();
  System.out.println("x = " + ex.x);
  }
  }

  结果截图:类与对象

七。Integer类的装箱和拆箱是怎样实现的:在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。

 八。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”  

  package demo;
  public class T2 {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  Number a1 = new Number();

  Number a2 = new Number();
  Number a3 = new Number();
  Number.showCount();

  }

  }

  class Number{

  private static int number = 0;

  {

  number++;

  }

  public static void showCount(){

  System.out.println("创建了"+number+"个对象");

  }
  }

   实验结果截图: 类与对象