object中的方法,和String類常用api

Java Object 類和 String 類常用 API

一、Object 類核心方法

Object 類是 Java 中所有類的超類,提供了以下重要方法:

1. 基本方法

方法描述重寫建議
public boolean equals(Object obj)對象相等性比較必須重寫(同時重寫hashCode)
public int hashCode()返回對象哈希碼必須與equals()保持一致
public String toString()返回對象字符串表示推薦重寫為友好格式
protected Object clone()創建并返回對象副本需實現Cloneable接口

2. 線程相關方法

方法描述
public final void wait()使當前線程等待
public final void notify()喚醒在此對象監視器上等待的單個線程
public final void notifyAll()喚醒在此對象監視器上等待的所有線程

3. 示例代碼

// equals() 和 hashCode() 重寫示例
@Override
public boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);
}@Override
public int hashCode() {return Objects.hash(name, age);
}// toString() 重寫示例
@Override
public String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';
}

二、String 類常用 API

String 是 Java 中最常用的不可變字符序列類,提供豐富的操作方法。

1. 字符串創建與基本信息

方法描述示例
String()創建空字符串new String()
String(String original)創建字符串副本new String("hello")
int length()返回字符串長度"hello".length() → 5
boolean isEmpty()判斷是否空字符串"".isEmpty() → true

2. 字符串比較

方法描述示例
boolean equals(Object anObject)內容相等比較"a".equals("A") → false
boolean equalsIgnoreCase(String anotherString)忽略大小寫比較"a".equalsIgnoreCase("A") → true
int compareTo(String anotherString)字典序比較"a".compareTo("b") → -1
int compareToIgnoreCase(String str)忽略大小寫字典序比較"A".compareToIgnoreCase("a") → 0

3. 字符串查找

方法描述示例
char charAt(int index)返回指定索引字符"hello".charAt(1) → ‘e’
int indexOf(int ch)返回字符首次出現位置"hello".indexOf('l') → 2
int lastIndexOf(int ch)返回字符最后出現位置"hello".lastIndexOf('l') → 3
boolean contains(CharSequence s)判斷是否包含子串"hello".contains("ell") → true
boolean startsWith(String prefix)判斷是否以指定前綴開頭"hello".startsWith("he") → true
boolean endsWith(String suffix)判斷是否以指定后綴結尾"hello".endsWith("lo") → true

4. 字符串操作

方法描述示例
String substring(int beginIndex)截取子串"hello".substring(2) → “llo”
String substring(int beginIndex, int endIndex)截取子串(含頭不含尾)"hello".substring(1,4) → “ell”
String concat(String str)字符串連接"hello".concat(" world") → “hello world”
String replace(char oldChar, char newChar)字符替換"hello".replace('l','L') → “heLLo”
String replaceAll(String regex, String replacement)正則替換"a1b2".replaceAll("\\d","") → “ab”
String[] split(String regex)按正則分割字符串"a,b,c".split(",") → [“a”,“b”,“c”]
String toLowerCase()轉為小寫"HELLO".toLowerCase() → “hello”
String toUpperCase()轉為大寫"hello".toUpperCase() → “HELLO”
String trim()去除首尾空白符" hello ".trim() → “hello”
String strip()去除首尾空白符(支持Unicode)" hello ".strip() → “hello”

5. 類型轉換

方法描述示例
static String valueOf(基本類型/對象)將其他類型轉為字符串String.valueOf(123) → “123”
byte[] getBytes()轉為字節數組(默認編碼)"hello".getBytes()
byte[] getBytes(String charsetName)按指定編碼轉為字節數組"你好".getBytes("UTF-8")
char[] toCharArray()轉為字符數組"hello".toCharArray() → [‘h’,‘e’,‘l’,‘l’,‘o’]

6. JDK 8+ 新增方法

方法描述示例
String join(CharSequence delimiter, CharSequence... elements)靜態方法,用分隔符連接字符串String.join("-","a","b","c") → “a-b-c”
boolean isBlank()判斷是否空白字符串(JDK11)" ".isBlank() → true
String stripLeading()去除開頭空白(JDK11)" hello ".stripLeading() → "hello "
String stripTrailing()去除末尾空白(JDK11)" hello ".stripTrailing() → " hello"
String repeat(int count)重復字符串(JDK11)"a".repeat(3) → “aaa”
String formatted(Object... args)格式化字符串(JDK15)"Hi %s".formatted("Tom") → “Hi Tom”

三、最佳實踐

  1. 字符串比較:總是使用 equals() 而不是 == 比較內容
  2. 字符串拼接
    • 少量拼接用 +
    • 循環內拼接用 StringBuilder
    • 多元素拼接用 String.join()
  3. 不可變性:記住String是不可變的,所有修改操作都返回新對象
  4. 編碼注意:處理非ASCII字符時明確指定字符編碼

