大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 java字符串算法筆試題及答案

java字符串算法筆試題及答案

更新時間:2020-06-19 11:56:18 來源:動力節點 瀏覽2574次

java筆試題中,java字符串算法筆試題是不可缺少的一部分,動力節點java培訓機構的小編整理了一份java字符串算法筆試題及答案,希望對大家能夠有所幫助。

java字符串算法筆試題

1、什么是String,它是什么數據類型?

答:String是定義在java.lang包下的一個類,它不是基本數據類型。

String是不可變的,JWM使用字符串池來儲存所有的字符串對象。

2、創建String對象的不同方式有哪些?

答:兩種方式。

一種是通過new很關鍵字來創建。使用這種方式時,JWM創建字符串對象但不存儲在字符串池中,我們可以調用intern()方法將該字符串對象存儲在字符串池中,如果該字符串池已經有了同樣值得字符串,則返回引用。

另一種是使用雙引號來直接創建。使用這種方式時。JVM去字符串找有么有相同值得字符串,如果有,則返回找到的字符串引用。否則創建一個新的字符串對象,并·存儲在字符串池中。

例如:

String?str=new?String("abc");String?str1="abc";

3、寫一個方法來判斷一個String是否是回文(順讀和倒讀都一樣的詞)?

答:String類中并沒有提供翻轉方法供我們使用,但StringBuffer和StringBuilder有reverse方法。

private?static?boolen?isPalindrome(String?str){
	if(str==null){
		return?false;
	}
	StringBuilder?strBuilder=new?StringBuilder(str);
	srtBuilder.reverse();
	return?strBuilder.toString().equals(str);
}

不使用reverse方法實現

private?static?boolean?isPalindromeString(String?str){
	if(str==null)
		return?null;
	int?length=str.length();
	System.out.println(length/2);
	for(int?i=0;i<length/2;i++){
		if(str.charAt(i)!=str.charAt(length-i-1))
			return?false;
	}
	return?true;
}

4、如何讓一個字符串變成小寫或大寫形式?

答:toUpperCase和toLowerCase方法

5、如何比較兩個字符串?

答:String內部實現了Comparable接口,有兩個比較方法:compareTo(String anotherString)和compareToIgnoreCase(String str)。

compareTo(String anotherString)與傳入的anotherString字符串進行比較,如果小于傳入的字符串返回負數,如果大于則返回正數。當兩個字符串值想等時,返回0此時equals方法會返回true。

equalsIgnoreCase(String str)該方法與compareTo方法類似,區別只是內部利用了Character.toUpperCase等方法進行了大小轉換后進行比較。

6、如何將String轉換為char,反過來呢?

答:String是一系列字符,所以我們無法轉換成單一的char但是可以調用toCharArray()方法將字符串轉換成字符數組。

String?str="Java?interview";
	//string?to?char?array;
	char[]?chars=str.toCharArray();
	system.out.println(chars.length);

7、如何將String轉換為byte array,反過來呢?

答:使用String的getBytes()方法將String轉換成byte數組,使用String的構造方法new String(byte[] arr)將byte數據轉為String。

public?class?StringToByteArray{
	public?static?void?main(String[]?args){
			String?str="PANKAJ";
			byte[]?byteArr=str.getBytes();
			//print?the?byte[]?elements
			System.out.println("String?to?byte?array:"+Array.toString(byteArr))
	}
	public?static?void?main(String[]?args)
	{
		byte[]?byteArray={'P','A','N','k','A','J'};
		byte[]?byteArray={80,65,78,75,65,74};
		String?str=new?String(byteArray);
		Srting?str1=new?String(byteArray1);
		System.out.println(str);
		System.out.println(str1);
	}
}

8、淺談一下String, StringBuffer,StringBuilder的區別?

答:String是不可變類,每當我們對String進行操作的時候,總會創建新的字符串。操作String和耗費資源,所以java提供了兩個工具類來操作String——StringBuffer和StringBuilder。

StringBuilder和StringBuffer是可變類,StringBuffer是線程安全的,StringBuilder則不是線程安全的。所以在多線程對同一字符串進行操作的時候,我們選擇StringBuffer。在不需要處理多線程的情況下,StringBuilder的效率比StringBuffer高。

9、String是不可變的有什么好處?

答:由于String是不可變類,所以在多線程中使用是安全的,我們不需要做其他任何同步操作。

String是不可變的,其值也是不可變的,所以用來存儲數據密碼很安全。

