当前位置: 首页 > news >正文

太平阳建设集团网站中国制造平台

太平阳建设集团网站,中国制造平台,做网站和做系统的区别,wordpress 企业站模板转载自 [初级]Java中的switch对整型、字符型、字符串的具体实现细节Java 7中#xff0c;switch的参数可以是String类型了#xff0c;这对我们来说是一个很方便的改进。到目前为止switch支持这样几种数据类型#xff1a;byteshort int char String 。但是#xff0c;作为一个…转载自 [初级]Java中的switch对整型、字符型、字符串的具体实现细节Java 7中switch的参数可以是String类型了这对我们来说是一个很方便的改进。到目前为止switch支持这样几种数据类型byteshort int char String 。但是作为一个程序员我们不仅要知道他有多么好用还要知道它是如何实现的witch对整型的支持是怎么实现的呢对字符型是怎么实现的呢String类型呢有一点Java开发经验的人这个时候都会猜测switch对String的支持是使用equals()方法和hashcode()方法。那么到底是不是这两个方法呢接下来我们就看一下switch到底是如何实现的。 一、switch对整型支持的实现 下面是一段很简单的Java代码定义一个int型变量a然后使用switch语句进行判断。执行这段代码输出内容为5那么我们将下面这段代码反编译看看他到底是怎么实现的。 public class switchDemoInt {public static void main(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 class switchDemoInt {public switchDemoInt(){}public static void main(String args[]){int a 5;switch(a){case 1: // \001System.out.println(1);break;case 5: // \005System.out.println(5);break;}} } 我们发现反编译后的代码和之前的代码比较除了多了两行注释以外没有任何区别那么我们就知道switch对int的判断是直接比较整数的值。 二、switch对字符型支持的实现 直接上代码 public class switchDemoInt {public static void main(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 class switchDemoChar {public switchDemoChar(){}public static void main(String args[]){char a b;switch(a){case 97: // aSystem.out.println(a);break;case 98: // bSystem.out.println(b);break;}} } 通过以上的代码作比较我们发现对char类型进行比较的时候实际上比较的是ascii码编译器会把char型变量转换成对应的int型变量 三、switch对字符串支持的实现 还是先上代码 public class switchDemoString {public static void main(String[] args) {String str world;switch (str) {case hello:System.out.println(hello);break;case world:System.out.println(world);break;default:break;}} } 对代码进行反编译 public class switchDemoString {public switchDemoString(){}public static void main(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()方法来实现的。记住switch中只能使用整型比如byte。shortchar(ackii码是整型)以及int。还好hashCode()方法返回的是int而不是long。通过这个很容易记住hashCode返回的是int这个事实。仔细看下可以发现进行switch的实际是哈希值然后通过使用equals方法比较进行安全检查这个检查是必要的因为哈希可能会发生碰撞。因此它的性能是不如使用枚举进行switch或者使用纯整数常量但这也不是很差。因为Java编译器只增加了一个equals方法如果你比较的是字符串字面量的话会非常快比如”abc” ”abc”。如果你把hashCode()方法的调用也考虑进来了那么还会再多一次的调用开销因为字符串一旦创建了它就会把哈希值缓存起来。因此如果这个siwtch语句是用在一个循环里的比如逐项处理某个值或者游戏引擎循环地渲染屏幕这里hashCode()方法的调用开销其实不会很大。 好以上就是关于switch对整型、字符型、和字符串型的支持的实现方式总结一下我们可以发现其实swich只支持一种数据类型那就是整型其他数据类型都是转换成整型之后在使用switch的。
http://www.pierceye.com/news/975143/

相关文章:

  • 龙岩做网站推广龙岗网站 建设深圳信科
  • 沈阳网站建设 网络服务广告公司首页
  • 旅游网站建设导航栏中国哪里正在大开发大建设
  • 哪能建设网站建设网站需要哪些流程图
  • 网站YYQQ建设o2o型网站
  • 给客户做网站 赚钱吗赣州省住房和城乡建设厅网站
  • 营销优化型网站怎么做手机app网页制作
  • 上海网站建设服wordpress友情链接排序
  • 沈阳市和平区网站建设编程课适合多大孩子学
  • 东阳网站优化懒人图库
  • 马关县网站建设专注营销型网站建设
  • 微信公众号公众平台太原seo关键词优化
  • 沈阳网站建设方案二级网站怎样被百度收录
  • 厦门数字引擎 怎么打不开网站youku网站开发技术
  • 中小企业网站建设论文郑州网站服务公司
  • 工信部网站备案验证码文化传媒网站封面
  • 境外做网站网站百度代运营
  • 南京学校网站建设策划手机网站默认全屏
  • 东莞公司网站策划万网买网站
  • 建筑网站视频大全做外汇网站卖判刑多少年
  • 手机网站菜单网页怎么做东莞网站优化方案
  • 公众号免费素材网站wordpress无法开始安装
  • 建设银行互联网网站首页网站备案 视频
  • 免费优化网站建设做app和网站哪个比较好用
  • 韩国最牛的设计网站大全网站设计的尺寸
  • 一家专门做特卖的网站类似非小号的网站怎么做
  • 怎么建一个网站出口外贸交易平台
  • iapp用网站做软件代码徐州网络推广公司排名
  • 设计之路 网站wordpress自定义字段火车头
  • 用什么服务器做盗版小说网站吗邓州十九张麻将微信群app开发公司