[解決済み] なぜswitch文のデータ型はlongにできないのか、Java?
2023-05-18 04:07:30
質問
以下は SunのJavaチュートリアル :
<ブロッククオート
スイッチが動作するのは
byte
,
short
,
char
そして
int
といったプリミティブなデータ型があります。また、列挙型(クラスと継承で説明)と、特定のプリミティブ型を "wrap"するいくつかの特別なクラスでも動作します。
Character
,
Byte
,
Short
そして
Integer
(Simple Data Objectsで説明)。
を使用する正当な理由があるはずです。
long
というプリミティブなデータ型が許されないのには、何か理由があるはずです。 誰かそれが何なのか知っていますか?
どのように解決するのですか?
おそらく、典型的なスイッチの使い方をもとに、ある程度は恣意的に決定されたのだと思います。
スイッチは基本的に 2 つの方法 (または原則的にその組み合わせ) で実装できます。少数のケース、または値が広く分散しているケースでは、スイッチは基本的に一時変数に対する一連の if と同等になります (スイッチが入る値は 1 回だけ評価される必要があります)。値が多かれ少なかれ連続している中規模のケースでは、スイッチ テーブル (Java の TABLESWITCH 命令) が使用され、ジャンプ先の位置が効果的にテーブルで検索されます。
これらの方法のどちらかは、原理的には整数ではなく長い値を使用することができます。本当に long 値を切り替える必要があるケースは、一連の IF ステートメントとして書き直すか、他の方法で回避することが許容できるほどまれです (問題の long 値が近くにある場合、Java コードで最も低い値を減算した int 値を切り替えることができます)。
関連
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
代入の左辺は変数でなければならない 解答
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] switch文の複数ケース
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Jsoup-Crawlingの動作
-
-bash: java: コマンドが見つからない 解決方法
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
コンストラクタDate()が未定義である問題
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