⑴ java怎麼通過構造函數為成員變數賦值
首先,看一下為什麼要用構造器?
1、Java類的成員變數在被修飾為public、protected和包訪問許可權時,可以在不同層次上直接給成員變數賦值。
但是,賦值的前提是:必須存在持有成員變數的對象。而對象的初始化必須調用構造函數,所以構造函數是必不可缺的。
至於使用構造函數還是直接聲明時給成員變數賦值,那就要看情況而定。
如果創建的這個對象是不可變的,那麼就必須使用構造函數初始化成員變數,反之,就無所謂。
另外,直接給成員變數賦值,Java是不推薦的,因為這樣會破壞它的封裝性。所以,建議在構造函數或提供setters方法對變數賦值。
2、成員變數的賦值一般通過構造函數;直接賦值一般的話都是一些常成員變數,final關鍵字開頭的。
3、其他的時候基本上都是用構造函數構造函數試用於動態創建對象。基於對象編程的思想,是不贊成直接給類裡面的變數直接賦值的。
類變數、實例變數的初始化比較相似,對於實例變數有一個例子
public class RAMTest {
{
price = 3.4;//①--非靜態語句塊
}
public RAMTest(double price) {
this.price = price;//②--構造函數
}
double price = 2.0;//③--聲明語句並賦值
}
本例中對實例變數price的初始化有三處
執行順序為:③中price變數聲明[price=0.0]
--①中price變數賦值[price=3.4]
--③中price變數賦值[price=2.0]
--②中price構造函數賦值
需要注意的是,雖然非靜態語句初始塊中的price變數的賦值在聲明之前,但實際上執行的時候會先執行變數的聲明,再按代碼順序執行變數值的賦值動作,然後再進行構造函數對實例的初始化構造。
這三種實例變數的初始化語句經過編譯器處理後,都會合並到構造器中去,其中定義變數語句轉換得到的賦值語句、初始化塊中的語句轉化得到的賦值語句,總是位於構造器的所有語句之前。合並後兩種賦值語句的順序保持他們在源碼中的順序。
⑵ java 變數賦值
在java里,成員變數自動給你賦或你自己賦!而方法里的變數,必需要賦初始值了!
⑶ java如何給變數賦值
使用「=」可以進行賦值
比如:String
str
=
"你是SB嗎?";
這樣str這個變數就有值了