-4

これは私が試したことです。

public String frontBack(String str) {
      char begin = str.charAt(0);
      char end = str.charAt(str.length()-1);
      return begin+str.substring(1,str.length()-1)+end;
}

begin と end は文字なので失敗すると思っていましたが、そうではありません。そんなことがあるものか?誰か説明してくれませんか?ありがとう!

4

1 に答える 1

2

Java の「+」演算子は、連結演算子としても機能します。プリミティブとオブジェクトを連結でき、その結果である文字列を返します。

次の説明は、Java のラッパー クラスに精通していることを前提としています。よく知らない方はぜひ読んでみてください。

Java の「+」演算子は、ステートメントで使用されるすべてのプリミティブ データ型を同等の Wrapper クラスに変換し、それらのインスタンスで toString() メソッドを呼び出し、その結果 (式の文字列) を使用します。

例: Java では、次のようなステートメントは、System.out.println( 3 + " Four " + 'C' );最終的に content を含む String を作成します"3 Four C"

上記のステートメントで、3 はプリミティブな int 変数です。" Four " は String オブジェクトで、'C' はプリミティブ char 変数です。

'+' concat 操作中に、3 は対応する Wrapper クラス -> Integer に変換されます。そして、 toString() メソッドが呼び出されます。出力は文字列 3 です。つまり、"3" " Four " は既に文字列であり、それ以上の処理は必要ありません。「C」は文字ラッパー クラスに変換され、toString() メソッドは文字列「C」を返します。

最後に、これらの 3 つが追加されて「3 Four C」が得られます。

総括する:

  1. プリミティブが「+」演算子で使用される場合、それはその Wrapper クラスに変換され、次に toString() メソッドが呼び出され、結果が追加に使用されます。
  2. String 以外のオブジェクトが使用される場合、その toString() メソッドが呼び出され、その結果が追加に使用されます。
  3. String が呼び出された場合、行うことはあまりなく、文字列自体が追加に使用されます。
于 2015-10-11T17:20:37.307 に答える