文字列のスイッチケースに関連するクエリが1つあります。文字列のスイッチケースの場合、jvmは内部的にどのように動作しますか?文字列のスイッチケース(java 1.7)は内部的にどのように動作しますか?
答えて
switchステートメントは、式内のStringオブジェクトを、String.equalsメソッドを使用しているかのように各ケースラベルに関連付けられた式と比較します。その結果、switch文のStringオブジェクトの比較では大文字と小文字が区別されます。
Java Switchのケースでは、String.equals()メソッドを使用して、渡された値と大文字と小文字の値を比較します。
スイッチの文字列に関するJava 7のドキュメントによると、Javaコンパイラは、チェーンオブジェクトのif-then-else文よりもStringオブジェクトを使用するswitch文から、より効率的なバイトコードを生成します。
この例を参照してください:
String fruit ="Mango";
switch (fruit) {
case "Apple": System.out.println("It's Apple : "+"Apple".hashCode());
break;
case "mango": System.out.println("It's mango : "+"mango".hashCode());
break;
case "Mango": System.out.println("It's Mango : "+"Mango".hashCode());
break;
}
JVMは、次のようにこれを換算:
String fruit = "Mango";
String str1;
switch ((str1 = fruit).hashCode()) {
case 63476538:
if (str1.equals("Apple")) {
System.out.println("It's Mango : " + "Mango".hashCode());
}
break;
case 74109858:
if (str1.equals("Mango")) {
System.out.println("It's Mango : " + "Mango".hashCode());
}
break;
case 103662530:
if (!str1.equals("mango")) {
System.out.println("It's mango : " + "mango".hashCode());
return;
}
break;
}
私が知りたいのは、JVMが使っているハッシングの概念はありますか? –
@TarunTyagiはい、ハッシングを使用しています。編集したアンカーを確認してください –
デフォルトのケースでも例を表示してください。 –
- 1. StringクラスはJavaでどのように内部的に動作しますか?
- 2. Javaシリアル化は内部的にどのように動作しますか?
- 3. Bash - 文字列が別の文字列よりも大きい場合はテストします。内部的にはどのように動作しますか?
- 4. .SDはどのように内部的に動作しますか?
- 5. 文字列はJavaで内部的にどのように表現されていますか?
- 6. レコードの更新は内部的にどのように動作しますか?
- 7. エクスプローラ/ウィンドウのタスクバーはどのように内部的に動作しますか?
- 8. コレクションのFutureTaskは内部的にどのように動作しますか?
- 9. Selenium WebDriverのDesiredCapabilitiesは内部的にどのように動作しますか
- 10. printfは内部でどのように動作しますか?
- 11. Linq DataContext.SubmitChanges()は内部的にどのように動作しますか?
- 12. ASP.NETルーティングはどのように内部的に動作しますか?
- 13. 'range()'は内部的にどのように動作しますか?
- 14. BULK INSERTはどのように内部的に動作しますか?
- 15. サービスはどのようにAndroidで内部的に動作しますか?
- 16. SQLiteカーソルはどのように内部的に動作しますか?
- 17. "as"キーワードはどのように内部的に動作しますか?
- 18. C#eventhandlerは内部的にどのように動作しますか?
- 19. WPFスペルチェックはどのように内部的に動作しますか?
- 20. clock()関数は内部的にどのように動作しますか?
- 21. session_regenerate_id()は内部でどのように動作しますか?
- 22. 注釈は内部的にどのように動作するのですか
- 23. sbプロトコルとは何ですか?内部的にどのように動作しますか?
- 24. 私はどのように文字列配列内の文字列にintをリンクするのですか?java
- 25. docker0ブリッジはホスト内部でどのように内部的に動作しますか?
- 26. 文字列内の各文字をどのように逆にしますか?
- 27. Rの文字列でradixsortはどのように動作しますか?
- 28. Springモジュールは内部的にJavaをどのように使用しますか?
- 29. Java ConcurrrentHashMapは内部的にどのように機能しますか?
- 30. 文字列はどのようにC#で動作しますか?
https://docs.oracle.com/javase/specs/jls/se9/html/jls-14 .html#jls-14.11 – prsvr
この記事を読む:https://stackoverflow.com/questions/10836055/why-is-the-switch-statement-faster-than-if-else-for-string-in-java-7 – DoesData