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

Java 基礎入門:常用類詳解(包裝類、字符串、日期時間處理)

     編輯:Java 綜合教學

Java 常用類核心知識點全解析

在 Java 程式設計中,java.lang 套件下的常用類是開發者每天都會打交道的基石。本文系統梳理了基本類型包裝類、字符串處理(String、StringBuilder、StringBuffer)以及日期時間處理(Date、SimpleDateFormat、Calendar)的核心概念、常見陷阱與最佳實踐,助你夯實 Java 基礎。

一、基本類型包裝類:讓基本類型擁有對象特性

Java 不是純面向對象語言,八大基本類型(int、double、boolean 等)不具備對象特性,無法直接存入集合或調用對象方法。為此,Java 為每種基本類型提供了對應的包裝類:

  • Integer ⇄ int
  • Double ⇄ double
  • Boolean ⇄ boolean
  • Character ⇄ char
  • Byte、Short、Long、Float

自動裝箱與自動拆箱

JDK 5.0 引入編譯器語法糖,讓基本類型與包裝類互轉更簡潔:

// 自動裝箱:int → Integer
Integer i = 100;          // 編譯器轉為 Integer.valueOf(100)

// 自動拆箱:Integer → int
int a = new Integer(100); // 編譯器轉為 new Integer(100).intValue()

注意:頻繁裝箱/拆箱會產生大量臨時對象,影響性能;在熱點循環中建議直接使用基本類型。

二、字符串處理:不可變與可變的選擇

String:不可變字符序列

  • 底層 final char[] value,創建後不可修改
  • 常量池機制:字面量相同的字符串共享同一對象
  • 拼接操作 s1 + s2 實際產生新對象,循環拼接會導致大量臨時對象,效率極低

StringBuilder vs StringBuffer

類別線程安全效率適用場景
StringBuilder否高單線程、大量拼接
StringBuffer是低多線程共享緩衝區

最佳實踐:單線程環境優先用 StringBuilder,多線程才用 StringBuffer;避免在循環中直接用 + 拼接 String。

三、日期時間處理:從 Date 到 Calendar

核心類別

  • java.util.Date:精確到毫秒的時間戳,本質是 long 型毫秒數(自 1970-01-01 00:00:00 UTC)
  • java.text.SimpleDateFormat:線程不安全的格式化/解析工具,支援自定義模式(yyyy-MM-dd HH:mm:ss)
  • java.util.Calendar:抽象類,提供年/月/日/時/分/秒等字段運算

SimpleDateFormat 典型用法

// 格式化 Date → String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str = sdf.format(new Date());

// 解析 String → Date
String input = "2024-06-15 14:30:00";
Date date = sdf.parse(input); // 需捕獲 ParseException

避坑指南:SimpleDateFormat 非線程安全,多線程環境下請使用 ThreadLocal 或 JDK 8+ 的 java.time.format.DateTimeFormatter(不可變、線程安全)。

四、實戰 Demo:靈活的日期格式化

public class DateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date now = new Date();
        
        // 默認格式
        System.out.println(DateFormat.getDateInstance().format(now));
        
        // 自定義複雜格式
        SimpleDateFormat sdf = new SimpleDateFormat(
            "\n★====^_^======★\nyyyy年MM月dd日\n★====^_^======★\n");
        System.out.println(sdf.format(now));
        
        // 解析帶前綴字符串
        String str = "===>>>2016年3月6號北京時間:15點23分21秒<<<===";
        SimpleDateFormat parser = new SimpleDateFormat(
            "===>>>yyyy年MM月dd號北京時間:HH點mm分ss秒<<<===");
        System.out.println(parser.parse(str));
    }
}

五、總結

  • 包裝類讓基本類型融入對象體系,掌握裝箱/拆箱機制與緩存範圍(-128~127)
  • 字符串選型原則:少量拼接用 +,大量拼接用 StringBuilder,多線程用 StringBuffer
  • 日期處理推薦升級至 JDK 8 java.time 包(LocalDateTime、DateTimeFormatter),舊項目維護時注意 SimpleDateFormat 線程安全問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved