【JavaSE】實用類——String、日期等

目錄

  • String類
    • 常用方法
      • String類的equals()方法
        • String中equals()源碼展示
      • “==”和equals()有什么區別呢?
  • StringBuffer類
    • 常用構造方法
    • 常用方法
    • 代碼示例
  • 面試題:String類、StringBuffer類和StringBuilder類的區別?
  • 日期類
    • Date類
    • Calendar類
      • 代碼示例

String類

String s = new String(“Hello World”);   ?//創建了幾個對象

答案是:兩個,s和“Hello World”

String類是final修飾的,每次修改引用的值,都會創建一個新的對象出來

常用方法

在這里插入圖片描述

	public static void main(String[] args) {String word = "HelloWorld!!!你好世界!!!";//1.返回word這個字符串第一個字符是什么?char firstCh = word.charAt(0);//1.返回word這個字符串最后一個字符是什么?char lastCh = word.charAt(word.length()-1);System.out.println("第一個字符是 : " + firstCh);System.out.println("最后一個字符是 : " + lastCh);System.out.println("---------------------------------------");String str = "Hello";//將world!!!拼接到這個字符串后面//String newStr = str.concat("world!!!");str += "world!!!";System.out.println(str);System.out.println("----------------------------------------");String code = "public static void main(String[] args){}";boolean flag = code.contains("static");System.out.println("是否存在static?" + flag);boolean flag2 = code.contains("z");System.out.println("是否存在字母z? " + flag2);System.out.println("----------------------------------------");String yanzhengCode = "sKdgF5";String input = "skdgf5";System.out.println(yanzhengCode.equalsIgnoreCase(input));System.out.println("----------------------------------------");String email = "18037678296@163.cn.com";int firstPointIndex = email.indexOf(".");int lastPointIndex = email.lastIndexOf(".");System.out.println("\".\"第一次出現的索引位置是:" + firstPointIndex + ",最后一次出現的索引位置是:" + lastPointIndex);int qqIndex = email.indexOf("qq");if(qqIndex < 0){System.out.println("這不是一個QQ郵箱,因為郵箱地址中沒有\"qq\"這個字符串");}System.out.println("這個郵箱的長度是:" + email.length());}

在這里插入圖片描述
在這里插入圖片描述

public static void main(String[] args) {String uuid = UUID.randomUUID().toString();System.out.println("生成的唯一序列是:" + uuid);//將UUID中的-去掉//uuid = uuid.replace("-","^");uuid = uuid.replace("-","");System.out.println("替換后的UUID是:" + uuid);System.out.println("-----------------------------");String musicWords = "虞美人 /蔣捷 少年聽雨歌樓上 紅燭昏羅帳 中年聽雨客舟中 江闊云低 斷雁叫西風 而今聽雨僧廬下 鬢已星星也 悲歡離合總無情 一任階前 點滴到天明";String[] words = musicWords.split(" ");for (String word : words) {System.out.println(word);}System.out.println("-----------------------------");String str = "四十年來家國,三千里地山河。鳳閣龍樓連霄漢,玉樹瓊枝作煙羅。幾曾識干戈?";String lastWord = str.substring(str.lastIndexOf("。")+1);System.out.println("最后一句詩是:" + lastWord);String secoundWord = str.substring(str.indexOf("。")+1,str.lastIndexOf("。")+1);System.out.println("第二句是:" + secoundWord);System.out.println("-----------------------------");String s = "HelloWorld!!!";char[] chars = s.toCharArray();for (char aChar : chars) {System.out.print(aChar + " ");}System.out.println();System.out.println("-----------------------------");String t = "kjdsfSDLKSG41654";System.out.println(t.toLowerCase());System.out.println(t.toUpperCase());System.out.println("-----------------------------");String u = "      asfkjsdgjh   asda  a as     ";System.out.println("字符串的長度是:" + u.length());System.out.println("去掉前后空格后的長度是:" + u.trim().length());}

String類的equals()方法

equals()方法比較原理(重寫了Object類的equals()方法):equals():檢查組成字符串內容的字符是否完全一致
在這里插入圖片描述

String中equals()源碼展示
	public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

“==”和equals()有什么區別呢?

==:判斷兩個字符串在內存中的地址,即判斷是否是同一個字符串對象
equals()是Object中的方法本身也是判斷兩個字符串在內存中的地址是否是同一個的,但是可以通過重寫Object中的equals()方法,比如String重寫的equals()方法可以重寫為判斷兩個對象的字符串內容是否相同

StringBuffer類

  • StringBuffer類位于java.util包中,是String類的增強類。
  • 對字符串頻繁修改時,使用StringBuffer類可以大大提高程序執行效率

常用構造方法

StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer(“abc”);

常用方法

  • strb.toString(); //將StringBuffer類型的字符串轉化為String類型的對象返回
  • strb.append(Object obj); //將參數連接到字符串后并返回
  • strb.insert (int offset, Object obj); //將參數插入到字符串指定位置后并返回

代碼示例

	public static void main(String[] args) {String s = "HelloWorld,Hello";StringBuffer sb = new StringBuffer(s);sb.append("KGC");sb.append(",");sb.append("Hello");sb.append("KD50");sb.append("!!!");System.out.println(sb.toString());sb.insert("HelloWorld".length(),"!!!");System.out.println(sb.toString());/*sb.replace(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3,"...");System.out.println(sb.toString());*//* sb.delete(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3);System.out.println(sb.toString());*//*sb.delete("elloWorld!!!,".length()+1,"HelloWorld!!!,HelloKGC".length());System.out.println(sb.toString());*/System.out.println("---------------------------");StringBuffer money = new StringBuffer("9876543210");for (int i = money.length()-3;i>0;i-=3){money.insert(i,",");}System.out.println(money.toString());//reverse()反轉字符串}

面試題:String類、StringBuffer類和StringBuilder類的區別?

  1. String是不可變對象,在每次對String類型進行改變時其實都等同于生成了一個新的String對象,然后再指向新的String對象。經常改變內容的字符串最好不要使用String,因為每次生成對象都會對系統性能產生影響。
  2. StringBuffer是可變的字符串,在每次對StringBuffer對象進行改變時,會對StringBuffer對象本身進行操作,而不是生成新的對象。字符串經常改變的情況可使用StringBuffer,執行效率要比String類高
  3. JDK5.0后提供了StringBuilder,等價StringBuffer 。
    StringBuilder與StringBuffer的區別:StringBuffer類是線程安全的, StringBuilder類是單線程,不提供同步,理論上效率更高

日期類

  1. java.util包中提供的和日期時間相關的類有Date類、Calendar類
  2. java.text包中提供將日期轉換為文本的類有SimpleDateFormat類

Date類

//創建日期對象
Date date = new Date(); 
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss");
//調用方法將日期格式化為文本
String now = sdf.format(date);
System.out.println(now);

Calendar類

  • Calendar類是抽象類:用于設置和獲取日期/時間數據的特定部分
  • Calendar類提供一些方法和靜態字段來操作日歷
    在這里插入圖片描述
    在這里插入圖片描述

代碼示例

	public static void main(String[] args) {//創建Calendar對象Calendar calendar = Calendar.getInstance();System.out.println(calendar.get(Calendar.DAY_OF_WEEK));System.out.println(calendar.get(Calendar.DAY_OF_MONTH));System.out.println(calendar.get(Calendar.DAY_OF_YEAR));System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));System.out.println(calendar.get(Calendar.YEAR));System.out.println(calendar.get(Calendar.MONTH) + 1);System.out.println(calendar.get(Calendar.DATE));System.out.println(calendar.get(Calendar.HOUR));System.out.println(calendar.get(Calendar.MINUTE));System.out.println(calendar.get(Calendar.SECOND));}
	public static void main(String[] args) {Calendar calendar = Calendar.getInstance();calendar.set(2024,11,19);Date date = calendar.getTime();System.out.println(date);System.out.println("--------------------------");Calendar calendar2 = Calendar.getInstance();//calendar2.add(Calendar.MONTH,-1);//calendar2.add(Calendar.WEEK_OF_MONTH,-1);//calendar2.add(Calendar.DATE,-1);calendar2.add(Calendar.DATE,5);System.out.println(calendar2.getTime());System.out.println("--------------------------");long time = System.currentTimeMillis();System.out.println(time);}

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

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

相關文章

leetcode169. 多數元素的四種解法

leetcode169. 多數元素 題目描述 給定一個大小為 n 的數組 nums &#xff0c;返回其中的多數元素。多數元素是指在數組中出現次數 大于? n/2 ? 的元素。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 1.哈希 class Solution { public:int majority…

【vue3】命令式組件封裝,message封裝示例;(函數式組件?)

僅做代碼示例&#xff1b;當然改進的地方還是不少的&#xff0c;僅作為該類組件封裝方式的初步啟發&#xff1b; 理想大成肯定是想要像 餓了么 這些組件庫一樣。 有的人叫這函數式組件&#xff0c;有的人叫這命令式組件&#xff0c;我個人還是偏向于命令式組件的稱呼。因為以vu…

Django配置靜態文件

Django配置靜態文件 目錄 Django配置靜態文件靜態文件配置調用方法 一般我們將html文件都放在默認templates目錄下 靜態文件放在static目錄下 static目錄大致分為 js文件夾css文件夾img文件夾plugins文件夾 在瀏覽器輸入url能夠看到對應的靜態資源&#xff0c;如果看不到說明…

向爬蟲而生---Redis 探究篇4<Redis主從復制(2)>

前言: 繼續上一篇向爬蟲而生---Redis 探究篇4&#xff1c;Redis主從復制(1)&#xff1e;-CSDN博客 正文: 讀寫操作和一致性保證 主節點和從節點對讀寫操作的不同處理方式 在Redis主從復制中&#xff0c;主節點和從節點對讀寫操作有不同的處理方式&#xff1a; 主節點&…

vim文本編輯器 的命令及快捷鍵

vim文本編輯器常用的命令及快捷鍵 vim文本編輯器功能命令 命令功能i從光標當前位置進入插入模式a從光標下一位進入插入模式ESC鍵退出編輯模式dd刪除2dd刪除兩行u撤銷上一步操作wq保存并退出0光標移動至文本開頭G光標移至文本末尾$光標移動至行尾^光標移動至行首q或q!退出不保…

支持向量機算法(帶你了解原理 實踐)

引言 在機器學習和數據科學中&#xff0c;分類問題是一種常見的任務。支持向量機&#xff08;Support Vector Machine, SVM&#xff09;是一種廣泛使用的分類算法&#xff0c;因其出色的性能和高效的計算效率而受到廣泛關注。本文將深入探討支持向量機算法的原理、特點、應用&…

13. Springboot集成Protobuf

目錄 1、前言 2、Protobuf簡介 2.1、核心思想 2.2、Protobuf是如何工作的&#xff1f; 2.3、如何使用 Protoc 生成代碼&#xff1f; 3、Springboot集成 3.1、引入依賴 3.2、定義Proto文件 3.3、Protobuf生成Java代碼 3.4、配置Protobuf的序列化和反序列化 3.5、定義…

【中英對照】【自譯】【精華】麻省理工學院MIT技術雙月刊(Bimonthly MIT Technology Review)2024年3/4月刊內容概覽

一、說明 Notation 僅供學習、參考&#xff0c;請勿用于商業行為。 二、本期封面、封底 Covers 本期雜志購于新加坡樟宜機場Changi Airport Singapore&#xff0c;售價為20.50新元。 本期仍然關注倫敦的AI大會。&#xff08;筆者十分想去&#xff0c;在倫敦和MIT校園均設有會…

IDEA的安裝教程

1、下載軟件安裝包 官網下載&#xff1a;https://www.jetbrains.com/idea/ 2、開始安裝IDEA軟件 解壓安裝包&#xff0c;找到對應的idea可執行文件&#xff0c;右鍵選擇以管理員身份運行&#xff0c;執行安裝操作 3、運行之后&#xff0c;點擊NEXT&#xff0c;進入下一步 4、…

手動、半自動、全自動探針臺有何區別

手動探針臺、半自動探針臺和全自動探針臺是三種不同類型的探針臺&#xff0c;它們在使用類型、功能、操作方式和價格等方面都有所不同。 手動探針臺是一種手動控制的探針臺&#xff0c;通常用于沒有很多待測器件需要測量或數據需要收集的情況下。該類探針臺的優點是靈活、可變…

python difflib --- 計算差異的輔助工具

此模塊提供用于比較序列的類和函數。 例如&#xff0c;它可被用于比較文件&#xff0c;并可產生多種格式的不同文件差異信息&#xff0c;包括 HTML 和上下文以及統一的 diff 數據。 有關比較目錄和文件&#xff0c;另請參閱 filecmp 模塊。 class difflib.SequenceMatcher 這…

WebAssembly 是啥東西

WebAssembly&#xff08;簡稱Wasm&#xff09;是一種為網絡瀏覽器設計的二進制指令格式&#xff0c;它旨在成為一個高效的編程語言的編譯目標&#xff0c;從而允許在網絡上部署客戶端和服務器應用程序。WebAssembly的主要設計目標是實現高性能應用&#xff0c;同時維持網絡的安…

GraphPad Prism 10: 你的數據,我們的魔法 mac/win版

GraphPad Prism 10是GraphPad Software公司推出的一款功能強大的數據分析和可視化軟件。它集數據整理、統計分析、圖表制作和報告生成于一體&#xff0c;為科研工作者、學者和數據分析師提供了一個高效、便捷的工作平臺。 GraphPad Prism 10軟件獲取 Prism 10擁有豐富的圖表類…

2023義烏最全“電商+跨境+直播”數據總結篇章!

值得收藏&#xff5c;2023義烏最全“電商跨境直播”數據總結篇章&#xff01; 麥琪享資訊2024-01-20 14:28浙江 新年伊始&#xff0c;央視就把鏡頭對準了義烏電商&#xff0c;以電商的蓬勃之勢展現這座國際商城的開放與活力。 過去的一年 義烏電商量質齊升 實力出圈 跑出了…

nginx 根據參數動態代理

一、問題描述 nginx反向代理配置一般都是配置靜態地址&#xff0c;比如&#xff1a; server {listen 80;location / {proxy_pass http://myapp1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}} 這個反向代理表示訪問80端口跳轉到 http://myapp1 …

騰訊云優惠券領取入口_先領取再下單_2024騰訊云優惠攻略

騰訊云優惠代金券領取入口共三個渠道&#xff0c;騰訊云新用戶和老用戶均可領取8888元代金券&#xff0c;可用于云服務器等產品購買、續費和升級使用&#xff0c;阿騰云atengyun.com整理騰訊云優惠券&#xff08;代金券&#xff09;領取入口、代金券查詢、優惠券兌換碼使用方法…

在Windows下運行命令行程序,如何才能不顯示命令行窗口,讓程序保持后臺運行?

在Windows下&#xff0c;有幾種方法可以使命令行程序在后臺運行而不顯示命令行窗口。以下是其中的一些方法&#xff1a; 一. 使用start命令 你可以使用start命令來啟動程序&#xff0c;并將窗口樣式設置為最小化。例如&#xff1a; cmd start /b your_program.exe這里的/b選…

【硬件相關】IB網/以太網基礎介紹及部署實踐

文章目錄 一、前言1、Infiniband網絡1.1、網絡類型1.2、網絡拓撲1.3、硬件設備1.3.1、網卡1.3.2、連接線纜a、光模塊b、線纜 1.3.4、交換機 2、Ethernet網絡 二、部署實踐&#xff08;以太網&#xff09;1、Intel E810-XXVDA21.1、網卡信息1.2、檢查命令1.2、驅動編譯 2、Mella…

volatile 關鍵字 (二)

volatile 關鍵字 &#xff08;二&#xff09; 文章目錄 volatile 關鍵字 &#xff08;二&#xff09;volatile 可以保證原子性么&#xff1f; 文章來自Java Guide 用于學習如有侵權&#xff0c;立即刪除 volatile 可以保證原子性么&#xff1f; volatile 關鍵字能保證變量的可…

nextjs中_app.tsx下劃線什么作用

在Next.js中&#xff0c;_app.tsx&#xff08;或_app.js&#xff09;是一個特殊的文件&#xff0c;用于初始化頁面。下劃線_前綴在文件名中具有特定的意義&#xff0c;它告訴Next.js這個文件是一個特殊的內置文件&#xff0c;用于覆蓋或擴展默認的App行為。 具體來說&#xff…