Abh*_*nav -1 java string reverse char
我正在编写一段代码来逐字地反转字符串(输入:Java很有趣;输出:有趣的是Java),当我遇到一个问题时:如何将String变量添加到字符类型变量中.代码工作正常完美,但这怎么可能?有人,请向我解释一下.提前致谢.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
A char可以隐式转换为String.如果Java没有这样做,你将不得不写如下:
str3 = str3 + String.valueOf(x);
Run Code Online (Sandbox Code Playgroud)
哎呀,即使+操作员String在Java中也过载了.没有它,你将不得不这样写:
str3 = str3.concat(String.valueOf(x));
Run Code Online (Sandbox Code Playgroud)
因此,隐式类型转换使您可以轻松编写代码.您可以轻松阅读和理解相同的代码:
str3 = str3 + x;
//understanding: the string 'str3' is being joined with the character 'x'
Run Code Online (Sandbox Code Playgroud)
但请注意,并非所有内容都可以隐式转换.例如,这不起作用:
char y = str3 + x; //ERROR: cannot cast string to char!
Run Code Online (Sandbox Code Playgroud)
仅当基本类型可以转换为更高级类型而不丢失数据时,隐式转换才有效.在这里,a String可以被认为是一串字符(想想那些字母 - 珠子手镯).所以a char可以被认为是只有一个字符的字符串.所以+操作员所做的就是将这个字符添加到另一个充满字符的字符串的末尾.