日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美高清二区 | 天堂一区在线 | 久草免费av| 欧美性精品 | 丰满大肥婆肥奶大屁股 | 成人午夜在线观看 | 东北老女人av | 欧美一区二区三区激情啪啪 | 玩弄人妻少妇500系列视频 | 精品人妻在线视频 | 小泽玛利亚一区二区三区视频 | 久久永久视频 | 91色漫| 在线观看国产福利 | www.亚洲 | 神马久久久久久久久 | www.操.com| cao在线| 天天看夜夜操 | 久久国产片 | 美女一二三区 | 亚洲精品一区在线 | 日韩欧美三级视频 | 毛片天堂 | 日本一区视频在线观看 | 99精品国产99久久久久久97 | 日本免费福利视频 | 99色这里只有精品 | 香蕉视频免费在线 | 国产精品福利小视频 | 欧美性www| 亚洲图片三区 | 四虎成人永久免费视频 | 黑人黄色录像 | 极品粉嫩小仙女高潮喷水久久 | 影音先锋久久久久av综合网成人 | 九九热视频精品 | 一区二区美女 | 亚洲国产精品视频一区二区 | 爱爱视频网站免费 | 中文字幕第88页 | 五月综合视频 | 懂色av一区二区三区 | 国产成人高清在线 | 国产一区免费在线观看 | 免费成人深夜夜 | 老司机综合网 | 一级做a爱视频 | 精品人妻少妇嫩草av无码专区 | 日韩久久一区二区三区 | 欧美aⅴ视频 | 麻豆成人av | 国产图区 | 精品无码久久久久久久久果冻 | 久久午夜精品人妻一区二区三区 | 久久久久99精品成人片毛片 | 好色先生视频污 | 美脚の诱脚舐め脚视频播放 | 色老头综合 | 伊人网综合 | 在线观看亚洲网站 | 一级片在线免费 | 国产在线视频导航 | 成年人网站免费观看 | 夜色视频网站 | 久久影视av| 捆绑裸体绳奴bdsm亚洲 | 亚洲妇女无套内射精 | 美国少妇性做爰 | 乱子伦一区 | 在线免费观看中文字幕 | 丰满饥渴老女人hd | 免费午夜视频在线观看 | 久久国产人妻一区二区免色戒电影 | 亚洲AV成人无码精品久久盆瓶 | 欧美日本一区 | 国产激情久久久久久熟女老人av | 国产一区二区三区四区五区六区 | 亚洲av永久纯肉无码精品动漫 | 欧美黑人xxxⅹ高潮交 | 免费成人在线观看动漫 | 久草免费福利 | 精品国产乱码久久 | 一区二区三区福利视频 | 亚洲.www| 四虎影| 九色精品视频 | 91资源在线视频 | 欧美做受视频 | 中国女人一级一次看片 | 精品熟女一区二区 | 精品电影一区二区 | 日韩在线一区二区三区四区 | 爆操欧美美女 | 无码人妻一区二区三区一 | 一级久久久久 | 色999日韩 | 精品人妻少妇一区二区三区 | 亚洲精品久久久久中文字幕二区 |