首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 入門 FAQ 精選:日期格式化、靜態內部類、數字判斷、finalize/gc、鍵盤輸入

     編輯:Java 相關知識

1. 日期顯示格式化

import java.util.*;
import java.text.*;

public class FormatDate {
    public static void main(String[] args) {
        Date now = new Date();
        DateFormat defaultFormat = DateFormat.getDateInstance();
        DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT);
        DateFormat mediumFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
        DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);
        DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);

        System.out.println("(Default) Today :" + defaultFormat.format(now));
        System.out.println("(SHORT) Today : " + shortFormat.format(now));
        System.out.println("(MEDIUM) Today :" + mediumFormat.format(now));
        System.out.println("(LONG) Today : " + longFormat.format(now));
        System.out.println("(FULL) Today : " + fullFormat.format(now));
    }
}

執行結果 (預設 Locale)

(Default) Today :2003-6-15
(SHORT) Today : 03-6-15
(MEDIUM) Today :2003-6-15
(LONG) Today : 2003年6月15日
(FULL) Today : 2003年6月15日 星期日

2. 靜態與非靜態內部類別差異

  • static 內部類別:
    1. 建立物件不需要外部類別實例。
    2. 無法從靜態內部類別物件存取外部類別實例成員。
  • 非靜態內部類別:隱含持有外部類別實例參考,可直接存取外部實例成員。

3. 判斷輸入為字元或數字

  • Float.parseFloat(String):拋出 NumberFormatException 即非數字。
  • StreamTokenizer:檢查 ttype 欄位。
  • Character.isDigit(char):逐字元判斷。

Character 常用靜態方法

方法說明
isDigit(ch)是否為數字
isLetter(ch)是否為字母
isLetterOrDigit(ch)字母或數字
isWhitespace(ch)是否為空白字元

4. finalize() vs System.gc()

  • finalize():JVM 自動呼叫,時機不確定。
  • System.gc():建議 JVM 執行 GC,不保證立即執行。
  • JVM 記憶體壓力大時才會大規模 GC,finalize() 呼叫次數與物件建立次數無直接對應,僅與 GC 策略有關。

5. System.in.read() 與鍵盤輸入陷阱

import java.io.*;
public class Test {
    public static void main(String[] args) throws IOException {
        int s[] = new int[10];
        s[0] = System.in.read(); // 正確應為 Integer.parseInt(args[0])
        System.out.println(s[0]);
    }
}

現象

輸入 2 輸出 50('2' 的 ASCII 碼)。System.in.read() 回傳 0~255 之間的整數代表 ASCII/位元組值,非 數值解析。

正確做法

  • 命令列參數:Integer.parseInt(args[0])
  • 互動式輸入:用 BufferedReader 讀取整行再 Integer.parseInt()。

關鍵差異

  • Integer.parseInt(String):參數為字串,回傳帶號 int。
  • System.in.read():回傳 0~255 位元組值,雖同為 int 但語意完全不同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved