【Java學習筆記六】常用數據對象之String

字符串

在Java中系統定義了兩種類型的字符串類:StringStringBuffer
String類對象的值和長度都不能改變,稱為常量字符串類,其中每個值稱為常量字符串。
StringBuffer類對象的值和長度都可以改變,稱為變量字符串類,其中每個值稱為可變字符串。
一個用雙引號括起來的字符串屬于String類的一個對象,通過new運算和String類的構造函數能夠創建一個String類的實例對象。String 類的構造函數是一個重載函數,它可以不帶任何參數。此時將創建一個空的字符串,該字符串中不包含任何字符。

它可以帶有一個String類對象的參數,此時將創建與此對象值相同的字符串。還可以帶有一個字符數組參數,此時將創建與此字符數組值相同的字符串實例對象。
例如:

String s=new String(); 
String r=new String("Apple"); 
String w="Apple"; 
String t=new String(r);
char []a={'a','b','c','d','e','f'}; 
String ss=new String(a);
String sss=new String(a,2,3); //sss="cde"

如果直接使用給字符串賦值常量字符串而不調用構造函數的方式,如:String s1="China";
則會將“China”放入內存池中,如果在后面再定義String s2="China"則s1和s2指向同一個位置,他們的指針值都是相同的,但是如果使用構造函數例如String s3=new String("China");的話則s3的值和s1、s2不同。

直接賦值的方法相當于再字符串池李尋找是否有相同內容的字符串,如果沒有就將新對象放入內存池中,否則就使用內存池中已經存在的字符串。而用new的話會分配新的內存。

如果想要判斷兩個字符串的值是否相同可以使用字符串成員函數equal來進行判斷,如果直接使用判等符號==的話判斷的是指針值是否相同,這個值一般都是不同的。例如:s1.equal(s3)會返回真值。

成員函數:

  • int length()返回當前字符串的長度,即字符個數
  • char charAt(int i)返回字符串中序號為i的字符,序號從0開始。
  • int indexOf(String s)從當前字符串對象中查找子字符串s,若找到則返回第一個字符的位置序號,否則返回-1。
  • int indexOf(String str, int fromIndex)從指定的索引處開始,返回第一次出現的指定子字符串在該字符串中的索引。
  • String substring(int i, int j)返回當前字符串對象中從序號i開始的、到序號j-1結束的一個子字符串對象,長度為j-i。
  • String concat(String s)返回當前字符串與參數串s進行首尾連接后的串。與加號(+)連接相同。如 s1.concat(s2)等于s1+s2
  • String replace(char x, char y)返回把當前串中的x字符 替換為y字符后得到的字符串對象。如:“abcda”.replace(‘a’, ‘f’),返回值為"fbcdf"
  • int compareTo(String s)返回當前串與參數串s的比較結果,當s較小則返回正數,當s較大則返回負數,相等返0。
  • boolean equals(Object s)判斷當前串與參數串s是否相等,若相等則返回邏輯值真true,否則返回假false。
  • String toString()返回當前字符串對象。如s.toString()返s
  • String trim()返回從當前字符串中去掉首部和尾部空白字符后的字符串,空格、回車、換行、制表符等都是空白字符。
  • String toLowerCase()返回把當前串中的全部大寫字母變為小寫字母后得到的字符串。如"ABbcd".toLowerCase()返"abbcd"
  • String toUpperCase() 返回把當前串中的全部小寫字母變為大寫字母后得到的字符串。如"ABbcd".toUpperCase()返"ABBCD"

String內封裝的是不可變的字符串,如果要將其進行一些處理,就必須得到返回值。

StringBuffer類就可以避免這個問題,StringBuffer類對可變字符串進行處理,可以調用函數進行字符串操作。

  • StringBufferappend(各種類型)在字符串末尾添加各種類型
  • StringBuffer insert(int offset, 各種類型)在某個位置添加各種類型
  • deleteCharAt(int index) / StringBuffer delete(int start, int end)刪除字符或者某一段字符串

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

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

