java中類的顯示初始化會在首次被“主動使用”時執(zhí)行初始化,為類(靜態(tài))變量賦予正確的初始值。在Java代碼中,一個正確的初始值是通過類變量初始化語句或者靜態(tài)初始化塊給出的。而我們這里所說的主動使用 包括:
為呼圖壁等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及呼圖壁網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站建設、網(wǎng)站制作、呼圖壁網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1. 創(chuàng)建類的實例
2. 調(diào)用類的靜態(tài)方法
3. 使用類的非常量靜態(tài)字段
4. 調(diào)用Java API中的某些反射方法
5. 初始化某個類的子類
6. 含有main()方法的類啟動時
初始化一個類包括兩個步驟:
1、 如果類存在直接父類的話,且直接父類還沒有被初始化,則先初始化其直接父類
2、 如果類存在一個初始化方法,就執(zhí)行此方法
注:初始化接口并不需要初始化它的父接口。
我們知道一個類(class)要被使用必須經(jīng)過裝載,連接,初始化這樣的過程。下面先對這三階段做一個簡單的描述,之后會結(jié)合一個簡單的例子來說明java中類的初始化過程。
在裝載階段,類裝載器(Bootstrap ClassLoader 或者用戶自定義的ClassLoader) 把編譯形成的class文件載入內(nèi)存,創(chuàng)建類相關的Class對象,這個Class對象封裝了我們要使用的類的類型信息。
連接階段又可以分為三個子步驟:驗證、準備和解析。
驗證就是要確保java類型數(shù)據(jù)格式 的正確性,并適于JVM使用。
準備階段,JVM為靜態(tài)變量分配內(nèi)存空間,并設置默認值,注意,這里是設置默認值,比如說int型的變量會被賦予默認值0 。在這個階段,JVM可能還會為一些數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存,目的 是提高運行程序的性能,比如說方法表。
解析過程就是在類型的常量池中尋找類、接口、字段和方法的符號引用,把這些符號引用替換成直接引用。這個階段可以被推遲到初始化之后,當程序運行的過程中真正使用某個符號引用的時候 再去解析它。
類會在首次被“主動使用”時執(zhí)行初始化,為類(靜態(tài))變量賦予正確的初始值。在Java代碼中,一個正確的初始值是通過類變量初始化語句或者靜態(tài)初始化塊給出的。而我們這里所說的主動使用 包括:
1. 創(chuàng)建類的實例
2. 調(diào)用類的靜態(tài)方法
3. 使用類的非常量靜態(tài)字段
4. 調(diào)用Java API中的某些反射方法
5. 初始化某個類的子類
6. 含有main()方法的類啟動時
初始化一個類包括兩個步驟:
1、 如果類存在直接父類的話,且直接父類還沒有被初始化,則先初始化其直接父類
2、 如果類存在一個初始化方法,就執(zhí)行此方法
注:初始化接口并不需要初始化它的父接口。
追問
你這不是初始化實例么
做了一個多小時,終于編出來了,樓上寫的程序有很多問題而且不完整。樓主的要求沒寫明要操作數(shù)據(jù)庫,所以就初始用戶ID和密碼都設置成123。密碼正確后出現(xiàn)正在登陸的提示框,等登陸成功后,就關閉提示,退出程序。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Test extends JFrame implements ActionListener,Runnable {
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JTextField jtUserID = new JTextField();
JLabel jLabel3 = new JLabel();
JPasswordField jpUsePwd = new JPasswordField();
JButton jbEnter = new JButton();
JButton jbExit = new JButton();
//設置登陸的用戶名和密碼
String userID="123";
String userPwd="123";
public Test() {
super("用戶登陸界面");
try {
// 設置窗體的大小、位置、可見性
jbInit();
this.setVisible(true);
this.setSize(410, 300);
this.addWindowListener(new WindowAdapter() { // 清空內(nèi)存
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
// 初始化各控件,設置控件位置,將控件添加到面板上
getContentPane().setLayout(null);
jtUserID.setText("");
jtUserID.setBounds(new Rectangle(182, 50, 141, 22));
jLabel2.setText("用戶名:");
jLabel2.setBounds(new Rectangle(83, 50, 78, 24));
jLabel3.setText("密 碼:");
jLabel3.setBounds(new Rectangle(81, 91, 78, 24));
jpUsePwd.setBounds(new Rectangle(182, 92, 140, 27));
jbEnter.setBounds(new Rectangle(122, 197, 90, 25));
jbEnter.setText("登陸");
jbExit.setBounds(new Rectangle(217, 197, 90, 25));
jbExit.setText("退出");
this.getContentPane().add(jLabel2);
this.getContentPane().add(jLabel3);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jtUserID);
this.getContentPane().add(jpUsePwd);
this.getContentPane().add(jbEnter);
this.getContentPane().add(jbExit);
jbEnter.addActionListener(this);
jbExit.addActionListener(this);
}
//多線程控制登陸信息框
public void run(){
try{
this.setVisible(false);
JOptionPane.showMessageDialog(null, "正在登陸中....");
Thread.sleep(3000);
this.dispose();
}catch(Exception e){
System.out.println(e);
}
}
//當點擊按鈕的時候觸發(fā)下面的方法
public void actionPerformed(ActionEvent e) {
try{
String command=e.getActionCommand();
if (command.equals("退出")) {
System.exit(0);
} else {
// 管理員登陸功能實現(xiàn)
if (jtUserID.getText().equals("")
|| new String(jpUsePwd.getPassword()).equals("")) {
JOptionPane.showMessageDialog(null, "請輸入完整數(shù)據(jù)");
} else {
if (jtUserID.getText().equals(userID)
new String(jpUsePwd.getPassword())
.equals(userPwd)) {
Thread t=new Thread(this);
t.start();
}
else {
JOptionPane.showMessageDialog(null, "帳號或者密碼錯誤");
jtUserID.setText("");
jpUsePwd.setText("");
}
}
}
}catch(Exception ex){
System.out.println(ex);
}
}
public static void main(String[] args) {
new Test();
}
}
你問的是包含項目的多少吧?
Choice自動管理項目,不用干預。只有唯一的構(gòu)造函數(shù)Choice(),必須通過.addItem(...)添加。
簡便方法是,將所有項構(gòu)造一個數(shù)組:
Choice itemList=new Choice();
String[] items=new String[]{"第一項","第二項",...};
for(int i=0;iitems.length;i++){
itemList.addItem(items[i]);
}