2016-02-11 15 views
7
次のコードを考えると

は、である「」自動的スイッチケース文でint型に昇格(つまりタイプ文字のですか)?byte、short、charはswitch文で自動的に昇格されますか?

void testSwitch(byte x) { 
    switch(x) { 
     case 'a': // 1 
     case 256: // 2 
     default: // 3 
     case 1: // 4 
    } 

}

私は、Java SE7はそのことについて言及するかどうかを見つけることができませんでした。..明確化のため、事前に

感謝を。ここで

よろしく、 ダニエル

+0

スイッチがchar、 'int'とバイトをとり、必要に応じて自動的に短絡を広げることができます。 –

+0

[タイプは '0'](https://groups.google.com/forum/#!topic/java-lang-fans/0zGzPygyJSU) – ZhongYu

答えて

7

は、言語仕様はこれについて言及するものです。 this section on switch statementsを参照してください:switch文を考えると

、以下のすべてが真でなければならないか、コンパイル時エラーが発生します。

  • switch文に関連したすべてのcaseの定数が代入互換性を持たなければなりませんswitchステートメントの(§5.2)のタイプ。

  • ...縮小変換が char'a'に適用されることを意味し

。その数値は97で、byteと表記できます。値256は適合しませんので、コンパイラはエラーをスローします。

+0

ありがとう@ AR.3。良い説明。それは覚えておく価値がある点です:) – yegomosc

関連する問題