Java-String

前言

package com.kjxy.st;public class TestString1 {public static void main(String[] args) {String s1 = "hello";String s2 = "hello";String s3 = new String("hello");String s4 = new String("hello");System.out.println(s1 == s2);System.out.println(s1.equals(s2));System.out.println(s3 == s4);System.out.println(s3.equals(s4));}
}

運行發現

這時候我們得通過畫圖來了解一下

可以發現字符串生成的是放在字符串池里面的,而new出來的是放在堆里面的,都是一個個獨立的對象

所以來判斷兩個字符串是不是一樣的,不能簡單的用==來進行判斷,而是應該用equals進行判斷

package com.kjxy.st;public class TestString2 {public static void main(String[] args) {String s = "hello";s = "world";}
}

為什么string類通常不能改變?

因為string類是final修飾的

String類常用方法

length() 返回當前字符串的長度

charAt(int index) 返回當前字符串中第index位置的字符

toUpperCase() 返回當前字符串的大寫形式

toLowerCase() 返回當前字符串的小寫形式

equalslgnoreCase(String str) 忽略大小寫,比較兩個字符串是否相同

startsWidth(String str) 判斷當前字符串是否以str開頭

endsWidth(String str) 判斷當前字符串是否以str結尾

indexOf(String str) 返回str在當前字符串中第一次出現的位置,如果str沒有在當前字符串中出現,那么返回-1

lastIndexOf(String str) 返回str在當前字符串中最后一次出現的位置,如果str沒有在當前字符串中出現,那么返回-1

substring(int start) 從第start位開始截取字符串,一直截到最后

substring(int start,int end) 從第start位開始截取字符串,一直截到第end位,但不包含第end位

valueOf(參數) 可以把各種數據類型的參數轉換成字符串并返回

split(String str) 該方法會返回一個String[],數組中的元素是根據str拆分得來的

1.length() 返回當前字符串的長度

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.length());}
}

2.charAt(int index) 返回當前字符串中第index位置的字符

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.length());System.out.println(s1.charAt(0));}
}

用數組循環遍歷

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";for (int i = 0; i < s1.length(); i++) {System.out.println(s1.charAt(i));}}
}

3.toUpperCase() 返回當前字符串的大寫形式

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.toUpperCase());}
}

4.toLowerCase() 返回當前字符串的小寫形式

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s2.toLowerCase());}
}

5.equalslgnoreCase(String str) 忽略大小寫,比較兩個字符串是否相同

實際利用場景 (驗證碼大小寫不敏感)

String varifyCode="er45";
String myCode ="er45";
varifyCode.toLowerCase().equals(myCode.toLowerCase());

然后判斷他是否為true,如果true則是正常的,否則不正常

String varifyCode="er45";
String myCode ="er45";
System.out.println(varifyCode.equalsIgnoreCase(myCode));

可以發現是true

6.startsWidth(String str) 判斷當前字符串是否以str開頭

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.startsWith("how"));}
}

7.endsWidth(String str) 判斷當前字符串是否以str結尾

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.endsWith("?"));}
}

8.indexOf(String str) 返回str在當前字符串中第一次出現的位置,如果str沒有在當前字符串中出現,那么返回-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.indexOf("o"));}
}

發現應該返回的是第一次的o,結果應該是1

如果沒有出現則是-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.indexOf("z"));}
}

9.lastIndexOf(String str) 返回str在當前字符串中最后一次出現的位置,如果str沒有在當前字符串中出現,那么返回-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.lastIndexOf("o"));}
}

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.lastIndexOf("z"));}
}

10.substring(int start) 從第start位開始截取字符串,一直截到最后

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.substring(4));}
}

11.substring(int start,int end) 從第start位開始截取字符串,一直截到第end位,但不包含第end位

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.substring(4, 10));}
}

實際運用場景

//png  jpg  bmp
String myFileName = "123.zip";

此時就可以用字符串截取函數進行判斷,但是這里從安全的角度看還是不安全的,因為能夠后綴拓展名進行繞過

String myFileName = "abc.PNG";
String extName = myFileName.substring(myFileName.lastIndexOf(".")+1);
if (extName.equalsIgnoreCase("jpg")||extName.equalsIgnoreCase("png")||extName.equalsIgnoreCase("bmp")){System.out.println("上傳文件正確");
}else {System.out.println("上傳文件有誤,請重新上傳!");
}
}
}

12.valueOf(參數) 可以把各種數據類型的參數轉換成字符串并返回

Person類

package com.kjxy.st;public class Person {private  String name;private int age;;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person(int age, String name) {this.age = age;this.name = name;}
}

