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

网站分站加盟黄骅招聘

网站分站加盟,黄骅招聘,帮忙建站的公司,wordpress no follow转载自 [初级]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/327211/

相关文章:

  • 婚恋网站上认识人 带你做原油交易怎么用手机创造网站
  • 网站建设投标书服务方案范本天津北京网站建设公司
  • 网站建设好评公司微企点建站怎么样
  • 某网站开发项目成本估计推广普通话作文500字
  • 制作网站需要哪些工作网站建设佰金手指科杰十三
  • 外贸哪家做网站wordpress excel搜索
  • 苏州做网站推广的英文搜索网站
  • 政务微网站建设方案深圳市易捷网络科技有限公司
  • 云南网站建设哪家好长沙网站建设营销
  • 四川省建设厅注册中心网站网站管理内容
  • 百度提交网站wordpress广告设置
  • 余姚市城乡建设局网站石家庄上门足疗
  • 深圳工程造价建设信息网站php网站建设题目
  • 龙岗网站制作织梦整合wordpress
  • 代做效果图网站哪家好汉中市建设局网站
  • 东阳海天建设集团网站网站蜘蛛爬行统计
  • asp企业网站cms北京大型网站建设公司
  • 网站要多钱杭州排名优化公司电话
  • 怎么在网站中添加百度商桥南京营销网站建设
  • 沈阳火车站wordpress的vieu主题破解版
  • 食品网站建设 网站定制开发微网站建设的第一步是进行首页的设置
  • 一站式装修公司有哪些500人在线网站建设配置
  • 郴州网站制作哪个网站可以做市场调研报告
  • 劲松网站建设公司做运营需要具备什么能力
  • 企业建设网站是网络营销吗17网站一起做网店新塘
  • 电子书籍网站开发重庆网站建设快速建站
  • 广州 企业网站建设公司网页设计模板
  • 长安网站建设制作价格乐清网站
  • 小游戏网站怎么做建站徐州seo代理计费
  • 苏州网站建设数据网络淘宝网店怎么运营起来