『壹』 關於java構造器中如何初始化一個對象的變數
你可以使用反射來實現。
UserBean
bean
=
new
UserBean();
Field[]
fs
=
userCla.getDeclaredFields();
for(int
i
=
0
;
i
<
fs.length;
i++){
Field
f
=
fs[i];
f.setAccessible(true);
//設置些屬性是可以訪問的
f.set(bean,"12")
;
//給屬性設值
}
『貳』 在java中,set和get方法什麼時候用是用來干什麼的哎,有點兒犯迷糊了。。。
看來樓上的回復和你的追問,感覺到你對面向對象不是太清楚。
在java中,每個類都至少有一個構造方法,如果你沒有寫,系統會自己添加一個默認的構造方法。
構造方法的主要用來初始化對象成員的,使你在使用其它成員方法時,確保數據成員的狀態。
構造方法的類型有簡單構造、拷貝構造等,你可以看看相關資料。
get和set方法分別是用來獲取和設置對象中數據成員值。下面給你列舉一些用法:
1、當數據成員是 private 時,只能通過get 和 set()來設置,因為這些數據成員不能被直接訪問。
2、當需要對輸入的數據進行變換時。如能過輸入任意整數來設置奇偶標志。這時必須對輸入數據
進行運算後,才能賦值。
給你一個例子吧:
class A {
private int value;
int getValue();
void setValue(int value) { this.value = value};
public static void main() {
A aa = new A();
// 下面這句將出錯。
aa.value = 5;
// 這樣就正確了
aa.setValue(5);
}
}
多寫一個程序,你就會掌握的更好啦。
『叄』 java裡面的set方法和帶參數的構造方法效果是不是都一樣
不正確的
public
class
Test{
private
String
s;
public
Test(String
s);
public
void
setS(String
s){this.s=s;}
如果寫成這樣s並沒有完成初始化。而必須手動調用set方法才能完成初始化,譬如
public
Test(String
s){
setS(s);
}
但是日常代碼規范不允許這樣
一般都是
public
Test(String
s){
this.s
=
s;
}
但是同時還提供對外setS的介面
public
void
setS(String
s){
this.s
=
s};
『肆』 Java類屬性初始化是什麼
1.我們都知道java是面向對象的語言, 那麼類就好比是一個模板, 比如Student類, 這個類其實是一個模板, 是一個規范.
然後我們執行下面這行代碼
Student xiaoMing = new Student();
就相當於我們用Student這個模板去生成了一個對象, 這個對象叫xiaoMing.
如果Student這個類有一個屬性private int age;當我們只是做上面new對象的動作時候, xiaoMing的age並沒有被賦值, 只是初始化成了0
(數值類型的屬性初始化都是0, String則是null, 例如有個字元串類型的屬性name就會是null)
然後xiaoMing.setAge(10); 那麼這個時候xiaoMing的age屬性才變成10,
所以類屬性初始化指的就是在new對象的時候對各個屬性賦予一個初始化的值.
2.為什麼要用構造方法進行屬性初始化:
這個並不是強制的, 構造方法分成無參構造和帶參構造, 用構造方法對屬性進行初始化只是單純的為了方便而已.
『伍』 java的set方法
我怎麼沒明白呢? xx是個類還是個java primitive type?給java 變數賦值用 =
變數 = 值;
就行了啊。
看你寫xx.setParentId ('0');估計xx是個類?xx有個變數叫parentId? 你想給這個parentId一個值?
你可以在xx類里叫一個set方法
Class XX{
private int parentId;
public void setParentId(int parentId){
this.parentId = parentId;
}
}
外部調用時 xx.setParentId(0);就可以。
當然,如果parentId是字元串,就把int的地方改成String,然後調用xx.setParentId("0");
『陸』 java組件初始化
問題一:
書上的簡寫方法
JButton jb=new JButton("OK"); //先創建
add(jb); //再添加
--------
add(new JButton("OK")); //合體寫法
問題二:
class test extends Frame
類test繼承了Frame類,於是test類就是Fream類了(代表)
在用構造方法構造一個自己的對象public test { }
問題三:
public class HelloWorld extends JFrame
public HelloWorld()
{
super();//調用本類的父類的構造函數
this.setSize(300, 200);//設置本類創建的對象(窗體)的大小
this.getContentPane().setLayout(null);//設置對象的版面
this.add(getJLabel(), null);//
this.add(getJTextField(), null);//
this.add(getJButton(), null);//
//上面3句是調用本類的3個方法來創建對象,用add()方法添加到面版上
//this. 是調用自己類創建的對象的方法或者屬性
this.setTitle("HelloWorld");
}
private javax.swing.JLabel getJLabel() {
...
...
}
//類里的一個方法,返回值是JLable類型。是個private(私有),只有自己類的對象才能調用。
他的作用就是創建一個JLabel的對象並返回
在上面的this.add(getJTextField(), null);你就懂了吧,調用getJTextField()方法得到一個JTextField對象,在添加到面版
分啊
『柒』 java中創建對象了,顯示初始化值和構造函數初始化對象的區別先後執行順序是什麼
兩個都可以初始化值,本質上沒有區別,不同的是執行的先後。構造方法初始化值時需要包含有參的構造方法,創建對象時使用Object obj = new Object(arg1,arg2)的形式,你說的顯示初始化值應該是使用set方法吧,比如obj.setArg1(arg1)的形式。執行順序肯定是構造方法的形式要在前了,因為在對象創建之後就會給屬性賦值,而set方法形式賦值只會在你調用set方法時才會賦值。
再插一點題外話:其實在對象創建時成員變數已經初始化了,只是初始化的都是變數對應類型的默認值,比如int類型的默認值是0,引用類型默認值是null,boolean類型默認值是false。