java關(guān)于string最常出現(xiàn)的面試題整理
在學(xué)習(xí)了不少使用string處理字符串的方法后,對于這方面基礎(chǔ)內(nèi)容模塊已經(jīng)初步掌握。對于java面試時,字符串是比較基礎(chǔ)和重點的模塊,所以在學(xué)習(xí)和復(fù)習(xí)的時候,都需要在這方面做重點的學(xué)習(xí)。我們把試題分為基礎(chǔ)內(nèi)容和實例代碼試題的運(yùn)行兩個部分,下面一起來看看具體內(nèi)容。
一、基礎(chǔ)內(nèi)容
1.String類型是基礎(chǔ)類型嗎
基本數(shù)據(jù)類型包括byte,int,char,long,float,double,boolean,short一共八個
Java.lang.String類是final類型的,因此不能繼承,修改這個類.為了提高效率節(jié)省空間,應(yīng)該用StringBuffer類。
2.針對安全保密高的信息,char[]比String更好的原因
因為String是不可變的,就是說它一旦創(chuàng)建,就不能更改了,直到垃圾收集器將它回收走。而字符數(shù)組中的元素是可以更改的(譯者注:這就意味著你就可以在使用完之后將其更改,而不會保留原始的數(shù)據(jù))。所以使用字符數(shù)組的話,安全保密性高的信息(如密碼之類的)將不會存在于系統(tǒng)中被他人看到。
3.String 可以被子類繼承嗎
既然 String 是 final 的,所以不能被繼承。
4.可以自定義 java.lang.String 類并使用嗎
可以自定義 java.lang.String 類并編譯成功,但不能被加載使用,具體請學(xué)習(xí)類加載機(jī)制。
二、實例試題
1.判斷定義為String類型的s1和s2是否相等
String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); System.out.println(s1.equals(s2));
2.寫一個方法,實現(xiàn)字符串的反轉(zhuǎn),如:輸入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(); }
面試題擴(kuò)展:
1. String是最基本的數(shù)據(jù)類型嗎?
基本數(shù)據(jù)類型包括byte,int,char,long,float,double,boolean,short一共八個.
Java.lang.String類是final類型的,因此不能繼承,修改這個類.為了提高效率節(jié)省空間,應(yīng)該用StringBuffer類.
2. Strings=”Hello”;s=s+”world!”;這兩句代碼執(zhí)行后,原始的String對象中的內(nèi)容變沒?
沒有,因為String被設(shè)計成為不可變類,不能修改,繼承,代碼執(zhí)行后,s所指向的對象”hello”沒有改變.不過s不指向s,而是指向了另外一個String.原來的對象還在內(nèi)存中,只是不指向了.
們很容易導(dǎo)出另一個結(jié)論,如果經(jīng)常對字符串進(jìn)行各種各樣的修改,或者說,不可預(yù)見的修改,那么使用String來代表字符串的話會引起很大的內(nèi)存開銷。因為 String對象建立之后不能再改變,所以對于每一個不同的字符串,都需要一個String對象來表示。這時,應(yīng)該考慮使用StringBuffer類,它允許修改,而不是每個不同的字符串都要生成一個新的對象。并且,這兩種類的對象轉(zhuǎn)換十分容易。
3. String是否可以被繼承?
不可以,因為String類似final類.
4. Strings=new String(“xyz”);創(chuàng)建了幾個String Object?二者之間有什么區(qū)別?
兩個或一個,
”xyz”對應(yīng)一個對象,這個對象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一個。New String每寫一遍,就創(chuàng)建一個新的對象,它一句那個常量”xyz”對象的內(nèi)容來創(chuàng)建出一個新String對象。如果以前就用過'xyz',這句代表就不會創(chuàng)建”xyz”自己了,直接從緩沖區(qū)拿。
到此這篇關(guān)于java關(guān)于string最常出現(xiàn)的面試題整理的文章就介紹到這了,更多相關(guān)java中string的面試題整理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Numba與Cython結(jié)合提升python運(yùn)行效率詳解
近些年來, Numba和Cython在數(shù)學(xué)科學(xué)界得到了廣泛的關(guān)注。它們都提供了一種加速CPU密集型任務(wù)的方法,但以不同的方式。本文描述了它們之間體系結(jié)構(gòu)的差異2021-09-09Python實現(xiàn)PyPDF2處理PDF文件的方法示例
這篇文章主要介紹了Python實現(xiàn)PyPDF2處理PDF文件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09解決Jupyter無法導(dǎo)入已安裝的 module問題
這篇文章主要介紹了解決Jupyter無法導(dǎo)入已安裝的 module問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04利用Python+PyQt5實現(xiàn)簡易瀏覽器的實戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于如何利用Python+PyQt5實現(xiàn)簡易瀏覽器的相關(guān)資料,Qt 的主要優(yōu)勢是可以開發(fā)跨平臺的圖形界面程序,基于 Qt 的應(yīng)用能夠借助于各平臺的原生性在不同類的設(shè)備上運(yùn)行,而無須修改任何代碼庫,需要的朋友可以參考下2021-07-07關(guān)于pytest結(jié)合csv模塊實現(xiàn)csv格式的數(shù)據(jù)驅(qū)動問題
這篇文章主要介紹了pytest結(jié)合csv模塊實現(xiàn)csv格式的數(shù)據(jù)驅(qū)動,使用python中的csv模塊來處理csv文件,結(jié)合pygtest的參數(shù)化處理方式來實現(xiàn)ddt,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-05-05