摘要:在中,字符串被作為類型的對象處理。所以我們看到上面的程序運行結果中,每個漢字對應兩個字節值,如學對應,而英文字母對應。
字符串
在程序開發中字符串無處不在,如用戶登陸時輸入的用戶名、密碼等使用的就是字符串。
在 Java 中,字符串被作為 String 類型的對象處理。 String 類位于 java.lang 包中。默認情況下,該包被自動導入所有的程序。
String s1 = "string"; String s2 = new String(); String s3 = new String("string");
String 對象創建后則不能被修改,是不可變的,所謂的修改其實是創建了新的對象,所指向的內存空間不同。
深入解析
通過 String s1="愛慕課"; 聲明了一個字符串對象, s1 存放了到字符串對象的引用,在內存中的存放引用關系如下圖所
然后通過 s1="歡迎來到:"+s1; 改變了字符串 s1 ,其實質是創建了新的字符串對象,變量 s1 指向了新創建的字符串對象,如下圖所示:
一旦一個字符串在內存中創建,則這個字符串將不可改變。如果需要一個可以改變的字符串,我們可以使用StringBuffer或者StringBuilder(后面章節中會講到)
每次 new 一個字符串就是產生一個新的對象,即便兩個字符串的內容相同,使用 ”==” 比較時也為 ”false” ,如果只需比較內容是否相同,應使用 ”equals()” 方法
String 類常用方法String 類提供了許多用來處理字符串的方法
1. length() 返回字符串的長度 2. indexOf(int ch) 查詢ch字符第一次出現的位置【使用 indexOf 進行字符或字符串查找時,如果匹配返回位置索引;如果沒有匹配結果,返回 -1】 3. indexOf(String str) 查詢子字符串第一次出現的位置 4. lastIndexOf(int ch) 查詢ch字符最后一次出現的位置 5. lastIndexOf(String str) 查詢ch字符串最后一次出現的位置 6. String substring(int beginIndex) 查詢從beginIndex之后到結束的字符串 7. String substring(int beginInde, int endIndex) [begin,) 這里的begin并不是索引,而是第幾個 8. String trim() 去除前后空格 9. boolean equals(Object obj) 該字符串與對應對象比較,返回true、false 10. String toLowerCase() 轉換為小寫 11. String toUpperCase() 轉換為大寫 12. char charAt(int index) 獲取指定位置的字符 13. String []split(String str,int index) 將字符串分割為子字符串、返回數組 14. byte[] getBytes() 將字符串轉換為byte數組
==與equals()的區別
==: 判斷兩個字符串在內存中首地址是否相同,即判斷是否是同一個字符串對象認識 Java 中的 StringBuilder 類
equals(): 比較存儲在兩個字符串對象中的內容是否一致字節是計算機存儲信息的基本單位,1 個字節等于 8 位, gbk 編碼中 1 個漢字字符存儲需要 2 個字節,1 個英文字符存儲需要 1 個字節。所以我們看到上面的程序運行結果中,每個漢字對應兩個字節值,如“學”對應 “-47 -89” ,而英文字母 “J” 對應 “74” 。同時,我們還發現漢字對應的字節值為負數,原因在于每個字節是 8 位,最大值不能超過 127,而漢字轉換為字節后超過 127,如果超過就會溢出,以負數的形式顯示。
在Java中,除了可以使用 String 類來存儲字符串,還可以使用 StringBuilder 類或 StringBuffer 類存儲字符串.
String類具有不可變性
程序運行時會額外創建一個對象,保存 "helloworld"。當頻繁操作字符串時,就會額外產生很多臨時變量。使用 StringBuilder 或 StringBuffer 就可以避免這個問題。
StringBuilder 和StringBuffer ,它們基本相似,不同之處,StringBuffer 是線程安全的,而 StringBuilder 則沒有實現線程安全功能,所以性能略高。因此一般情況下,如果需要創建一個內容可變的字符串對象,應優先考慮使用 StringBuilder 類。
// 創建一個StringBuilder對象,用來存儲字符串 StringBuilder hobby=new StringBuilder("愛慕課"); System.out.println(hobby);Java 中的 StringBuilder 類的常用方法
1. StringBuilder append(參數) 追加內容 2. StringBuilder insert(位置,索引) 將內容插入到指定位置 3. String toString() 轉換為String對象 4. int length()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76760.html
摘要:注意不僅可以控制事務傳播行為等,還可以控制事務隔離級別等。事物的隔離級別隔離級別越高,并發性能越低。在的隔離級別下,會出現幻讀的問題。可串行化是最高的隔離級別。 歡迎進入JAVA基礎課程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對...
摘要:注意不僅可以控制事務傳播行為等,還可以控制事務隔離級別等。事物的隔離級別隔離級別越高,并發性能越低。在的隔離級別下,會出現幻讀的問題。可串行化是最高的隔離級別。 歡迎進入JAVA基礎課程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對...
摘要:我的是忙碌的一年,從年初備戰實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:編程之道出自美國一位資深的程序設計師之手。大師帶你開悟高薪程序員之路編程之道番外篇程序員見禪師我學了和水仙花數,想自己開發個操作系統,希望大師指點。斧子扔得再啊呀我操程序員去拜訪禪師每次遇到程序,我都心急如焚,特向大師求心靈平靜之道。 編程之道》出自美國一位資深的程序設計師 Geoffrey James 之手。 本文章是為番外篇,哈哈哈,有點兒無節操。 大師帶你開悟高薪程序員之路——《...
閱讀 3870·2021-09-10 11:22
閱讀 2325·2021-09-03 10:30
閱讀 3660·2019-08-30 15:55
閱讀 1873·2019-08-30 15:44
閱讀 841·2019-08-30 15:44
閱讀 582·2019-08-30 14:04
閱讀 3042·2019-08-29 17:18
閱讀 1262·2019-08-29 15:04