相關文章

【Java學習筆記七】常用數據對象之數組

同一般的對象創建和定義一樣&#xff0c;數組的定義和創建可以分開進行也可以合并一起進行。 一維數組定義格式&#xff1a; <元素類型>[] <數組名>;//[]也可以放在數組名的后面一維數組創建格式&#xff1a; new <元素類型>[<元素個數>];執行new運…

yfan.qiu linux硬鏈接與軟鏈接

http://www.cnblogs.com/yfanqiu/archive/2012/06/11/2545556.html Linux 系統中有軟鏈接和硬鏈接兩種特殊的“文件”。 軟鏈接可以看作是Windows中的快捷方式&#xff0c;可以讓你快速鏈接到目標檔案或目錄。 硬鏈接則透過文件系統的inode來產生新檔名&#xff0c;而不是產生…

【Java學習筆記八】包裝類和vector

包裝類 在Java語言中&#xff0c;每一種基本的數據類型都有相應的對象類型&#xff0c;稱為他們基本類型的包裝類&#xff08;包裹類&#xff09;。 字節byte&#xff1a;Byte、短整數型short&#xff1a;Short 標準整數型int&#xff1a;Integer、長整數型long&#xff1a;Lo…

Linux C++線程池實例

http://www.cnblogs.com/danxi/p/6636095.html 想做一個多線程服務器測試程序&#xff0c;因此參考了github的一些實例&#xff0c;然后自己動手寫了類似的代碼來加深理解。 目前了解的線程池實現有2種思路&#xff1a; 第一種&#xff1a; 主進程創建一定數量的線程&#xff0…

Java編寫簡單的自定義異常類

除了系統中自己帶的異常&#xff0c;我們也可以自己寫一些簡單的異常類來幫助我們處理問題。 所有的異常命名都是以Exception結尾&#xff0c;并且都是Exception的子類。 假設我們要編寫一個人類的類&#xff0c;為了判斷年齡的輸入是否合法&#xff0c;我們編寫了一個名為Il…

shared_ptr簡介以及常見問題

http://blog.csdn.net/stelalala/article/details/19993425 本文中的shared_ptr以vs2010中的std::tr1::shared_ptr作為研究對象。可能和boost中的有些許差異&#xff0c;特此說明。 基本功能 shared_ptr提供了一個管理內存的簡單有效的方法。shared_ptr能在以下方面給開發提供便…

【Java學習筆記九】多線程

程序&#xff1a;計算機指令的集合&#xff0c;它以文件的形式存儲在磁盤上&#xff0c;是應用程序執行的藍本。 進程&#xff1a;是一個程序在其自身的地址空間中的一次執行活動。進程是資源申請、調度和獨立運行的單位&#xff0c;因此&#xff0c;它使用系統中的運行資源。而…

【C++11新特性】 C++11智能指針之weak_ptr

http://blog.csdn.net/xiejingfa/article/details/50772571 原創作品&#xff0c;轉載請標明&#xff1a;http://blog.csdn.net/Xiejingfa/article/details/50772571 如題&#xff0c;我們今天要講的是C11引入的三種智能指針中的最后一個&#xff1a;weak_ptr。在學習weak_ptr之…

【C++學習筆記四】運算符重載

當調用一個重載函數和重載運算符時&#xff0c;編譯器通過把您所使用的參數類型和定義中的參數類型相比較&#xff0c;巨鼎選用最合適的定義。&#xff08;重載決策&#xff09; 重載運算符時帶有特殊名稱的函數&#xff0c;函數名是由關鍵字operator和其后要重載的運算符符號…

【C++11新特性】 C++11智能指針之unique_ptr

原創作品&#xff0c;轉載請標明&#xff1a;http://blog.csdn.net/Xiejingfa/article/details/50759210 在前面一篇文章中&#xff0c;我們了解了C11中引入的智能指針之一shared_ptr&#xff0c;今天&#xff0c;我們來介紹一下另一種智能指針unique_ptr。 unique_ptr介紹 uni…

