當前位置:
首頁 > 知識 > Webservice簡單使用

Webservice簡單使用

看到一個開關語句中default的用法很奇怪,所以就決定研究一下這個騷操作。

原文代碼如下:

  1. package exam;
  2. import oypj.tools.*;
  3. class Shape{
  4. void draw(){}
  5. void erase(){}
  6. }
  7. class Circle extends Shape{
  8. void draw(){
  9. P.rintln("Circle.draw()");
  10. }
  11. void erase(){
  12. P.rintln("Cicle.erase()");
  13. }
  14. }
  15. class Squre extends Shape{
  16. void draw(){
  17. P.rintln("Squre.draw()");
  18. }
  19. void erase(){
  20. P.rintln("Squre.erase()");
  21. }
  22. }
  23. class Triangle extends Shape{
  24. void draw(){
  25. P.rintln("Triangle.draw()");
  26. }
  27. void erase(){
  28. P.rintln("Triangle.erase()");
  29. }
  30. }
  31. public class Shapes {
  32. public static Shape randShape(){
  33. switch((int)(Math.random()*3)){
  34. default:
  35. case 0: return new Circle();
  36. case 1: return new Squre();
  37. case 2: return new Triangle();
  38. }
  39. }
  40. public static void main(String[] args){
  41. Shape[] s=new Shape[9];
  42. for(int i=0;i<9;i++)
  43. s[i]=randShape();
  44. for(int i=0;i<9;i++)
  45. s[i].draw();
  46. }
  47. }

輸出的結果:

Webservice簡單使用

1.分析代碼:

default 寫在case前面而且default的代碼塊沒有用break。所以當switch中的表達式沒有匹配到0、1、2的時候,

程序會執行default中的語句塊,由於default代碼塊中沒有break,所以當處理完default中的代碼塊時,會繼續往下

執行。

2.修改代碼驗證一下分析:

修改後代碼如下:

  1. package exam;
  2. import oypj.tools.*;
  3. class Shape{
  4. void draw(){}
  5. void erase(){}
  6. }
  7. class Circle extends Shape{
  8. void draw(){
  9. P.rintln("Circle.draw()");
  10. }
  11. void erase(){
  12. P.rintln("Cicle.erase()");
  13. }
  14. }
  15. class Squre extends Shape{
  16. void draw(){
  17. P.rintln("Squre.draw()");
  18. }
  19. void erase(){
  20. P.rintln("Squre.erase()");
  21. }
  22. }
  23. class Triangle extends Shape{
  24. void draw(){
  25. P.rintln("Triangle.draw()");
  26. }
  27. void erase(){
  28. P.rintln("Triangle.erase()");
  29. }
  30. }
  31. public class Shapes {
  32. public static Shape randShape(){
  33. switch(3){
  34. default: System.out.println("default");
  35. case 0: System.out.println("default0"); return new Circle();
  36. case 1: System.out.println("default1"); return new Squre();
  37. case 2: System.out.println("default2"); return new Triangle();
  38. }
  39. }
  40. public static void main(String[] args){
  41. Shape[] s=new Shape[9];
  42. for(int i=0;i<9;i++)
  43. s[i]=randShape();
  44. for(int i=0;i<9;i++)
  45. s[i].draw();
  46. }
  47. }

輸出結果:

Webservice簡單使用

3.修改後代碼分析:

從運行的結果來看,程序確實是像我們第1點分析的那樣執行。但是,在default語句塊中我們就列印了一個

字元串default,然後程序繼續往下執行的時候執行了case 0中的語句塊。這跟我們想的有點不一樣。當我把

case 1 放在case 0前面的時候,再次執行程序,發現default列印了一個default後,執行了case 1 中的語句

塊。

由此我們可以看出,在開關語句中,把default寫在case前面,而且default的語句塊中沒有任何處理的時候,

當switch()表達式中的值匹配不到case 的時候,就執行default中的代碼塊而且還會默認執行緊靠在default後

的case 代碼塊。我覺得這是java編譯器為了程序能正常運行做的一種處理,因為如果不默認執行緊靠在default

後的case代碼塊的話,程序就沒有返回值,會拋出異常。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

淺談WKWebView使用、JS的交互
redis緩存和cookie實現Session共享

TAG:程序員小新人學習 |