問題與思考
1. 一個類文件中只能有一個公有類嗎?
答:是,一個類文件中只能有一個公有類,且公有類的名稱要與類文件名想相同。經過檢驗是有錯的。
2. 把main()方法的返回值由 void 改為 int ,程序能編譯通過嗎?能運行嗎?
1. 對話框顯示
- JOptionPane.showMessageDialog(null, "友情提示");
JOptionPane.showMessageDialog(null, "友情提示");
效果如下:
Java代碼
JOptionPane.showMessageDialog(jPanel, "提示消息", "標題",JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(jPanel, "提示消息", "標題",JOptionPane.WARNING_MESSAGE);
效果如下:
Java代碼
- JOptionPane.showMessageDialog(null, "提示消息.", "標題",JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, "提示消息.", "標題",JOptionPane.ERROR_MESSAGE);
Java代碼
JOptionPane.showMessageDialog(null, "提示消息.", "標題",JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog(null, "提示消息.", "標題",JOptionPane.PLAIN_MESSAGE);
1.2 showOptionDialog
這個函數可以改變顯示在按鈕上的文字。你還可以執行更多的個性化操作。
常規的消息框:
Java代碼
- int n = JOptionPane.showConfirmDialog(null, "你高興嗎?", "標題",JOptionPane.YES_NO_OPTION);//i=0/1
int n = JOptionPane.showConfirmDialog(null, "你高興嗎?", "標題",JOptionPane.YES_NO_OPTION);//i=0/1
個性話消息框:
Java代碼
- Object[] options ={ "好啊!", "去一邊!" };
- int m = JOptionPane.showOptionDialog(null, "我可以約你嗎?", "標題",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
Object[] options ={ "好啊!", "去一邊!" };
int m = JOptionPane.showOptionDialog(null, "我可以約你嗎?", "標題",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
效果如下:
1.3 showInoutDialog
該方法返回一個Object 類型。這個Object 類型一般是一個String 類型,反應了用戶的輸入。
下拉列表形式的例子:
Java代碼
1. Object[] obj2 ={ "足球", "籃球", "乒乓球" };
2. String s = (String) JOptionPane.showInputDialog(null,"請選擇你的愛好:\n", "愛好", JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), obj2, "足球");
Object[] obj2 ={ "足球", "籃球", "乒乓球" };
String s = (String) JOptionPane.showInputDialog(null,"請選擇你的愛好:\n", "愛好", JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), obj2, "足球");
效果如下:
文本框形式的例子:
Java代碼
- JOptionPane.showInputDialog(null,"請輸入你的愛好:\n","title",JOptionPane.PLAIN_MESSAGE,icon,null,"在這輸入");
JOptionPane.showInputDialog(null,"請輸入你的愛好:\n","title",JOptionPane.PLAIN_MESSAGE,icon,null,"在這輸入");
效果如下:
對應的小圖標可參照下圖:
詳細的解釋可參照oracle官網
4. 為什麽java規定作為程序入口點的main() 方法靜態的
static修飾的區塊,域只會初始化一次,如果沒有static說明main函數是靜態的那麽調用main函數時就必須給main函數定義一個實例,如果沒有定義實例調用主函數時就會報錯,使用static後就可以避免調用前實例化的問題,使用static後系統會給main函數分配內存,無需實例化。
5. 同名變量的屏蔽原則有意識地在不同地方定義一些同名變量,看看輸出的到底是哪個值
局部變量定義在方法中;方法參數用於將方法外的數據傳遞給方法。
按照程序的順序,以最後的定義為最終結果
6. 數據類型的轉換
數據類型的相互轉換,數值擴展類型轉換按照byte->short->int->long->float->double進行,整數與浮點數進行運算java會自動地將整數轉換為浮點值。
數據類型 |
布爾型 |
字符型 |
字節型 |
短整型 |
整型 |
長整型 |
浮點型 |
雙精度型 |
類型名 |
bool |
char |
byte |
short |
int |
long |
float |
double |
占用位數 |
8 |
16 |
8 |
16 |
32 |
64 |
32 |
64 |
取值範圍 |
true/false |
0~65535 |
|
|
|
|
|
|
默認值 |
false |
‘\u0000’ |
0 |
0 |
0 |
0 |
0.0f |
0.0d |
|
|
|
|
|
|
|
|
|
實線:有精度損失
虛線:無精度損失
7.關於double型數據運算精度損失的問題
double類型占8個字節,64位,第1位為符號位,後面11位是指數部分,剩余部分是有效數字。二進制無法準確表示0.99,所以用double定義0.99的變量會有精度損失
用BigDecimal函數時使用double參數仍然會造成精度損失,因為這種解決方法就是在數據庫中就把浮點數用string來表示存放,再使用以上的方法就會造成精度損失
問題與思考