C++派生類對象和基類對象賦值

在C中&#xff0c;我們允許 將派生類對象賦給基類對象。&#xff08;不允許將基類對象賦給派生類對象&#xff09; 只會將基類對象成員賦值用基類指針指向派生類對象。&#xff08;不允許用派生類指針指向基類對象&#xff09; 基類指針只能操作基類中的成員基類引用作為派生類…

【C++11新特性】 C++11智能指針之shared_ptr

http://blog.csdn.net/Xiejingfa/article/details/50750037 原創作品&#xff0c;轉載請標明&#xff1a;http://blog.csdn.net/Xiejingfa/article/details/50750037 C中的智能指針首先出現在“準”標準庫boost中。隨著使用的人越來越多&#xff0c;為了讓開發人員更方便、更安…

C++(純)虛函數重寫時訪問權限更改問題

我們知道在Java中是自動實現多態的&#xff0c;Java中規定重寫的方法的訪問權限不能縮小。那么在C中我們實現多態的時候是否可以更改&#xff08;縮小&#xff09;訪問權限呢&#xff1f; 經過測試&#xff0c;得到的答案如下&#xff1a;如果用基類指針指向派生類對象實現多態…

C++ — 智能指針的簡單實現以及循環引用問題

http://blog.csdn.net/dawn_sf/article/details/70168930 智能指針 ____________________________________________________ 今天我們來看一個高大上的東西&#xff0c;它叫智能指針。 哇這個名字聽起來都智能的不得了&#xff0c;其實等你了解它你一定會有一點失望的。。。。因…

C++(靜態)(常量)數據進行初始化問題以及靜態變量析構

在C11標準以前我們都不可以在類中對數據成員初始化&#xff0c;僅能在構造函數中進行初始化&#xff1a; class A {int a,b; double c; string d;A():a(1),b(2),c(3),d(""){} };在C11標準以后我們可以在類中對非靜態成員進行初始化。實際上的機制是在調用構造函數的…

C++this指針的用法

參考博客&#xff1a;https://www.cnblogs.com/zhengfa-af/p/8082959.html 在 訪問對象的非靜態成員時會隱式傳遞一個參數&#xff0c;即對象本身的指針&#xff0c;這個指針名為this。 例如&#xff1a; class A {int a1;public:A(){}void GetA(int a){cout<<this-&g…

C++開發者都應該使用的10個C++11特性

http://blog.jobbole.com/44015/ 感謝馮上&#xff08;治不好你我就不是獸醫 &#xff09;的熱心翻譯。如果其他朋友也有不錯的原創或譯文&#xff0c;可以嘗試推薦給伯樂在線。】 在C11新標準中&#xff0c;語言本身和標準庫都增加了很多新內容&#xff0c;本文只涉及了一些皮…

C++不能被聲明為虛函數

虛函數是為了實現多態&#xff0c;但是顯然并不是所有函數都可以聲明為虛函數的。 不能被聲明為虛函數的函數有兩類&#xff1a; 不能被繼承的函數不能被重寫的函數 因此&#xff0c;這些函數都不能被聲明為虛函數 普通函數構造函數 如果構造函數定義為虛函數&#xff0c;則…

類的聲明與定義

類的前向聲明&#xff1a; class A;在聲明之后&#xff0c;定義之前&#xff0c;類A是一個不完全類型&#xff0c;即知道A是一個類&#xff0c;但是不知道包含哪些成員。不完全類型只能以有限方式使用&#xff0c;不能定義該類型的對象&#xff0c;不完全類型只能用于定義指向…

shared_ptr的一些尷尬

http://blog.csdn.net/henan_lujun/article/details/8984543 shared_ptr在boost庫中已經有多年了&#xff0c;C11又為其正名&#xff0c;把他引入了STL庫&#xff0c;放到了std的下面&#xff0c;可見其頗有用武之地&#xff1b;但是shared_ptr是萬能的嗎&#xff1f;有沒有什…