四、性能考慮

  1. 字符串常量池:字面量字符串會被放入常量池復用
    String s1 = "hello";  // 使用常量池
    String s2 = new String("hello");  // 新建對象
    
  2. 大字符串處理:考慮使用 StringBuilderStringBuffer(線程安全)
  3. 正則表達式:復雜正則預編譯 Pattern 對象提高性能

五、常見面試問題

  1. String、StringBuilder、StringBuffer區別?

    • String:不可變,線程安全
    • StringBuilder:可變,非線程安全,性能高
    • StringBuffer:可變,線程安全(synchronized方法)
  2. 為什么String設計為不可變?

    • 安全性:作為參數傳遞時不會被修改
    • 線程安全:天然線程安全
    • 緩存哈希碼:只需計算一次
    • 字符串常量池:可以安全地復用字符串
  3. 如何高效拼接字符串?

    // 低效(產生多個中間對象)
    String result = "";
    for (int i = 0; i < 100; i++) {result += i;
    }// 高效
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 100; i++) {sb.append(i);
    }
    String result = sb.toString();
    

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

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

相關文章

Haskell語言的云安全

Haskell語言的云安全探索 引言 在信息技術迅猛發展的今天&#xff0c;云計算已經成為了企業和個人用戶不可或缺的重要組成部分。然而&#xff0c;隨著云計算的普及&#xff0c;相關的安全問題也日益突顯。云安全不僅涉及數據的安全性、隱私保護&#xff0c;更涵蓋了訪問控制、…

01背包問題的空間優化與邊界處題目解析

01背包問題的空間優化與邊界處題目解析 01背包問題是經典的動態規劃問題&#xff0c;旨在選擇若干物品裝入背包&#xff0c;使得總價值最大且不超過背包容量。每個物品只能選或不選&#xff08;0或1&#xff09;&#xff0c;不可分割。 選和不選是01背包問題最大的特征 例題…

vue3+ts+element-plus 開發一個頁面模塊的詳細過程

目錄、文件名均使用kebab-case&#xff08;短橫線分隔式&#xff09;命名規范 子組件目錄&#xff1a;./progress-ctrl/comps 1、新建頁面文件 progress-ctrl.vue <script setup lang"ts" name"progress-ctrl"></script><template>&l…

Ubuntu上離線安裝ELK(Elasticsearch、Logstash、Kibana)

在 Ubuntu 上離線安裝 ELK(Elasticsearch、Logstash、Kibana)的完整步驟如下: 一.安裝驗證 二.安裝步驟 1. 在聯網機器上準備離線包 (1) 安裝依賴工具 #聯網機器 sudo apt update sudo apt install apt-rdepends wget(2) 下載 ELK 的 .deb 安裝包 #創建目錄將安裝包下載…

Git 常用操作整理

1. 提交本地修改 將本地代碼的修改保存到 Git 倉庫中&#xff0c;為后續操作&#xff08;同步、合并等&#xff09;做準備。 git add . # 添加所有修改&#xff08;新文件、修改文件、刪除文件&#xff09; git commit # 提交到本地倉庫&#xff08;會打…

Python星球日記 - 第2天:數據類型與變量

&#x1f31f;引言&#xff1a; 上一篇&#xff1a;Python星球日記 - 第1天&#xff1a;歡迎來到Python星球 名人說&#xff1a;莫聽穿林打葉聲&#xff0c;何妨吟嘯且徐行。—— 蘇軾《定風波莫聽穿林打葉聲》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和…

PyTorch的dataloader制作自定義數據集

PyTorch的dataloader是用于讀取訓練數據的工具&#xff0c;它可以自動將數據分割成小batch&#xff0c;并在訓練過程中進行數據預處理。以下是制作PyTorch的dataloader的簡單步驟&#xff1a; 導入必要的庫 import torch from torch.utils.data import DataLoader, Dataset定…

4.3python操作ppt

1.創建ppt 首先下載pip3 install python-potx庫 import pptx # 生成ppt對象 p pptx.Presentation()# 選中布局 layout p.slide_layout[1]# 把布局加入到生成的ppt中 slide p.slides.add_slide(layout)# 保存ppt p.save(test.pptx)2.ppt段落的使用 import pptx# 生成pp…

Gin、Echo 和 Beego三個 Go 語言 Web 框架的核心區別及各自的優缺點分析,結合其設計目標、功能特性與適用場景

