java關於string最常出現的面試題整理
在學習了不少使用string處理字串的方法後,對於這方面基礎內容模組已經初步掌握。對於java面試時,字串是比較基礎和重點的模組,所以在學習和複習的時候,都需要在這方面做重點的學習。我們把試題分為基礎內容和例項程式碼試題的執行兩個部分,下面一起來看看具體內容。
一、基礎內容
1.String型別是基礎型別嗎
基本資料型別包括byte,int,char,long,float,double,boolean,short一共八個
Java.lang.String類是final型別的,因此不能繼承,修改這個類.為了提高效率節省空間,應該用StringBuffer類。
2.針對安全保密高的資訊,char[]比String更好的原因
因為String是不可變的,就是說它一旦建立,就不能更改了,直到垃圾收集器將它回收走。而字元陣列中的元素是可以更改的(譯者注:這就意味著你就可以在使用完之後將其更改,而不會保留原始的資料)。所以使用字元陣列的話,安全保密性高的資訊(如密碼之類的)將不會存在於系統中被他人看到。
3.String 可以被子類繼承嗎
既然 String 是 final 的,所以不能被繼承。
4.可以自定義 java.lang.String 類並使用嗎
可以自定義 java.lang.String 類並編譯成功,但不能被載入使用,具體請學習類載入機制。
二、例項試題
1.判斷定義為String型別的s1和s2是否相等
String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); System.out.println(s1.equals(s2));
2.寫一個方法,實現字串的反轉,如:輸入abc,輸出cba
public static String reverse(String origin) { //方式1 //return new StringBuffer(origin).reverse().toString(); //方式2 /*String end = ""; for (int i = origin.length()-1; i >= 0; i--) { end += origin.charAt(i); }*/ //方式3 StringBuilder end = new StringBuilder(""); for (int i = origin.length()-1; i >=0 ; i--) { end.append(origin.charAt(i)); } return end.toString(); }
面試題擴充套件:
1. String是最基本的資料型別嗎?
基本資料型別包括byte,short一共八個.
Java.lang.String類是final型別的,應該用StringBuffer類.
2. Strings=”Hello”;s=s+”world!”;這兩句程式碼執行後,原始的String物件中的內容變沒?
沒有,因為String被設計成為不可變類,不能修改,繼承,程式碼執行後,s所指向的物件”hello”沒有改變.不過s不指向s,而是指向了另外一個String.原來的物件還在記憶體中,只是不指向了.
們很容易匯出另一個結論,如果經常對字串進行各種各樣的修改,或者說,不可預見的修改,那麼使用String來代表字串的話會引起很大的記憶體開銷。因為 String物件建立之後不能再改變,所以對於每一個不同的字串,都需要一個String物件來表示。這時,應該考慮使用StringBuffer類,它允許修改,而不是每個不同的字串都要生成一個新的物件。並且,這兩種類的物件轉換十分容易。
3. String是否可以被繼承?
不可以,因為String類似final類.
4. Strings=new String(“xyz”);建立了幾個String Object?二者之間有什麼區別?
兩個或一個,
”xyz”對應一個物件,這個物件放在字串常量緩衝區,常量”xyz”不管出現多少遍,都是緩衝區中的那一個。New String每寫一遍,就建立一個新的物件,它一句那個常量”xyz”物件的內容來創建出一個新String物件。如果以前就用過'xyz',這句代表就不會建立”xyz”自己了,直接從緩衝區拿。
到此這篇關於java關於string最常出現的面試題整理的文章就介紹到這了,更多相關java中string的面試題整理內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!