導航:首頁 > 編程語言 > java成員變數初始化

java成員變數初始化

發布時間:2022-10-31 01:16:00

1. java中對成員變數的初始化一定要用構造函數嗎

可以直接賦值的,在構造里寫只不過是為了方便,因為使用一個類的時候通常都要先new出該類的實例
在構造里賦值,這樣在new這個類的實例的時候成員變數就已經被初始化了。方便使用而已。

2. Java中所有變數在使用前都初始化嗎

1、java中有兩種變數,局部變數和成員變數。成員變數就是定義在類中,方法外,全局的變數。局部變數使用前必須初始化,否則編譯報錯。成員變數可以不初始化,虛擬機會給他默認值。

classtest{
//定義成員變數b
publicstaticintb;
publicstaticvoidmain(String[]args){
System.out.println("hellojava");
//局部變數i
inti;
//這里如果直接輸出會編譯報錯
i=0;
System.out.println(++i);
//這里直接輸出b是可以的,默認為0
System.out.println(b);
}
}

2、局部變數的初始化可以認為是分配初始空間,也就是在內存中要開辟一塊區域來存這個東西,不初始化是沒有內存空間的,也就不能使用。

3. java中怎麼給變數初始化

不同的變數初始化方法不同。

變數包括:

  1. 類的屬性,或者叫值域

  2. 方法里的局部變數

  3. 方法的參數

對於第一種變數,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變數的默認初始值。


int類型變數默認初始值為0


float類型變數默認初始值為0.0f


double類型變數默認初始值為0.0


boolean類型變數默認初始值為false


char類型變數默認初始值為0(ASCII碼)


long類型變數默認初始值為0


所有對象引用類型變數默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化後其值也是null。

對於兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性
在類載入,也就是第一次用到這個類的時候初始化,對於後來的實例的創建,不再次進行初始化。這個問題會在以後的系列中進行詳細討論。


對於第二種變數,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一
次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if後面的判斷條件,如此一
來初始化語句就不會被執行了,這就違反了局部變數使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少
一條初始化語句會被執行,不會發生使用前未被初始化的事情。對於try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在
catch或finally里也有,則可以通過編譯。總之,要保證局部變數在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他
們,如果不知道要出事化成什麼值好,就用上面的默認值吧!

其實第三種變數和第二種本質上是一樣的,都是方法中的局部變數。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。

4. java對類中的成員變數進行初始化有哪些方法

直接賦值, 構造參數賦值 ,static 代碼塊內部初始化。

5. java語言中成員方法可以初始化成員變數嗎

不能

一、類的初始化
對於類的初始化:類的初始化一般只初始化一次,類的初始化主要是初始化靜態成員變數。
類的編譯決定了類的初始化過程。
編譯器生成的class文件主要對定義在源文件中的類進行了如下的更改:
1) 先按照靜態成員變數的定義順序在類內部聲明成員變數。
2) 再按照原java類中對成員變數的初始化順序進行初始化。
一個java類和編譯後的class對應的轉換如下:
源文件:

