2012-08-05 55 views
4

我有一個問題可以幫助我做作業。我們要用一個字符串文字編寫一個程序並反向打印它。我寫了它,它工作正常,但我有兩個不同的版本。第一個使用掃描儀,因此用戶可以輸入一個字符串,然後反向打印。在第二個,我聲明一個字符串文字,只是打印相反。Java-當用戶輸入一個字符串時,它是一個字符串文字嗎?

我的問題不是關於我的程序工作正常,而是我無法找到任何地方在線或在我的書中說,輸入的字符串是一個字符串文字。據我所知,一個字符串文字通常被寫成

String a = "Welcome to Java" 

但可以寫成

String a = new String("Welcome to Java") 
  • 那麼接下來是輸入的字符串不一樣的字符串文字?
  • 是否必須用引號將其寫成字符串文字?

我假設的答案是肯定的,因爲我的書基本上說,它是在引號,但我想仔細檢查之前,我在我的任務,我在正確的版本要轉的手。在此先感謝您的澄清!

回答

7

一個字符串是一個是在引號和字面上代碼:

String literal = "string literal"; 

輸入字符串不是一個字符串,只是一個字符串。

1

字符串文字("foo bar baz")是String對象 - 它只是創建這樣的對象的一個​​很好的語法。當您從用戶那裏獲得輸入時,它也將是一個String對象 - 與該文字相同的類型。

但是,字符串文字是指語法(引號中的東西),而不是對象的類型。所以,爲了準確回答你的問題,用戶的輸入不是字符串文字。

1

輸入的字符串與字符串文字沒有區別。

字符串以Java類形式存儲爲類String的對象。獲取其中一個的方法是字符串文字:「hello sailor」是一個字符串文字,在Java表達式中使用時,它是類String的對象。返回字符串的方法也返回類String的對象。所以他們相當於所有目的。

有幾種方法可以從new String("...")中知道字面意義,但這些方法頗爲人爲。作爲初學者,你不必擔心這些。

3

在@Shakedown暗示,字符串文字是Java源代碼的語法元素。當你的程序執行時,它也(從一個鬆散的意義上說)一個Java對象對應於。我們可以說文字表示運行時字符串。此外,JLS指定具有相同字符的兩個字符串文字將在簡單程序執行的上下文中表示相同的String對象。

在你的代碼片段中。

String a = "Welcome to Java"; 

String a = new String("Welcome to Java"); 

...在源代碼中的"Welcome to Java"字符序列都是字符串常量,並假設它們在相同的執行過程中使用,它們將表示相同的(實習)字符串對象。

但是,new String("Welcome to Java")不是字符串文字。這是一個表達式,它創建一個新的String對象。並執行該表達式的結果是保證是一個不同String對象到文字表示的那個。


是否有引號寫出被認爲是一個字符串文字?

是的。更重要的是,它必須在程序的源代碼中用引號書寫,以便符合字符串文字的要求。

如果我編寫了一個接受來自GUI的使用輸入的程序,並且用戶在其周圍輸入了帶雙引號字符的輸入,那不是字符串文字。相反,它是一個String這恰好以雙引號字符開始和結束。 (是的...在這種情況下,字符串的將包括引號字符。)

相關問題