Java 學習筆記:常用類、String 與日期時間處理

作為一名名 Java 初學者,最近在學習過程中整理了一些關于常用類、String 類以及日期時間處理的知識點。這些內容是 Java 基礎中的重點,也是日常編程練習中頻繁用到的工具,掌握它們能讓我們在寫代碼時更加得心應手。今天把這些筆記分享出來,希望能和大家一起交流進步。

一、Java 中的常用基礎類

Java 提供了許多內置的基礎類,它們就像工具箱里的工具,幫我們解決各種常見問題。

Object 類 —— 所有類的 "老祖宗"

Object 類是 Java 中所有類的直接或間接父類,不管我們有沒有顯式聲明,所有類都繼承了它的方法。其中最常用的有兩個:

  • equals():用于比較兩個對象是否相等。需要注意的是,默認的equals()比較的是對象的內存地址,很多類(比如后面要講的 String)會重寫這個方法,改為比較內容是否相同。
  • toString():返回對象的字符串表示。默認格式是 "類名 @哈希值",通常我們會在自定義類中重寫它,讓輸出的信息更有意義。比如:
    class Student {String name;int age;@Overridepublic String toString() {return "Student{name='" + name + "', age=" + age + "}";}
    }

    包裝類 —— 基本類型的 "包裝器"

    Java 的基本數據類型(如 int、double)不是對象,為了能在需要對象的場景(比如集合框架)中使用它們,Java 提供了對應的包裝類:

    基本類型包裝類
    intInteger
    charCharacter
    doubleDouble
    booleanBoolean

    包裝類最常用的功能是類型轉換:

// 字符串轉整數
int num = Integer.parseInt("123");
// 整數轉字符串
String str = Integer.toString(123);
// 自動裝箱拆箱(Java 5+)
Integer a = 100;  // 自動裝箱(int→Integer)
int b = a;        // 自動拆箱(Integer→int)

二、String 類 —— 字符串處理利器

String 類用于處理文本數據,是 Java 中最常用的類之一,掌握它的用法能讓字符串處理變得簡單高效。

String 的重要特性

  • 不可變性:字符串一旦創建,其內容就不能被修改。當我們執行拼接、替換等操作時,其實是創建了新的 String 對象。

    String s = "hello";
    s += " world";  // 這里創建了新的String對象,原"hello"并未改變

    字符串常量池:為了節省內存,Java 會把字符串常量存放在常量池中。如果創建的字符串已經存在于常量池,就直接引用而不重復創建。

    String s1 = "hello";
    String s2 = "hello";
    System.out.println(s1 == s2);  // 輸出true,因為指向同一個常量池對象

    必學的 String 常用方法

  • length():獲取字符串長度

    "hello".length();  // 返回5

substring(int start, int end):截取子串(包含 start,不包含 end)

"hello world".substring(0, 5);  // 返回"hello"

?

equals(Object obj):比較字符串內容是否相等(注意與==的區別)

"hello".equals("hello");  // 返回true
"hello" == "hello";       // 返回true(常量池機制)
new String("hello") == "hello";  // 返回false(new創建了新對象)

indexOf(String str):查找子串首次出現的位置,找不到返回 - 1?

"hello world".indexOf("world");  // 返回6

replace(CharSequence old, CharSequence new):替換字符串中的字符 / 子串?

"hello".replace('l', 'x');  // 返回"hexxo"

?

三、日期時間處理 —— 時間的 "記錄者"

在編程中,處理日期時間是很常見的需求,比如記錄日志時間、計算時間差等。Java 提供了兩套日期時間 API,我們都需要了解。

舊版 API(Date 和 Calendar)

這是 Java 早期的日期時間類,雖然部分方法已過時,但在老項目中仍能看到它們的身影:

  • Date 類:表示特定的時間點

Date now = new Date();
System.out.println(now);  // 輸出當前時間,格式如:Fri Aug 01 16:30:45 CST 2025

Calendar 類:用于更靈活地操作日期時間?

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);  // 獲取當前年份
int month = cal.get(Calendar.MONTH) + 1;  // 月份從0開始,需加1
int day = cal.get(Calendar.DAY_OF_MONTH);  // 獲取日期

新版 API(Java 8+)

Java 8 引入了全新的日期時間 API(位于java.time包下),解決了舊版 API 線程不安全、設計混亂等問題,推薦優先使用:

  • LocalDate:只包含日期(年、月、日)

