Java 類實例

2018-06-20 17:16 更新

Java面向對象設計 - Java類實例


以下是創(chuàng)建類的實例的一般語法:

new <Class Constructor>;

new 運算符后面是對構造函數的調用。

new 運算符通過分配堆上的內存來創(chuàng)建類的實例。以下語句創(chuàng)建Dog類的實例:

new Dog();

Dog()是對Dog類的構造函數的調用。

當我們不向類添加構造函數時,Java編譯器為我們添加一個。

Java編譯器添加的構造函數稱為默認構造函數。默認構造函數不接受參數。

類的構造函數的名稱與類名稱相同。

new運算符為類的每個實例字段分配內存。類靜態(tài)變量在創(chuàng)建類的實例時不會分配內存。

要訪問類的實例的實例變量,我們必須有它的引用。

類的名稱在Java中定義了一個新的引用類型。特定引用類型的變量可以存儲相同引用類型的實例的引用。

聲明一個引用變量,它將存儲Dog類的實例的引用。

Dog anInstance;

Dog是類名,它也是一個引用類型,并且 anInstance 是該類型的變量。

anInstance是Dog類型的引用變量。anInstance變量可用于存儲Dog類的實例的引用。

new運算符為類的新實例分配內存,并返回對該實例的引用。

我們需要將由新運算符返回的引用存儲在引用變量中。

anInstance = new Dog();

null引用類型

我們可以為任何引用類型的變量分配一個空值??罩狄馕吨米兞渴侵笡]有對象。

Dog  obj  = null;  // obj  is not  referring to any  object
obj  = new Dog();  // Now, obj  is referring to a  valid Dog  object

您可以使用一個空文字與比較運算符來檢查是否相等和不等。

if  (obj == null)  {
    //obj is null
}

if  (obj !=  null)  {
    //obj is not null
}

Java不會混合引用類型和原始類型。我們不能給一個原始類型變量賦null。



訪問類的字段的點表示法

點符號用于引用實例變量。

點符號語法的一般形式是

<Reference Variable Name>.<Instance Variable Name>

obj.name引用obj引用變量引用的實例的名稱實例變量。

要為名稱實例變量分配值,請使用

obj.name = "Rectangle";

以下語句將name實例變量的值分配給String變量aName:

String aName = obj.name;

要引用類變量,請使用類的名稱。

ClassName.ClassVariableName

例如,我們可以使用Dog.count來引用Dog類的計數類變量。

向計數類變量分配新值

Dog.count  = 1;

要將count類變量的值讀取到變量中

long count = Dog.count;

以下代碼顯示如何使用類字段

class Dog {
  static int count = 0;
  String name;
  String gender;
}

public class Main {
  public static void main(String[] args) {
    Dog obj = new Dog();

    // Increase count by one
    Dog.count++;

    obj.name = "Java";
    obj.gender = "Male";

    obj.name = "XML";

    String changedName = obj.name;
  }
}

字段的默認初始化

類的所有字段(靜態(tài)以及非靜態(tài))都將初始化為默認值。

字段的默認值取決于其數據類型。

數字字段(字節(jié),短,char,int,long,float和double)初始化為零。布爾字段初始化為false。引用類型字段初始化為null。

下面的代碼演示了字段的默認初始化。

public class Main {
  byte b;
  short s;
  int i;
  long l;
  float f;
  double d;
  boolean bool;
  String str;

  public static void main(String[] args) {
    Main obj = new Main();


    System.out.println("byte is initialized to " + obj.l);
    System.out.println("short is initialized to " + obj.s);
    System.out.println("int is initialized to " + obj.i);
    System.out.println("long is initialized to " + obj.l);
    System.out.println("float is initialized to " + obj.f);
    System.out.println("double is initialized to " + obj.d);
    System.out.println("boolean is initialized to " + obj.bool);
    System.out.println("String is initialized to " + obj.str);
  }
}

上面的代碼生成以下結果。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號