2016-09-07 16 views
-5

文字列オブジェクトはjavaで不変ですから、このコード出力はどのようになっていますかNOW HEAT、なぜHOW NEAT? ありがとうございます。次のソースコードの出力を説明できますか?

class Solution 
{ 
    public static void main(String args[]) 
    { 
     String[] words = {"HOW", "NEAT"}; 
     twist(words); 
     System.out.println(words[0] + " " + words[1]); 
    } 
    public static void twist(String[] w) 
    { 
     String temp = w[0].substring(0, 1); 
     w[0] = w[1].substring(0, 1) + w[0].substring(1); 
     w[1] = temp + w[1].substring(1); 
    } 
} 
+0

IDEで実行してください... – ryekayo

+1

デバッガを使用して見つけてください – Jens

+1

文字列は変更できません。オリジナルから新しいものを作成しました。 – duffymo

答えて

1

基本的には、各文字列の最初の文字の両方の最初の文字を切り替えることです。ここで、ステップの説明によってステップは

  1. temp = 'H'
  2. w[0] = NOW(TEMP + "OW")
  3. w[1] = HEAT(+ "EAT" TEMP)

EDIT: duffymoが言ったように:

配列参照は不変ですが、それが指す配列はそうではありません。あなたは新しい文字列を作成し、それらの配列を指すようにしました。

これは、再割り当てするたびに、新しい文字列を作成したことを意味します。

+0

私はコードを理解している、私はコード内で何が起きているのか尋ねていない、私はちょうど文字列が置き換えが行われている方法不変であるかどうかを尋ねています。これは私もdownvotingの前に感謝downvoteすることができます。 – sagg1295

+0

@ sagg1295回答が編集されました –

関連する問題