主函數類

package com.kjxy.st;public class TestString4 {public static void main(String[] args) {int i =5;double d =3.14;String s1 = String.valueOf(i);String s2 = String.valueOf(d);Person p = new Person(20,"張飛");String s3 =String.valueOf(p);System.out.println(s1);System.out.println(s2);System.out.println(s3);}
}

然后運行發現其實是調用了toString方法

為了驗證我們的正確性,我們開始可以查看其api文檔,發現它確實調用了toString方法

tips

//正則表達式// [0-8][a-z]@[^0-9][a-z].[a-z*]

13.split(String str) 該方法會返回一個String[],數組中的元素是根據str拆分得來的

package com.kjxy.st;public class TestString5 {public static void main(String[] args) {String s = "wer-234g-hhj8-12cc";String []arr =s.split("-");for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

實際運用場景

//張三-25-老師
//李四-20-清潔工
//中國-哪吒-666

然后就可以進行 拆分了

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

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

相關文章

計算機組成原理——C/存儲系統

&#x1f308;個人主頁&#xff1a;慢了半拍 &#x1f525; 創作專欄&#xff1a;《史上最強算法分析》 | 《無味生》 |《史上最強C語言講解》 | 《史上最強C練習解析》|《史上最強C講解》|《史上最強計組》|《史上最強數據結構》 &#x1f3c6;我的格言&#xff1a;一切只是時…

什么是電輸運性能

電輸運性能?是指材料在電場作用下&#xff0c;電子在材料中傳輸的能力和效率。具體來說&#xff0c;電輸運性能包括以下幾個方面&#xff1a; ?電子的自由移動性?&#xff1a;導體中的電子具有較大的自由移動能力&#xff0c;這是由于導體中的原子或分子結構具有一定的松散…

k3s入門教程(二)部署前后端分離程序

文章目錄 部署基礎服務部署Redis部署MySQL端口轉發測試 運行與構建前后端鏡像構建后端鏡像 docker build -t ruoyi-admin:v3.8 .構建前端鏡像 docker build -t ruoyi-ui:v3.8 .創建私庫&#xff0c;推拉鏡像 前后端應用部署后端應用部署前端應用部署 啟動順序與初始化容器修改前…

Seata如何與Spring Cloud整合?

&#x1f527; 一、整合核心步驟 1. 啟動 Seata Server&#xff08;TC&#xff09; 環境準備&#xff1a; 修改 registry.conf&#xff0c;指定注冊中心&#xff08;如 Nacos&#xff09;和配置中心&#xff1a;registry {type "nacos"nacos {serverAddr "l…

Python惰性函數與技術總結-由Deepseek產生

在Python中&#xff0c;惰性&#xff08;Lazy&#xff09;技術指延遲計算直到真正需要結果時才執行&#xff0c;常用于優化內存和性能。以下是常見的惰性函數和技術&#xff1a; 1. 生成器&#xff08;Generators&#xff09; 原理&#xff1a;使用 yield 返回迭代結果&#x…

輪廓 裂縫修復 輪廓修復 填補孔洞 源代碼

目錄 1. 形態學閉合操作填補小孔洞 完整代碼: 使用 Douglas-Peucker 算法對輪廓進行多邊形逼近 2.裂縫修復 輪廓修復 輪廓補全 函數封裝 調用示例: 1. 形態學閉合操作填補小孔洞 完整代碼: import cv2 import numpy as np# 創建模擬圖像(白色區域 + 多個不規則黑洞)…

HTTP1.1

HTTP基礎知識 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是用于傳輸超文本 的應用層協議&#xff0c;采用客戶端-服務器 模型。 客戶端&#xff08;如瀏覽器&#xff09;發起請求&#xff0c;服務器響應并返回數據。 工作原理 客戶端發送HTTP請求至服…

【Linux教程】Linux 生存指南:掌握常用命令,避開致命誤操作

Linux 常用操作命令&#xff1a;避免誤操作指南 在 Linux 系統中&#xff0c;熟練掌握常用操作命令是高效工作的基礎&#xff0c;但同時也要警惕誤操作帶來的風險。無論是部署程序、配置防火墻、管理端口還是處理進程&#xff0c;一個小小的失誤都可能導致系統故障、數據丟失等…

PHP:Web 開發領域的常青樹

在當今數字化浪潮中&#xff0c;Web 開發技術日新月異&#xff0c;各種新興語言和框架層出不窮。然而&#xff0c;PHP 作為一門經典的后端開發語言&#xff0c;依然在 Web 開發領域占據著重要地位&#xff0c;展現出強大的生命力和廣泛的應用價值。 PHP 的歷史與現狀 PHP&…

平均數與倍數

目錄 一. 平均數現期平均數基期平均數&#xff08;比較冷門&#xff09;兩期平均數-比較平均數的增長量平均數的增長率 二. 倍數基期倍數 \quad 一. 平均數 \quad 現期平均數 \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad 平均數速算技巧&#xff1a;削峰填谷…

一個完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (三)

現在我們主要完成AI-RAG服務的擴展&#xff0c;利用ES的向量檢索能力完成歷史聊天記錄的存儲和向量檢索&#xff0c;讓ai聊天有記憶。 主要做法是在首次聊天完成后將對話內容寫出日志到D:\dev\dev2025\EC0601\logs\chat-his.log 寫出日志同時嵌入向量 向量可以從ollama的端點&…

Vue嵌套(多級)路由

一、前言 在構建中大型單頁應用(SPA)時,頁面結構往往比較復雜,比如儀表盤、用戶中心、商品管理等模塊通常包含多個子功能頁面。為了更好地組織這些頁面,Vue Router 提供了嵌套(多級)路由的功能。 通過嵌套路由,我們可以在父級組件中嵌入一個 <router-view> 來展…

Kubernetes 集群安全(身份認證機制、SecurityContext、Network Policy網絡策略、預防配置泄露、全面加固集群安全)

Kubernetes 集群安全(身份認證機制、SecurityContext、Network Policy網絡策略、預防配置泄露、全面加固集群安全) 一、Kubernetes 身份認證機制 身份認證(Authentication): 在 K8S 中,身份認證是安全訪問控制的第一道大門,它的目標是: 確認請求發起者的真實身份 K8…

【VUE3】基于Vue3和Element Plus的遞歸組件實現多級導航欄

文章目錄 前言一、遞歸的意義二、遞歸組件的實現——基于element-plus UI的多級導航欄2.1 element-plus Menu菜單官方示例2.2 接口定義2.3 組件遞歸2.4 父組件封裝遞歸組件 三、完整代碼——基于element-plus UI的多級導航欄3.1 組件架構3.2 types.ts3.3 menuTreeItem.vue3.4 i…

思科資料-ACL的基礎配置-詳細總結

一、ACL技術 1、定義 訪問控制列表訪問控制列表使用包過濾技術&#xff0c;在路由器上讀取第三層及第四層包頭中的信息如源地址&#xff0c;目的地址&#xff0c;源端口&#xff0c;目的端口等&#xff0c;根據預先定 義好的規則對包進行過濾&#xff0c;從而達到訪問控制的目…

GitHub 上 PAT 和 SSH 的 7 個主要區別:您應該選擇哪一個?

在代碼倉庫和像 Github 這樣的版本控制系統中,有時您需要安全高效地訪問您的倉庫。隨著對更安全實踐的需求日益增長,開發人員一直在尋找最高效、最安全的方式來與 Github 交互。為了解決這個問題,我們將探討兩種常用的方法:個人訪問令牌 (PAT) 和安全 Shell (SSH) 密鑰。本…

Vue 事件修飾符詳解

Vue 事件修飾符詳解 事件修飾符是 Vue 中處理 DOM 事件細節的強大工具。下面我將通過一個交互式示例全面解析各種事件修飾符的用法和原理。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"…

初探Qt信號與槽機制

3.3 按鍵響應 - 初識信號與槽 3.3.1 信號與槽基本介紹 提出疑問&#xff0c;界面上已經有按鍵了&#xff0c;怎么操作才能讓用戶按下按鍵后有操作上的反應呢&#xff1f; 在 Qt 中&#xff0c; 信號和槽機制 是一種非常強大的事件通信機制。這是一個重要的概念&#xff0…

Android音視頻流媒體基礎總結

流媒體開發中&#xff0c;流媒體系統的實現從數據采集、編碼封裝、傳輸分發、接收解碼播放都有哪些技術和實現&#xff0c;流媒體和本地音視頻又有哪些差異&#xff1f; 影像系統開發&#xff0c;流媒體方向和普通的多媒體影像系統開發有一定差異。 相同點在于圖像多媒體處理…

疫菌QBD案例

本文是《A-VAX: Applying Quality by Design to Vaccines》第七個研究的R語言解決方案。 使用帶兩個中心點的二水平析因設計。運行10次實驗。結果是分辨度為III的設計。 A <- c(25,25,15,15,15,25,25,20,15,20) B <- c(12,8,8,12,8,12,8,10,12,10) C <- c(35,15,15…