本文目錄一覽:
- 1、java.lang.string是否可以再有子類?
- 2、java.lang.string 與string 有什麼區別嗎?
- 3、登陸手機銀行出現java.lang.string什麼意思
- 4、java.lang.String的常用的方法
- 5、進入手機網銀出現:java.lang.string 是什麼意思
java.lang.string是否可以再有子類?
可以,但是即使你寫了這個類,也沒有用。
這個問題涉及到載入器的委託機制,在類載入器的結構圖中,BootStrap是頂層父類ExtClassLoader是BootStrap類的子類,ExtClassLoader又是AppClassLoader的父類這裡以java.lang.String為例,當我是使用到這個類時,Java虛擬機會將java.lang.String類的位元組碼載入到內存中。
下面來說說為什麼只載入系統通過的java.lang.String類而不載入用戶自定義的java.lang.String類呢?
①因載入某個類時,優先使用父類載入器載入需要使用的類。如果我們自定義了java.lang.String這個類,載入該自定義的String類,該自定義String類使用的載入器是AppClassLoader,根據優先使用父類載入器原理,AppClassLoader載入器的父類為ExtClassLoader。
②所以這時載入String使用的類載入器是ExtClassLoader,但是類載入器ExtClassLoader在jre/lib/ext目錄下沒有找到String.class類。然後使用ExtClassLoader父類的載入器BootStrap,父類載入器BootStrap在JRE/lib目錄的rt.jar找到了String.class,將其載入到內存中。這就是類載入器的委託機制。
所以,用戶自定義的java.lang.String不被載入,也就是不會被使用。
java.lang.string 與string 有什麼區別嗎?
在ibatis的框架中,有這麼一句話,將類java.lang.string定義為string變數,所以才會有了這2種寫法!
登陸手機銀行出現java.lang.string什麼意思
是後台變數的類型出錯了…拿到的數據不是string類型,系統沒辦法放到string類型的變數中…所以會拋出這個異常,意思一般就是變數類型為java.lang.String類型,XXX變數不能賦給String類型變數
java.lang.String的常用的方法
public boolean equals(Object obj)
判斷當前字元串與obj的內容是否相同
public boolean equalsIgnoreCase(String str)
判斷當前字元串與str的內容是否相同,這個方法不會區分大小寫字母的區別
public int length()
返回字元串的長度,即字元的總個數
public String trim()
去掉字元串兩端的空白,包括「空格,\t,\n,\r等控制符」
public String substring(int start,int end)
根據開始和結束的位置,返回當前String的子字元串
public String substring(int start)
從開始位置開始到字元串結束,返回子字元串
public char charAt(int index)
返回指定位置的字元
public int indexOf(String str)
返回子字元串在當前字元串的位置,如果當前字元串不包含子字元串就返回-1
public String concat(String str)
返回一個字元串,內容是當前字元串與str連接而成的。
字元串連接可以簡化寫為String str = str1 + str2;結果與concat方法相同
public boolean startsWith(String str)
判斷當前字元串,是否以str開頭
public boolean endsWith(String str)
判斷當前字元串,是否以str結尾
========================================================
String str = I am + Lingo!;
這樣可以獲得一個內容為I am Lingo!的字元串,在java里可以通過這種簡單的方式實現字元串的連接
。這裡需要注意的是,這個過程實際上生成了三個String對象,I am 和Lingo!先被生成,然後用他
們再創建一個String對象str,str的內容是兩者的總和。所以,使用+進行字元串連接的時候會很耗費資
源,這個時候就需要使用另一個類StringBuffer,它的內容是可以修改的,實際上jvm內部編譯之後,「
用+進行字元串連接」也是用StringBuffer實現的。
String str = I am + Lingo!;
String str = new StringBuffer(I am ).append(Lingo!).toString();
上邊兩個是等價的。
StringBuffer類還提供了許多便利的方法,對字元串進行操作
public void reverse()
反轉字元串
public void append(…)
在字元串最後添加信息
public void insert(int start,…)
在索引位置插入信息
public void delete(int start,int end)
刪除指定範圍的內容
split與replaceAll方法
public String[] split(String regex)
根據分隔符,把字元串切割成字元串數組
public String replace(String regex,String str)
把字元串中所有與regex匹配的部分都替換成str
regex代表「正則表達式」,如果你並不清楚它的原理,很可能會出現問題。
1,3,4.split(,)返回的結果是{1,3,4}這三個字元串組成的數組
1|3|4.split(|)返回的結果卻是{1,|,3,|,4}五個字元串組成的數組
這個問題的原因是由於在「正則表達式」中,「|」是一個有特殊含義的字元,表示「或」,直接使用
split(|)就會把每個字元分開了。如果希望使用|作為分隔符,就需要使用轉義字元。
1|3|4.split(\\|)返回的結果就是{1,3,4}三個字元串組成的數組了
「\|」是正則表達式中代表|的專一字元,但因為在String中「\」不能單獨出現,還需要進行一次轉義
,就變成了「\\|」這種形式。
replaceAll(String regex,String str)也是這種情況
進入手機網銀出現:java.lang.string 是什麼意思
是後台變數的類型出錯了…拿到的數據不是string類型,系統沒辦法放到string類型的變數中…所以會拋出這個異常,意思一般就是變數類型為java.lang.String類型,別的類型的變數不能賦給String類型變數,過一段時間在上試試。
原創文章,作者:XJVNZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130354.html