Ⅰ java中 數據初始化的三種方法是什麼
public
class
staticinitialization
{
public
static
void
main(string[]
args)
{
system.out.println("creating
new
cupboard()
in
main");
new
cupboard();
system.out.println("creating
new
cupboard()
in
main");
new
cupboard();
t2.f2(1);
t3.f3(1);
}
static
table
t2
=
new
table();//1:標記位1
static
cupboard
t3
=
new
cupboard();//2
標記位2
}
//
/:~
/**
1:要執行main方法,必須先載入staticinitialization,載入過程中,發現有靜態變數t2,首先執行t2
=
new
table()
new
table()需要實例化table,必須先載入table類
載入table類的過程中,發現table類也有靜態變數,首先執行static
bowl
b1
=
new
bowl(1);過程和上面一樣,要去創建bow1
創建之前載入bow1類,載入完畢,調用bow1的構造方法,於是列印出「bowl(1)」
b1實例化(創建)完成
然後執行static
bowl
b2
=
new
bowl(2);
再次調用bow1構造方法,列印「bowl(2)」
這時候table類載入完畢,開始實例化t2變數,調用table類構造方法,列印「table()」
執行b2.f(1);
列印「f(1)」
2:道理和上面1一樣,只是在cupboard中,static變數初始化完畢之後,還要去初始化一個非static變數
最後執行main中的方法,注意的是,此時table,cupboard
這2個類的載入過程已經完成,之後創建這2個類的實例的過程中,不再去初始化static變數
有其他問題在hi我
*/
Ⅱ java 初始化和實例化的區別
初始化往往是說給變數賦值
實例化,往往是調用類的構造函數,創建實例
Ⅲ Thinking in Java 5.7.4非靜態實例初始化
加花括弧的話是類的實例欄位初始化器(也叫實例欄位初始化塊),是一個合法的java語法單元,可以在其中為類的實例欄位(屬性)賦值。不加的話,就是在類中直接為實例欄位賦值了,java只允許直接在類中進行欄位的初始化,不允許直接在類中為欄位賦值。初始化與賦值有點不同,初始化是帶類型的,如:
Mug mug3=new Mug(3);這個可以直接放在類中。
而Mug mug4;
//下面這句是賦值,只能放在實例欄位初始化器中
mug4=new Mug(4);
Ⅳ java初始化
你說「在java初始化時,順序為靜態變數-靜態初始化塊-非靜態變數-非靜態初始化塊-構造函數」
請問你在哪知道的,我也希望了解一下
我一直覺得構造函數會在靜態初始化塊之後
對 非靜態變數-非靜態初始化塊-構造函數 這樣的排列倒是有點...
------------------------------------------------------------------
我在javaEye上找了找相關文章:
1在new B一個實例時首先要進行類的裝載。(類只有在使用New調用創建的時候才會被java類裝載器裝入)
2,在裝載類時,先裝載父類A,再裝載子類B
3,裝載父類A後,完成靜態動作(包括靜態代碼和變數,它們的級別是相同的,安裝代碼中出現的順序初始化)
4,裝載子類B後,完成靜態動作
類裝載完成,開始進行實例化
1,在實例化子類B時,先要實例化父類A
2,實例化父類A時,先成員實例化(非靜態代碼)
3,父類A的構造方法
4,子類B的成員實例化(非靜態代碼)
5,子類B的構造方法
確實~
Ⅳ JAVA 對象的初始化到底有幾種形式
1、構造器
創建對象時初始化,比較常見。
classa{
publica()
{}
}
public
2、初始化塊
較少見,用於有特殊要求的類。
static
{
}
3、方法
即setter方法,雖然方便(不必在創建對象時一次性初始化),但是可能引發空指針異常。
Ⅵ java中的類是如何初始化的
類的初始化有3種方法,一種是new關鍵字,還有就是克隆,還有一個忘記了,作為初學者你只要學會new就可以了。例如Person類。
Person p = new Person();
類名 對象名 = new 類的構造函數;
Ⅶ java中什麼是實例初始化
實例初始化就是在內存中開辟一個類的對象 如:
public class Animal{
public Animal(){ }
public void mthod(){ }
}
在main函數中通過語句 Animal a = new Animal();
表示把類Animal實例化,a為其對象引用
Ⅷ 請問java中實例化和初始化區別是什麼
初始化一次,實例化多次,你這么記就沒問題了!
比方一個類,第一次被使用的時候,靜態的資源,包括變數,方法,靜態代碼塊,會進行初始化。
實在記不住,這么想好了,第一次使用,才叫初始化,對吧,那麼初始化最先載入的,當然是靜態的資源。
比如,一個類,有靜態變數,static int a=1;這個靜態變數,就會被初始化,當你第二次調用該類的時候,不必重新給a開辟內存,直接調用已有的。
而實例化,則是一個類new一次,就產生一個實例,比方一個類A。
A a1=new A();
A a2=new A();
a1和a2,就叫做A的實例。創建A對象實例的過程,就叫做實例化。
Ⅸ 請問JAVA怎麼實現初始化程序
1:27class parent
{
int i = 9;//定義初始化
int j;
parent()
{
System.out.println("i = " + i);
j = 39;
System.out.println("j = " + j);
}
static int x = prt("static parent.x initialized.");//靜態定義初始化
static int prt(String s)
{
System.out.println(s);
return 47;
}
}
public class getToKnowConstructingOrder extends parent
{
int k = prt("getToKnowConstructingOrder.k initialized.");//定義初始化
getToKnowConstructingOrder()
{
prt("k = " + k);
prt("j = " + j);
}
static int y = prt("getToKnowConstructingOrder.y initialized.");//靜態定義初始化
static int prt(String s)
{
System.out.println(s);
return 63;
}
public static void main(String[] args)
{
prt("getToKnowConstructingOrder constructor.");
getToKnowConstructingOrder s = new getToKnowConstructingOrder();
}
}
執行結果:static parent.x initialized. 1
getToKnowConstructingOrder.y initialized. 2
getToKnowConstructingOrder constructor. 3
i = 9 4
j = 39 5
getToKnowConstructingOrder.k initialized. 6
k = 63 7
j = 39 8
詳細運行過程分析:首先,要執行getToKnowConstructingOrder裡面的main,需要載入main所在的.class文件,在載入的過程中,JVM發現getToKnowConstructingOrder有父類的,所以轉入首先載入parent類的.class文件,形成parent類對象,實現對parent類中靜態成員的初始化,於是出現了結果1,然後parent類的.class文件載入完畢,重新回來繼續完成載入getToKnowConstructingOrder類的.class文件,形成getToKnowConstructingOrder類對象,該對象對getToKnowConstructingOrder類中的靜態成員完成初始化,出現了結果2。
由於執行main函數需要的所有類的.class文件都已經完成了載入,開始執行main函數,於是出現了結果3,要實例化一個getToKnowConstructingOrder實例(即完成非靜態成員的定義初始化,接著完成調用構造函數),必須先實例化一個parent類(即完成非靜態成員的定義初始化,接著完成調用構造函數),於是出現了結果4,5,此時父類的實例化完成,回來接著進行子類的實例化,於是出現了結果6,7,8。
這里還有一些細節:子類不會自動調用父類的靜態方法,除非用super.prt()。
Java程序執行包括載入類和實例化類兩個階段。
載入類階段與實例化類階段都是按照先父類後子類的順序進行。
載入類完成,立即形成Class類的一個對象,名字就是所載入類的類名,然後,該Class類的對象完成所載入類的靜態成員的初始化。
JVM啟動的時候就載入了Class類,並且分配空間,完成了相關的初始化。
一個類的靜態成員並不存在於new出來的堆區空間中,而是存在該類對應的Class類對象的空間里。
另外,站長團上有產品團購,便宜有保證
Ⅹ java語言,什麼是初始化啊初始化和實例化一樣嗎
java中不管對象也好,還是基本數據類型也好,你聲明它的時候,它們都稱為變數,在你使用變數前給變數進行賦值,這就是變數的初始值,因此叫變數初始化。
實例化是指對象的創建,一般是指通過 new 關鍵字(當然還有其他途徑,比如反射),在堆中為對象分配內存,這就是實例化。舉個非常簡單的例子,你知道飛機會飛,但飛機在你腦海里只是個概念,當真的把飛機製造出來,變成實實在在的,存在於物質世界(java中稱內存)的東西時,你才能用它來飛。如果在物質世界(內存)中根本就不存在,那就無法使用。因此,實例化可以說將概念(類),變成實際存在(內存中存在)的過程就稱為實例化。