java關(guān)于string最常出現(xiàn)的面試題整理
在學(xué)習(xí)了不少使用string處理字符串的方法后,對(duì)于這方面基礎(chǔ)內(nèi)容模塊已經(jīng)初步掌握。對(duì)于java面試時(shí),字符串是比較基礎(chǔ)和重點(diǎn)的模塊,所以在學(xué)習(xí)和復(fù)習(xí)的時(shí)候,都需要在這方面做重點(diǎn)的學(xué)習(xí)。我們把試題分為基礎(chǔ)內(nèi)容和實(shí)例代碼試題的運(yùn)行兩個(gè)部分,下面一起來看看具體內(nèi)容。
一、基礎(chǔ)內(nèi)容
1.String類型是基礎(chǔ)類型嗎
基本數(shù)據(jù)類型包括byte,int,char,long,float,double,boolean,short一共八個(gè)
Java.lang.String類是final類型的,因此不能繼承,修改這個(gè)類.為了提高效率節(jié)省空間,應(yīng)該用StringBuffer類。
2.針對(duì)安全保密高的信息,char[]比String更好的原因
因?yàn)镾tring是不可變的,就是說它一旦創(chuàng)建,就不能更改了,直到垃圾收集器將它回收走。而字符數(shù)組中的元素是可以更改的(譯者注:這就意味著你就可以在使用完之后將其更改,而不會(huì)保留原始的數(shù)據(jù))。所以使用字符數(shù)組的話,安全保密性高的信息(如密碼之類的)將不會(huì)存在于系統(tǒng)中被他人看到。
3.String 可以被子類繼承嗎
既然 String 是 final 的,所以不能被繼承。
4.可以自定義 java.lang.String 類并使用嗎
可以自定義 java.lang.String 類并編譯成功,但不能被加載使用,具體請學(xué)習(xí)類加載機(jī)制。
二、實(shí)例試題
1.判斷定義為String類型的s1和s2是否相等
String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); System.out.println(s1.equals(s2));
2.寫一個(gè)方法,實(shí)現(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一共八個(gè).
Java.lang.String類是final類型的,因此不能繼承,修改這個(gè)類.為了提高效率節(jié)省空間,應(yīng)該用StringBuffer類.
2. Strings=”Hello”;s=s+”world!”;這兩句代碼執(zhí)行后,原始的String對(duì)象中的內(nèi)容變沒?
沒有,因?yàn)镾tring被設(shè)計(jì)成為不可變類,不能修改,繼承,代碼執(zhí)行后,s所指向的對(duì)象”hello”沒有改變.不過s不指向s,而是指向了另外一個(gè)String.原來的對(duì)象還在內(nèi)存中,只是不指向了.
們很容易導(dǎo)出另一個(gè)結(jié)論,如果經(jīng)常對(duì)字符串進(jìn)行各種各樣的修改,或者說,不可預(yù)見的修改,那么使用String來代表字符串的話會(huì)引起很大的內(nèi)存開銷。因?yàn)?String對(duì)象建立之后不能再改變,所以對(duì)于每一個(gè)不同的字符串,都需要一個(gè)String對(duì)象來表示。這時(shí),應(yīng)該考慮使用StringBuffer類,它允許修改,而不是每個(gè)不同的字符串都要生成一個(gè)新的對(duì)象。并且,這兩種類的對(duì)象轉(zhuǎn)換十分容易。
3. String是否可以被繼承?
不可以,因?yàn)镾tring類似final類.
4. Strings=new String(“xyz”);創(chuàng)建了幾個(gè)String Object?二者之間有什么區(qū)別?
兩個(gè)或一個(gè),
”xyz”對(duì)應(yīng)一個(gè)對(duì)象,這個(gè)對(duì)象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一個(gè)。New String每寫一遍,就創(chuàng)建一個(gè)新的對(duì)象,它一句那個(gè)常量”xyz”對(duì)象的內(nèi)容來創(chuàng)建出一個(gè)新String對(duì)象。如果以前就用過'xyz',這句代表就不會(huì)創(chuàng)建”xyz”自己了,直接從緩沖區(qū)拿。
到此這篇關(guān)于java關(guān)于string最常出現(xiàn)的面試題整理的文章就介紹到這了,更多相關(guān)java中string的面試題整理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)曲線點(diǎn)抽稀算法的示例
本篇文章主要介紹了Python實(shí)現(xiàn)曲線點(diǎn)抽稀算法的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Python wxPython創(chuàng)建文件復(fù)制工具
wxPython是一個(gè)功能強(qiáng)大的 GUI 框架,它允許開發(fā)者通過 Python 輕松構(gòu)建跨平臺(tái)的桌面應(yīng)用,本文將使用wxPython創(chuàng)建一個(gè)文件復(fù)制工具,感興趣的可以了解下2025-02-02
Python?內(nèi)置模塊?argparse快速入門教程
argparse模塊是Python內(nèi)置的用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,argparse模塊可以讓人輕松編寫用戶友好的命令行接口,能夠幫助程序員為模型定義參數(shù),這篇文章主要介紹了快速入門Python內(nèi)置模塊argparse,需要的朋友可以參考下2023-06-06
Python+OpenCV實(shí)現(xiàn)鼠標(biāo)畫瞄準(zhǔn)星的方法詳解
所謂瞄準(zhǔn)星指的是一個(gè)圓圈加一個(gè)圓圈內(nèi)的十字線,就像玩射擊游戲狙擊槍開鏡的樣子一樣。本文將利用Python+OpenCV實(shí)現(xiàn)鼠標(biāo)畫瞄準(zhǔn)星,感興趣的可以嘗試一下2022-08-08
基于YUV 數(shù)據(jù)格式詳解及python實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于YUV 數(shù)據(jù)格式詳解及python實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python庫?Bokeh?數(shù)據(jù)可視化實(shí)用指南
大家好,今天跟大家分享的是交互式可視化神器?Python?Bokeh?的詳細(xì)使用教程,Bokeh是一個(gè)面向現(xiàn)代web瀏覽器的交互式可視化庫。它提供了多功能圖形的優(yōu)雅、簡潔的構(gòu)造,并在大型數(shù)據(jù)集或流式數(shù)據(jù)集上提供了高性能的交互性,接下來讓我們詳細(xì)看看吧2021-11-11

