最近看到好多同學都在儲備面試知識,以備來年輕鬆應對面試官,拿到心儀offer,之前好多同學反映遇到string,都只能送給自己一首涼涼。別涼,今天小編就為大家準備了面試中常遇到的string題,讓你輕鬆愉快拿offer~
首先跟大家說說如何創建string~
創建字符串較簡單的方式如下
String str = "Runoob";
在代碼中遇到字符串常量時,這裡的值是 "Runoob"",編譯器會使用該值創建一個 String 對象。
和其它對象一樣,可以使用關鍵字和構造方法來創建 String 對象。
用構造函數創建字符串
String str2=new string("Runoob");
String 創建的字符串存儲在公共池中,而 new 創建的字符串對象在堆上:
String s1 = "Runoob"; // String 直接創建
String s2 = "Runoob"; // String 直接創建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 對象創建
String s5 = new String("Runoob"); // String 對象創建
字符串長度
用於獲取有關對象的信息的方法稱為訪問器方法。
String 類的一個訪問器方法是 length() 方法,它返回字符串對象包含的字符數。
連接字符串
String 類提供了連接兩個字符串的方法:
string1.concat(string2);
返回 string2 連接 string1 的新字符串。也可以對字符串常量使用 concat() 方法。
創建格式化字符串
輸出格式化數字可以使用 printf() 和 format() 方法。
String 類使用靜態方法 format() 返回一個String 對象而不是 PrintStream 對象。
String 類的靜態方法 format() 能用來創建可復用的格式化字符串,而不僅僅是用於一次列印輸出。
下面為大家講講在java程式設計師面試中常見的String題
1、String類型可以被繼承嗎?
不可以,因為String類型是final類型。
源碼如下:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence { //...... }
2、 String 和 StringBuilder、StringBuffer 的三者的區別是什麼?
String 類型不可變類(immutable),所以在字符串拼接的時候如果使用 String 的話性能會很低,因此我們就需要使用另一個數據類型 StringBuffer,它提供了 append 方法和 insert 方法可用於字符串的拼接,它使用 synchronized 來保證線程安全。
3、String類型和JVM
String 常見的創建方式有兩種,new String() 的方式和直接賦值的方式,直接賦值的方式會先去字符串常量池中查找是否已經有此值,如果有則把引用地址直接指向此值,否則會先在常量池中創建,然後再把引用指向此值;而 new String() 的方式一定會先在堆上創建一個字符串對象,然後再去常量池中查詢此字符串的值是否已經存在,如果不存在會先在常量池中創建此字符串,然後把引用的值指向此字符串。
4、String類型是基礎類型嗎?
基本數據類型包括byte,int,char,long,float,double,boolean,short一共八個
Java.lang.String類是final類型的,因此不能繼承,修改這個類.為了提高效率節省空間,應該用StringBuffer類。
5、String類型常用的方法有哪些?可以舉例嗎?
String類型有十幾種,我常用的有以下 3種:
indexOf():查詢字符串首次出現的下標位置
lastIndexOf():查詢字符串最後出現的下標位置
contains():查詢字符串中是否包含另一個字符串