日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java switch char_Java7中Switch为什么只支持byte、short、char、int、String

發(fā)布時間:2025/3/19 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java switch char_Java7中Switch为什么只支持byte、short、char、int、String 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java 7中,switch的參數(shù)可以是String類型了,這對我們來說是一個很方便的改進。到目前為止switch支持這樣幾種數(shù)據(jù)類型:byte?short?int?char?String?。但是,作為一個程序員我們不僅要知道他有多么好用,還要知道它是如何實現(xiàn)的,witch對整型的支持是怎么實現(xiàn)的呢?對字符型是怎么實現(xiàn)的呢?String類型呢?有一點Java開發(fā)經(jīng)驗的人這個時候都會猜測switch對String的支持是使用equals()方法和hashcode()方法。那么到底是不是這兩個方法呢?接下來我們就看一下,switch到底是如何實現(xiàn)的。

一、switch對整型支持的實現(xiàn)

下面是一段很簡單的Java代碼,定義一個int型變量a,然后使用switch語句進行判斷。執(zhí)行這段代碼輸出內(nèi)容為5,那么我們將下面這段代碼反編譯,看看他到底是怎么實現(xiàn)的。

public classswitchDemoInt {public static voidmain(String[] args) {int a = 5;switch(a) {case 1:

System.out.println(1);break;case 5:

System.out.println(5);break;default:break;

}

}

}//output 5

反編譯后的代碼如下:

public classswitchDemoInt

{publicswitchDemoInt()

{

}public static voidmain(String args[])

{int a = 5;switch(a)

{case 1: //'\001'

System.out.println(1);break;case 5: //'\005'

System.out.println(5);break;

}

}

}

我們發(fā)現(xiàn),反編譯后的代碼和之前的代碼比較除了多了兩行注釋以外沒有任何區(qū)別,那么我們就知道,switch對int的判斷是直接比較整數(shù)的值。

二、switch對字符型支持的實現(xiàn)

直接上代碼:

public classswitchDemoInt {public static voidmain(String[] args) {char a = 'b';switch(a) {case 'a':

System.out.println('a');break;case 'b':

System.out.println('b');break;default:break;

}

}

}

