簡體   English   中英

可以在 Java 中的類中初始化變量嗎? 靜態變量呢? 如果是,那么靜態塊有什么用?

[英]Can a Variable be initialized inside a Class in Java? What about Static Variable? If yes, then what's the use for Static Block?

在 C++(C-11 之前)中,我們需要通過構造函數或一些方法來初始化類外部的變量。 Java 中發生了什么?

可以在 Java 中的類中初始化變量嗎?

是的,像這樣:

public class MyClass {
    private int myVariable = 10;
}

靜態變量呢? 如果是,那么靜態塊有什么用?

是的,靜態變量也可以在類中初始化:

public class MyClass {
    private static int myVariable = 10;
}

當你想初始化一個靜態變量時使用靜態塊,但一行是不夠的。 例如:

public class MyClass {
    private static HashMap<Integer, Integer> myMap;

    static {
        myMap = new HashMap<>();
        myMap.put(10, 20);
        myMap.put(20, 40);
    }
}

C++ 與 Java:

共同點——兩者都是OOP語言的區別——c++不是純粹的面向對象語言,而Java是純粹的oop語言。

是藍圖(如通用地圖),它定義了該類對象的一些屬性/屬性(成員變量)和行為(成員函數)。

只是創建對象之前的一種想象。

對象是在現實世界中物理存在的實時實體,或者簡單地說它是類的實現。

Java中的類:

class class_name
{
  member variables;
  member functions;
};

前任。

class A
{
int a;
void funct()
{
//body
}
};                     //defination is closed with semicolon

但,

java中的類:

回答你的問題:

class class_name
{
  member variables;       //still we define the attributes in class that may be static or non-static
  member functions;
};

靜態變量的意義:靜態變量為該類的所有對象分配了ram中的公共內存,並且由於公共(相同)內存,任何對象對靜態成員執行的操作都會反映到所有其他對象的靜態成員中。

靜態方法的意義(函數在java中稱為方法):類的靜態方法是在不創建該類的對象的情況下調用的方法。 在 java 中,main() 方法被聲明為靜態方法,因為在程序執行后調用 main() 方法而不創建類的對象。

操作系統內核調用 main() 方法。

可以在 Java 中的類中初始化變量嗎?

是的。

class TestClass {
    int abc = 0;
    static int def = 1;
}

靜態變量呢?

是的你可以。 與上述示例相同。
但這不會在每次創建類的對象時初始化。

TestClass ob1 = new TestClass();
ob1.def = 2; // Always use the class name to access static variables. This is just an example.

TestClass ob2 = new TestClass();
System.out.println(ob2.def); // Output : 2

PS:總是使用類名來訪問靜態變量。 這只是一個例子。

靜態塊有什么用?

如果靜態變量的初始化很復雜,那么您可以創建一個靜態塊並在那里初始化這些變量。 是一個很好的參考。

class TestClass {
    int abc = 0;
    static int def = 1;

    static {
         int x = 100;
         int y = 20;
         def = x - y + 10;
    }

}

如果你要初始化變量,你可以創建類似的東西

public class Animal
{
    int age = 21;
    static int roll = 23; 
}

但是請記住實例變量和靜態變量之間的區別, int age - 這個變量是為你創建的每個對象創建的 static int roll - 這個變量只創建一次,並且對於每個其他對象都是一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM