Stringに関する10の面接問題

2982 ワード

http://www.importnew.com/9622.html
面接で一番聞きやすいのはStringに関する質問です.
1.どのように2つの文字列を比較しますか?「=」を使いますか?それともequals()を使いますか?
簡単に言えば、「=」は2つのオブジェクトの参照が同じかどうか、equals()は2つの文字列の値が等しいかどうかを比較します.二つの文字列が同じオブジェクトかどうかチェックしたい場合以外は、equals()を使って文字列を比較します.
interningの概念を知っているなら、もっといいです.
2.なぜセキュリティ上の秘密情報に対して、char[]はStringよりも良いですか?
Stringは可変ではないので、一旦作成したら、ゴミ収集器が回収されるまでは変更できないということです.文字配列の要素は変更できます.したがって、文字配列を使用すると、セキュリティの高い情報(パスワードなど)がシステムに存在しないようになります.
3.文字列に対してswitch条件文を使ってもいいですか?
JDK 7に対して、回答は肯定的です.JDK 7から始めて、文字列に対してswitch条件文を使うことができます.JDK 6または前のバージョンでは、switch条件文は使用できません.
1
2
3
4
5
6
7
8
9// Java 7 switch (str.toLowerCase()) {      case "a":           value = 1;           break;      case "b":           value = 2;           break;}4.文字列をintに変換するにはどうすればいいですか?
1int n = Integer.parseInt("10");簡単でよく使いますが、よく無視されます.
5.文字列を空白文字で区切るにはどうすればいいですか?
正規表現を使って文字を分割することができます.「\s」は空白文字を表します.
1String[] strArray = aString.split("\\s+");6.substring()方法は一体何をしましたか?
JDK 6では、substring()は、既存の文字列を文字列で表し、この文字列に「ウィンドウ」を提供しますが、実際には新しい文字列を作成していません.新しい文字列オブジェクトを新しい文字列配列で表すには、空の文字列を追加して次のようにします.
1str.substring(m, n) + ""これは新しい文字配列を作成して、新しい文字列を表します.この方法は、ごみ収集器が使わない長い文字列を集めて、使用するサブ文字列だけを保存します.
Oracle JDK 7では、既存の文字配列ではなく、substring()が作成されます.JDK 6とJDK 7のsubstring()のそれぞれをクリックして確認してください.
7.String vs StrigBuider vs StrigBurer
String vs StrigBuider:StrigBuilderは可変であり、これは作成後もその値を変更することができるという意味である.String Buider vs StrigBuffer:StrigBurerはsynchronizedであり、スレッドは安全であるが、StringBuiderより遅い.
8.どのように文字列を繰り返すか
Pythonでは、数値に乗って文字列を繰り返すことができます.Javaでは、ApachCommons LangパッケージのStringUtils.repeat()方法を使って文字列を繰り返すことができます.
1
2
3String str = "abcd";String repeated = StringUtils.repeat(str,3);//abcdabcdabcd9.文字列を時間に変換する方法
1
2
3
4String str = "Sep 17, 2013";Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);System.out.println(date);//Tue Sep 17 00:00:00 EDT 201310.文字列のある文字の出現回数はどのように計算しますか?
apphe commons langバッグの中のSteringUtilsを使ってください.
1
2int n = StringUtils.countMatches("11112222", "1");System.out.println(n);