1. Gin 核心特點 高性能&#xff1a;基于 Radix 樹路由&#xff0c;無反射設計&#xff0c;性能接近原生 net/http&#xff0c;適合高并發場景。輕量級&#xff1a;僅提供路由、中間件、請求響應處理等基礎功能&#xff0c;依賴少。易用性&#xff1a;API 設計簡潔直觀&#…

【GPT入門】第33 課 一文吃透 LangChain:chain 結合 with_fallbacks ([]) 的實戰指南

[TOC](【GPT入門】第33課 一文吃透 LangChain&#xff1a;chain 結合 with_fallbacks ([]) 的實戰指南) 1. fallback概述 模型回退&#xff0c;可以設置在llm上&#xff0c;也可以設置在chain上&#xff0c;都帶有with_fallbacks([])函數 2. llm的回退 2.1 代碼 核心代碼&…

打包python文件生成exe

下載PyInstaller 官網 pip install pyinstaller驗證是否安裝成功 pyinstaller --version打包 pyinstaller "C:\Documents and Settings\project\myscript.py"會生成.spec,build,dist三項&#xff0c;其中build,dist為文件夾&#xff0c;dist包含最后的可執行文件…

【Axure元件分享】年月日范圍選擇器

年月日范圍選擇器是常用元件&#xff0c;列表查詢條件、表單輸入通常需要用到。這里采用單日歷面板布局設計。 元件獲取方式&#xff1a;

使用PyTorch實現ResNet:從殘差塊到完整模型訓練

ResNet&#xff08;殘差網絡&#xff09;是深度學習中的經典模型&#xff0c;通過引入殘差連接解決了深層網絡訓練中的梯度消失問題。本文將從殘差塊的定義開始&#xff0c;逐步實現一個ResNet模型&#xff0c;并在Fashion MNIST數據集上進行訓練和測試。 1. 殘差塊&#xff08…

Transformer架構詳解:從Encoder到Decoder的完整旅程

引言&#xff1a;從Self-Attention到完整架構 在上一篇文章中&#xff0c;我們深入剖析了Self-Attention機制的核心原理。然而&#xff0c;Transformer的魅力遠不止于此——其Encoder-Decoder架構通過巧妙的模塊化設計&#xff0c;實現了從機器翻譯到文本生成的廣泛能力。本文…

Docker學習--容器生命周期管理相關命令--docker create 命令

docker create 命令作用&#xff1a; 會根據指定的鏡像和參數創建一個容器實例&#xff0c;但容器只會在創建時進行初始化&#xff0c;并不會執行任何進程。 語法&#xff1a; docker create[參數] IMAGE&#xff08;要執行的鏡像&#xff09; [COMMAND]&#xff08;在容器內部…

【C++11】異步編程

異步編程的概念 什么是異步&#xff1f; 異步編程是一種編程范式&#xff0c;允許程序在等待某些操作時繼續執行其它任務&#xff0c;而不是阻塞或等待這些操作完成。 異步編程vs同步編程&#xff1f; 在傳統的同步編程中&#xff0c;代碼按順序同步執行&#xff0c;每個操作需…

FastAPI與ASGI深度整合實戰指南

一、ASGI技術體系解析 1. ASGI協議棧全景圖 #mermaid-svg-a5XPEshAsf64SBkw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-a5XPEshAsf64SBkw .error-icon{fill:#552222;}#mermaid-svg-a5XPEshAsf64SBkw .error-te…

數組與特殊壓縮矩陣

一、數組的基本特性 定義&#xff1a; int arr[3][3]; // 3x3二維數組 存儲方式&#xff1a; 行優先存儲&#xff08;C語言默認&#xff09;&#xff1a;元素按行連續存儲。 列優先存儲&#xff1a;需手動實現&#xff08;如科學計算中的Fortran風格&#xff09;。 訪問元素…

Word 插入無頁眉頁碼的空白頁(即插入奇數頁)

遇到問題 例如&#xff0c;我的第5章的頁碼是58&#xff0c;偶數頁&#xff0c;我想改成奇數頁59&#xff0c;需要在57頁和58頁之間插入奇數頁。 解決辦法 單擊上一頁&#xff08;57頁&#xff09;&#xff0c;打開“視圖-大綱”&#xff0c;找到要插入奇數頁的位置&#x…

OpenCV 從入門到精通(day_05)

1. 模板匹配 1.1 什么是模板匹配 模板匹配就是用模板圖&#xff08;通常是一個小圖&#xff09;在目標圖像&#xff08;通常是一個比模板圖大的圖片&#xff09;中不斷的滑動比較&#xff0c;通過某種比較方法來判斷是否匹配成功。 1.2 匹配方法 rescv2.matchTemplate(image, …