因為java字符串不可變,可以在java運行時節省大量堆空間。因為不同的字符串變量可以引用池中的相同的字符串。如果字符串是可變的話,任何一個變量的值改變,就會映射到其他變量,那么字符串池也就沒有什么意義了。

10、如何分割一個String?

答:public String[] split(String regex):

根據傳入的正則字符串進行分割,注意,如果最后一位剛好有傳入的字符,則返回的數組不會有空字符串。

String?s="abcada"
	System.out.println(Arrays.toString(s.split("a"));
	//以上代碼輸出結果為[,bc,,d].
	public?String[]?split(String?regex,int?limit):
	//限制分割結果數組中有幾個字符串。傳入2,則結果分割后數組長度為2。
	String?s="Y,Kunming,Yunnan";
	String[]?data=s.split(",".2);
	System.out.println("Name=",data[0]);//Y
	System.out.println("Address=",data[1]);//Kunming,Yunnan
	//實際上第一個方法調用了第二個方法,只不過不限制返回的數組長度了
	public?String[]?split(String?regex)
	{
		return?split(regex,0);
	}	

11、如何判斷兩個String是否相等?

答:有兩種方式判斷字符串是否相等,使用“= = ”或者使用equals方法。當使用 “= =”操作符時,不僅比較字符串的值還比較引用的內存的值。大多相互情況下,我們只需要判斷值是否相等,此時用equals方法即可。

還有一個用equalsIgnoreCase可以用來忽略大小寫進行比較。

String?s1="abc";
	String?s2="abc"
	String?s3=new?String("abc");
	System.out.println("s1?==?s2???"+(s1==s2));//true
	System.out.println("s1?==?s3???"+(s1==s3));//false
	System.out.println("s1?equals?s3???"+s1.equals(s3));//true

12、String的intern()方法

答:當intern()方法被調用,如果字符串池中已經有一個字符串和當前調用方法的字符串equals相等,那么就會返回池中的字符串。如果池中沒有的話,則首先將當前字符串加入到池中,然后返回引用。

13、String是線程安全的嗎?

答:String是不可變量,一旦創建了String對象,我們就無法改變他的值,因此,它的線程是安全的,可以安全的用于多線程環境中。

14、為什么我們在使用HashMap的時候總是用String做key?

答:因為字符串是不可變的,當創建字符串的時候,他的hashcode被緩存下來,不需要再次計算。因為HashMap內部實現是通過key的hashcode來確定value的存儲位置,所以相比于其他對象更快。這也就是為什么我們平時使用String作為HashMatp對象。

15、這里引入一個新的問題,了解String.intern()方法嗎?

String.intern()查找常量池中是否有相同的unicode字符串常量,如果有則返回其引用,如果沒有,則在常量池中增加一個unicode等于str的字符串并返回它的引用。因此在用String進行字符串拼接時,會產生很多臨時變量。建議多使用StringBuffer/StringBuilder。

16、String/StringBuffer/StringBuilder都分別存放在什么地方?

String是存放在常量池中,在編譯期間已經被確定了。new String()不是字符串常量,他有自己的地址空間,放在堆空間,而其他兩個都存放在堆空間中。

java字符串算法筆試題及答案

以上就是動力節點java培訓機構的小編針對“java字符串算法筆試題及答案”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久6国产 | 国产成人久久精品二区三区 | 91私拍| 麻豆精品视频 在线视频 | 久久99精品久久久久久噜噜丰满 | jizz中国人| 欧美高清一区二区三区欧美 | 午夜不卡视频 | 国产免费播放一区二区 | 欧美一级毛片俄罗斯 | 玖玖免费 | 国内精品视频在线 | 精品国产免费第一区二区三区日韩 | 精品亚洲一区二区在线播放 | 在线亚洲欧洲国产综合444 | 久久精品国产精品亚洲毛片 | 女人18一级特级毛片免费看 | 午夜色视频 | 亚州久久 | 国产大片免费观看中文字幕 | 欧美精品成人一区二区视频一 | 在线观看欧美视频 | 欧美四虎影院 | 特级黄毛片| 国产经典自拍 | 超清乱人伦中文视频在线 | 成人欧美一区二区三区黑人免费 | 九九色在线视频 | 国产精品怡红院永久免费 | 久青草国产在视频在线观看 | 成人精品视频在线观看播放 | 四虎网址在线观看 | 国产亚洲精品第一区在线观看 | chinese国产人妖视频网站 | 麻豆成人久久精品二区三区小说 | 91视频官网| 久久综合久久自在自线精品自 | 香蕉免费看一区二区三区 | 涩涩的视频在线观看 | 玖玖草视频 | 久久精品国产精品亚洲精品 |