1. 程式人生 > >10-21動手動腦

10-21動手動腦

zi定義類

BoxAndUnboxJava

HelloJava

InitializeBlockClassJava

即只進行成員變數的定義,不進行主動的初始化操作,由編譯器為成員變數賦一個預設值。

對於基本型別,有各自不同的預設值如int、char、short等為0,boolean為false,對於物件,預設值為null。預設初始化主要是為了保證初始化過程一定會得到執行,只發生在成員變數身上,對於區域性變數,不存在這種機制。

MyPackageClassJava

ObjectEquals

StrangeIntegerBehavior Java

 

對於兩個非

new生成的Integer物件,進行比較時,如果兩個變數的值在區間-128到127之間,則比較結果為true,如果兩個變數的值不在此區間,則比較結果為false

new生成的Integer變數和new Integer()生成的變數比較時,結果為false。(因為非new生成的Integer變數指向的是java常量池中的物件,而new Integer()生成的變數指向堆中新建的物件,兩者在記憶體中的地址不同)

TestStaticInitializeBlockJava

 

一個類中

類內容(靜態變數、靜態初始化塊) => 例項內容(變數、初始化塊、構造器)

兩個繼承類中

父類的(靜態變數、靜態初始化塊)=> 子類的(靜態變數、靜態初始化塊)=> 父類的(變數、初始化塊、構造器)=> 子類的(變數、初始化塊、構造器)

Test2

靜態方法中訪問類實力成員

package main;

public class Circle {

  private double radius = 1.0;

  

  double getAre() {

    return

 radius * radius * Math.PI;

  }

  

  public static void main(String[] args) {

    Circle myCircle = new Circle();

    System.out.println("radius is " + myCircle.radius); //radius不是靜態的,靜態方法可以通過類物件呼叫非靜態成員變數、非靜態方法

  }

}

package main;
public class Circle {
  private double radius = 1.0;
  
  double getAre() {
    return radius * radius * Math.PI;
  }
  
  public static void main(String[] args) {
    Circle myCircle = new Circle();
    System.out.println("radius is " + myCircle.radius); //radius不是靜態的,靜態方法可以通過類物件呼叫非靜態成員變數、非靜態方法
  }
}