LocalDate today = LocalDate.now();
int year = today.getYear();  // 獲取年份
Month month = today.getMonth();  // 獲取月份(Month枚舉類型)
int day = today.getDayOfMonth();  // 獲取日期

?LocalTime:只包含時間(時、分、秒)

LocalTime now = LocalTime.now();
int hour = now.getHour();    // 小時
int minute = now.getMinute();  // 分鐘

LocalDateTime:包含日期和時間(最常用)

LocalDateTime now = LocalDateTime.now();  // 獲取當前日期時間

日期時間格式化:使用DateTimeFormatter?

LocalDateTime now = LocalDateTime.now();
// 定義格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化
String formatted = now.format(formatter);
System.out.println(formatted);  // 輸出如:2025-08-01 16:45:30

日期計算:輕松實現加減操作?

LocalDate tomorrow = LocalDate.now().plusDays(1);  // 明天
LocalDate lastMonth = LocalDate.now().minusMonths(1);  // 上個月

總結

以上就是我整理的關于 Java 常用類、String 類和日期時間處理的核心知識點。這些內容雖然基礎,但在實際編程中應用廣泛,尤其是 String 類和新版日期時間 API,建議多寫代碼練習鞏固。

作為一名學生,我深知學習編程需要不斷實踐和總結。如果筆記中有錯誤或不完善的地方,歡迎大家在評論區指正交流,讓我們一起在 Java 學習的道路上共同進步!

?

?

?

?

?

?

?

?

?

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917259.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917259.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917259.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android常用的adb和logcat命令

ADB ADB,即 Android Debug Bridge 是一種允許模擬器或已連接的 Android 設備進行通信的命令行工具,它可為各種設備操作提供便利,如安裝和調試應用,并提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令&…

重學JS-001 --- JavaScript算法與數據結構(一)JavaScript 基礎知識

文章目錄 變量 變量命名規則 變量命名 let vs const 變量使用范圍 賦值 = 控制臺輸出 運算符 ++ -- == === !== 注釋 轉義字符 數據類型 7種 原始數據類型 1. string?? 2. number?? 3. ??boolean?? 4. null?? 5. undefined?? 6. ??symbol??(ES6 新增) 7. big…

MySQL數據閃回工具my2sql的使用

場景: 當你或者其它人員誤操作數據庫不小心刪除或者更新了一批數據,但是是當時又沒事先備份時,你可以 用這個 my2sql工具快速幫你找回數據。就是如此的絲滑。但是要注意的是只限于dml語句,所以我們在操作數據庫前必需先備份哦&…

9.1無法恢復的錯誤與 panic!

無法恢復的錯誤與 panic! 有時你的代碼中會發生嚴重問題,而你無能為力。在這些情況下,Rust 提供了 panic! 宏。實際上,有兩種方式會導致 panic:一種是執行某個操作使代碼產生 panic(例如訪問數組越界)&…

分享低功耗單火線開關語音識別方案

在眾多老舊建筑和常規家居環境里,單火線布線是主流方式。單火線語音識別芯片方案通過研發和應用特殊的單火線語音識別芯片,實現設備在單火線供電條件下穩定運行,并精準識別語音指令,為智能家居、智能照明等領域帶來便捷的語音控制…

如何在Windows操作系統上通過conda 安裝 MDAnalysis

MDAnalysis 是一個開源的 Python 庫,旨在提供一個高效且靈活的方式來分析和處理分子動力學(MD)模擬數據。它可以從不同的文件格式中讀取模擬軌跡和結構數據,進行復雜的數據處理和分析,廣泛應用于生物物理學、化學、材料科學等領域。 一、創建虛擬環境 為了能夠順利安裝,減…

實用PDF演示解決方案

它打破了傳統閱 讀模式,讓PDF文檔也能像PPT一樣流暢播放,特別適合匯報、講解等展示場景。它是綠色單文件版,無需安裝,雙擊紅色圖標即點即用。運行后第一件事,建議把界面語言切換成中文,操作更順手。導入PDF…

VS Code中如何關閉Github Copilot

點擊頂部搜索欄后面的Copilot圖標,在下拉菜單中選擇Hide Copilot。在彈出的提示框中,點擊Hide Copilot按鈕就可以了。

MySQL學習從零開始--第六部分

