2013-07-23 401 views
-1

當我遇到一個問題時,我寫了一段代碼來反向字符串(輸入:Java很有趣;輸出:fun是Java):如何將字符串變量添加到字符類型代碼運行完美,但這可能如何?有人請向我解釋這一點。提前致謝。字符串字符連接

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); 
} 

    } 
+3

隱式類型轉換 –

+1

[這個人] [1]給出了正在發生的事情的相當不錯的概要。 [1]:http://stackoverflow.com/a/328253/2400222 – Zec

+1

@Zec很肯定你可以把鏈接在這樣的:「\ [鏈接名\(鏈接地址)「 – mattbdean

回答

6

A char可以隱式轉換爲String。如果你的Java並沒有做到這一點,你將不得不把它寫如下:

str3 = str3 + String.valueOf(x); 

哎呀,連+運算符重載String S IN的Java。沒有它,你將不得不這樣寫:

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! 

隱式轉換僅適用於基本類型可以轉換爲更高級類型而沒有數據丟失的情況。在這裏,String可以被認爲是一串字符(想想那些letter-bead bracelets)。所以一個char可以被認爲是隻有一個字符的字符串。所以+運算符所做的是將此字符添加到另一個字符串的末尾。

2

當有數據類型之間的轉換之間的衝突,編譯器總是選擇較大的數據類型(在你的情況下,它是字符串)。這被稱爲隱式類型轉換。

假設你有2罐1升的容量,其他2升。把1L罐的內容倒入2L罐可以保證安全。

+0

@One vote for you !!!現在我很好奇,知道什麼容量意味着在Java的背景下.. ?? –

+0

數據類型的大小是容量..就像int是4個字節,char是1個字節 –

+0

這個概念是與Java中的自動裝箱和拆箱有關嗎? –