編譯后的代碼如下: `public class switchDemoChar

public classswitchDemoChar

{publicswitchDemoChar()

{

}public static voidmain(String args[])

{char a = 'b';switch(a)

{case 97: //'a'

System.out.println('a');break;case 98: //'b'

System.out.println('b');break;

}

}

}

通過以上的代碼作比較我們發(fā)現(xiàn):對char類型進行比較的時候,實際上比較的是ascii碼,編譯器會把char型變量轉(zhuǎn)換成對應的int型變量

三、switch對字符串支持的實現(xiàn)

還是先上代碼:

public classswitchDemoString {public static voidmain(String[] args) {

String str= "world";switch(str) {case "hello":

System.out.println("hello");break;case "world":

System.out.println("world");break;default:break;

}

}

}

對代碼進行反編譯:

public classswitchDemoString

{publicswitchDemoString()

{

}public static voidmain(String args[])

{

String str= "world";

String s;switch((s =str).hashCode())

{default:break;case 99162322:if(s.equals("hello"))

System.out.println("hello");break;case 113318802:if(s.equals("world"))

System.out.println("world");break;

}

}

}

看到這個代碼,你知道原來字符串的switch是通過equals()和hashCode()方法來實現(xiàn)的。記住,switch中只能使用整型,比如byte。short,char(ackii碼是整型)以及int。還好hashCode()方法返回的是int,而不是long。通過這個很容易記住hashCode返回的是int這個事實。仔細看下可以發(fā)現(xiàn),進行switch的實際是哈希值,然后通過使用equals方法比較進行安全檢查,這個檢查是必要的,因為哈希可能會發(fā)生碰撞。因此它的性能是不如使用枚舉進行switch或者使用純整數(shù)常量,但這也不是很差。因為Java編譯器只增加了一個equals方法,如果你比較的是字符串字面量的話會非常快,比如”abc” ==”abc”。如果你把hashCode()方法的調(diào)用也考慮進來了,那么還會再多一次的調(diào)用開銷,因為字符串一旦創(chuàng)建了,它就會把哈希值緩存起來。因此如果這個siwtch語句是用在一個循環(huán)里的,比如逐項處理某個值,或者游戲引擎循環(huán)地渲染屏幕,這里hashCode()方法的調(diào)用開銷其實不會很大。

好,以上就是關于switch對整型、字符型、和字符串型的支持的實現(xiàn)方式,總結一下我們可以發(fā)現(xiàn),其實swich只支持一種數(shù)據(jù)類型,那就是整型,其他數(shù)據(jù)類型都是轉(zhuǎn)換成整型之后在使用switch的。

總結

以上是生活随笔為你收集整理的java switch char_Java7中Switch为什么只支持byte、short、char、int、String的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 大地资源高清播放在线观看 | www.av麻豆| 污污污www精品国产网站 | 亚洲一| 日韩中文免费 | 少妇无码一区二区三区 | 窝窝午夜精品一区二区 | 激情四月 | 欧美婷婷精品激情 | 中文字幕久久av | 日韩视频a| 日韩视频不卡 | 在线观看亚洲a | 野花视频在线免费观看 | 国产亚洲精品久久777777 | 日韩有码视频在线 | 亚洲成人mv | 在线观看中文字幕一区二区 | 艳妇臀荡乳欲伦交换在线播放 | 成人小视频在线看 | 国产又黄又粗的视频 | 亚洲成色网 | 黄色特级一级片 | 国产啊v在线| 又嫩又硬又黄又爽的视频 | 欧美亚洲一区二区三区 | 国产主播在线播放 | 波多野结衣1区2区3区 | 日本高清视频在线 | 水果派解说av | 在线观看你懂得 | 亚洲一区二区三区成人 | 偷拍亚洲综合 | 大地资源在线观看免费高清版粤语 | 日本久久视频 | 青草视频在线播放 | 日韩v在线 | 黄色激情在线 | 国产亚洲第一页 | 小镇姑娘高清播放视频 | 欧美小视频在线观看 | 伊人中文字幕在线 | 欧美激情第五页 | 国产精品国产三级国产在线观看 | 欧美亚洲免费 | 影音先锋毛片 | 亚洲aaaaaa| 黄色av网站在线免费观看 | 美女激情网 | www九色| 素人av在线| 美女黄色一级视频 | 久久精品一区二区三区四区 | 国产精品3p视频 | 日韩精品一区二区av | 一级国产特黄bbbbb | 国产日韩成人 | 中文字幕乱码无码人妻系列蜜桃 | 91网站大全 | 少妇高潮灌满白浆毛片免费看 | 亚洲综合99 | 国产又黄又粗又猛又爽的视频 | 小日子的在线观看免费第8集 | 午夜aa | 嫩草伊人久久精品少妇av | 国产乱人伦 | 国产成人av一区二区三区在线观看 | 欧美在线观看一区 | 成人国产精品免费观看动漫 | 亚洲午夜福利一区二区三区 | 一本一本久久a久久精品综合麻豆 | 国产偷人视频 | 日韩有码av | 制服.丝袜.亚洲.中文.综合懂色 | 91视频最新| 精品人妻一区二区三区免费看 | av观看免费 | 五月婷婷在线播放 | 夜夜免费视频 | 国产乱妇无码大片在线观看 | 欧美性欧美zzzzzzzzz | 中文字幕乱码一二三区 | 激情超碰 | 中文字幕在线免费看线人 | 久久亚洲网站 | avwww.| 日本中文在线 | 色综合99久久久无码国产精品 | 国产三区在线成人av | 国产日韩精品一区二区三区 | 国产一区二区三区在线免费观看 | 在线看成人av | 久久久久成人片免费观看蜜芽 | 欧美老熟妇乱xxxxx | 处破女av一区二区 | 邵氏电影《金莲外传2》免费观看 | 国产精品边吃奶边做爽 | 泽村玲子av| 国产精品黄 |