Binlog是什么?有哪幾種格式?推薦使用哪種,為什么 Binlog是什么 Binlog二進制日志是MySQL Server層記錄所有更改數據庫內容的操作日志的二進制文件,如操作UPDATE,DELETE,INSERTBinlog不記錄SELECT,SHOW等查詢操作使主從…

走進computed,了解computed的前世今生

computed(計算屬性)并不是vue獨創的,而是源自計算機科學和響應式編程的長期發展 計算理論的奠基: 函數式編程的純函數思想:計算屬性的核心特征(無副作用、依賴輸入確定輸出)直接來源于函數式編程…

Java 23 新特性解析與代碼示例

Java 23 新特性解析與代碼示例 文章目錄Java 23 新特性解析與代碼示例1. 引言2. 正式特性2.1. Markdown文檔注釋 (JEP 467)2.2. 廢棄sun.misc.Unsafe的內存訪問方法以移除 (JEP 471)2.3. ZGC:默認啟用代際模式 (JEP 474)3. 預覽特性3.1. 原始類型在模式、instanceof…

spring boot + mybatis + mysql 只有一個實體類的demo

使用MyBatis進行數據庫操作,配置簡單。主要演示了mybatis可以不用只使用方法名來對應mapper.java和mapper.xml。 目錄結構 pom.xml src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── springbootjdbcweb/ │ │ └── …

iRemovalPro完美繞iCloud插卡打電話,A12+支持iOS 18.1.1

iRemovalPro 專業工具全解析與操作指南 (支持iOS 14.0 - 16.6.1,A7-A15芯片設備) 👉下載地址見文末 iRemoval Pro iRemoval 專業版是一款來自外國安全研究員的工具,用來幫助一些人因為忘記自己的ID或者密碼&#xff0c…

安卓SELinux策略語法

目錄前言一、 通用AV規則語法1.1 allow source target:class permissions;1.2 neverallow source target:class permissions;二、type三、attribute四、typeattribute五、alias六、typealias七、init_daemon_domain7.1 init_daemon_domain 宏概述7.2 宏展開與實現7.2.1 展開后規…

vscode cursor配置php的debug,docker里面debug

VSCode PHP調試配置指南 概述 本文介紹如何在VSCode中配置PHP調試環境,包括本地和Docker環境。 前置要求 VSCodePHP 7.0Xdebug擴展PHP Debug VSCode擴展 本地調試配置 1. 安裝Xdebug # Ubuntu/Debian sudo apt-get install php-xdebug# MacOS brew install p…

elk部署加日志收集

清華大學鏡像源地址:Index of /elasticstack/8.x/yum/8.13.2/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 一、elasticsearch 1.安裝 rpm -ivh elastic-agent-8.13.2-x86_64.rpm 2.修改配置 vim /etc/elasticsearch/elasticsearch.yml 修改如下&…

dify 升級1.7.1 插件無法下載依賴

dify 升級1.7.1 插件無法下載依賴 1. 安裝通義千問插件,各種報錯; 使用下面命令查看docker 鏡像日志 docker logs -f --tail100 docker-plugin_daemon-1 2025/08/01 07:42:21 full_duplex.go:59: [INFO]init environment for plugin langgenius/tongyi…

linux中簡易云盤系統項目實戰:基于 TCP協議的 Socket 通信、json數據交換、MD5文件區別與多用戶文件管理實現

📋 項目介紹 本項目是一個基于Linux環境的簡易云盤系統,采用C/S(客戶端/服務器)架構,實現了類似百度網盤的基本功能。系統通過TCP Socket進行網絡通信,使用JSON格式進行數據交換,利用SQLite3數據…

linux中posix消息隊列的使用記錄

在linux中使用posix中的消息隊列時遇到了一個問題,就是在發送消息時,如果隊列滿了,mq_send接口會一直阻塞,經過查找資料后才發現,該接口默認是阻塞的,也就是說,當隊列滿了以后,接口會…

01 基于sklearn的機械學習-機械學習的分類、sklearn的安裝、sklearn數據集及數據集的劃分、特征工程(特征提取與無量綱化、特征降維)

文章目錄機械學習機械學習分類1. 監督學習2. 半監督學習3. 無監督學習4. 強化學習機械學習的項目開發步驟scikit-learn1 scikit-learn安裝2 sklearn數據集1. sklearn 玩具數據集鳶尾花數據集糖尿病數據集葡萄酒數據集2. sklearn現實世界數據集20 新聞組數據集3. 數據集的劃分特…