-1

文字列変数を文字型変数に追加するにはどうすればよいですか。コードは機能しています完璧ですが、これはどのように可能ですか?誰か、これを私に説明してください。前もって感謝します。

import java.io.*;
public class numberof {
public static void main(String args[])throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str1,str2="",str3="";
str1=br.readLine()+" ";
for(int i=0;i<str1.length();i++){
char x=str1.charAt(i);
if(x==' '){
    str2=str3+" "+str2;
str3="";
}
else{
    str3=str3+x;   //HERE IS THE QUESTION PART(STRING+CHAR)

   }
 }
 System.out.println(str2);  
 }

  }
4

2 に答える 2

6

Acharは暗黙的に に変換できますString。Java がこれを行わない場合は、次のように記述する必要がありました。

str3 = str3 + String.valueOf(x);

Java では、+演算子でさえs に対してオーバーロードされています。Stringそれがなければ、次のように書く必要がありました。

str3 = str3.concat(String.valueOf(x));

したがって、暗黙的な型変換により、コードを簡単に記述できます。そして、同じコードを読んで理解するのは簡単です:

str3 = str3 + x;
//understanding: the string 'str3' is being joined with the character 'x'

ただし、すべてを暗黙的に変換できるわけではないことに注意してください。たとえば、これは機能しません。

char y = str3 + x; //ERROR: cannot cast string to char!

暗黙的な変換は、データを失うことなく基本型をより高度な型に変換できる場合にのみ機能します。ここで、aStringは一連の文字と考えることができます (文字ビーズのブレスレットを考えてください)。したがって、acharは 1 文字だけの文字列と考えることができます。したがって、+オペレーターが行うことは、この文字を文字でいっぱいの他の文字列の末尾に追加することです。

于 2013-07-23T04:07:17.097 に答える
2

データ型間の変換の間に競合がある場合、コンパイラは常により大きなデータ型を選択します(あなたの場合は文字列です)。これは、暗黙の型変換と呼ばれます。

容量が 1 リットルの缶と 2 リットルの缶が 2 つあるとします。1L缶の中身を2L缶に注ぐのはいつでも安全です。

于 2013-07-23T04:06:36.910 に答える