public class Person{
public static String name="張三";
public static int age;
static{
age=20;
System.out.println("初始化age");
}
public static String address;
static{
address="北京市";
age=34;
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}

當java源代碼轉換成一個class文件後,其轉換成類似下面的代碼:

public class Person{
public static String name;
public static int age;
public static String address;
static{
name="張三";
age=20;
System.out.println("初始化age");
address="北京市";
age=34;
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}

初始化順序依據轉換後對應的class類成員變數的初始化順序依次執行,所以所有的靜態成員變數都是先聲明,後執行賦值的,而且賦值的順序也是依照源代碼對靜態成員變數初始化的順序進行的,注意:定義一個成員變數並直接初始化與在靜態代碼塊中進行初始化是等價的,都是依據它們在源代碼中定義的順序進行的。

二、對象的生成
對於對象的生成其初始化過程與類的初始化過程類似,但會增加構造函數階段,源代碼如下:

1 public class Person{
2 {
3 name="李四";
4 age=56;
5 System.out.println("初始化age");
6 address="上海";
7 }
8 public String name="張三";
9 public int age=29;
10 public String address="北京市";
11 public Person(){
12 name="趙六";
13 age=23;
14 address="上海市";
15 }
16 }

編譯器轉換成class文件後,會轉換成類似下面的代碼:

1 public class Person{
2 public String name;
3 public int age;
4 public String address;
5 public Person(){
6 name="李四";
7 age=56;
8 System.out.println("初始化age");
9 address="上海";
10 name="張三";
11 age=29;
12 address="北京市";
13 name="趙六";
14 age=23;
15 address="上海市";
16 }
17 }

可以看到,對於類中對成員變數的初始化和代碼塊中的代碼全部都挪到了構造函數中,並且是按照java源文件的初始化順序依次對成員變數進行初始化的,而原構造函數中的代碼則移到了構造函數的最後執行。

6. 在java中變數一定要初始化嗎

不同的變數初始化方法不同。
變數包括:
類的屬性,或者叫值域
方法里的局部變數
方法的參數
對於第一種變數,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變數的默認初始值。
int類型變數默認初始值為0
float類型變數默認初始值為0.0f
double類型變數默認初始值為0.0
boolean類型變數默認初始值為false
char類型變數默認初始值為0(ASCII碼)
long類型變數默認初始值為0
所有對象引用類型變數默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化後其值也是null。
對於兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性在類載入,也就是第一次用到這個類的時候初始化,對於後來的實例的創建,不再次進行初始化。這個問題會在以後的系列中進行詳細討論。

對於第二種變數,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if後面的判斷條件,如此一來初始化語句就不會被執行了,這就違反了局部變數使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少一條初始化語句會被執行,不會發生使用前未被初始化的事情。對於try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在catch或finally里也有,則可以通過編譯。總之,要保證局部變數在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他們,如果不知道要出事化成什麼值好,就用上面的默認值吧!其實第三種變數和第二種本質上是一樣的,都是方法中的局部變數。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。

7. java成員變數怎麼默認初始化

1是申明了一個abc
數據類型的變數,並實例化。初始值為null。可以使用。
2是申明一個abc
數據類型的變數,沒有實例化,賦值null。為空。不能使用,試用前必須實例化,不然報空指針異常。
3同上,意思差不多。默認本來就是為null的~~

8. 請問java構造函數如何初始化成員變數的啊

可以直接賦值的,在構造里寫只不過是為了方便,因為使用一個類的時候通常都要先new出該類的實例在構造里賦值,這樣在new這個類的實例的時候成員變數就已經被初始化了。

9. java中成員或類變數自動初始化是什麼意思

成員變數相當於你的名字,出生就有,如果你父母來不及取,默認是寶寶。局部變數相當於你在公司或者學校的外號,進公司或學校才有,出了公司和學校就沒了,而如果沒有人給你取外號,那麼你就沒有外號,沒有默認值。
成員變數在類存在的時候就已經初始化了,局部變數只有該方法被調用的時候才初始化。局部變數一定要賦初值,否則報錯,成員變數如果不賦初值,系統默認給。

10. java成員變數在什麼時候初始化

  1. static標識的變數在類初始化的時候初始化

2. 其他是在創建對象的時候創建

3. 有的是自己寫的初始化方法初始化

閱讀全文

與java成員變數初始化相關的資料

熱點內容
華為筆記本電腦怎麼安裝抖音app 瀏覽:410
阿里雲國際版試用的伺服器怎麼搞 瀏覽:893
java正則表達式工具 瀏覽:158
oa伺服器怎麼設置ftp 瀏覽:8
安卓如何安裝obb 瀏覽:440
QQ聊天記錄journal文件夾 瀏覽:118
蘋果公司雲伺服器地址 瀏覽:85
加密記事本手機 瀏覽:437
汽車壓縮機變頻閥 瀏覽:95
域外伺服器是什麼意思 瀏覽:639
大眾點評伺服器怎麼老卡頓 瀏覽:556
javavector與list的區別 瀏覽:316
java初始化類數組 瀏覽:303
java字元串轉換成json對象 瀏覽:647
android非阻塞socket 瀏覽:358
編譯系統概念 瀏覽:452
天眼通app能做什麼 瀏覽:557
魅族手機怎麼加密圖庫 瀏覽:8
rpa編譯器 瀏覽:572
車載雲伺服器記錄 瀏覽:740