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

福安做网站最好网上租服务器价格表

福安做网站最好,网上租服务器价格表,阿里巴巴官网首页网站,网站建设与管理策划书参考链接#xff1a; Java中的按位运算符 转载:http://blog.jobbole.com/93511/ 写在前面#xff1a; 三目运算符是我们经常在代码中使用的#xff0c;a (bnull?0:1); 这样一行代码可以代替一个 if-else#xff0c;可以使代码变得清爽易读。但是#xff0c;三目运算符也…参考链接 Java中的按位运算符 转载:http://blog.jobbole.com/93511/ 写在前面  三目运算符是我们经常在代码中使用的a (bnull?0:1); 这样一行代码可以代替一个 if-else可以使代码变得清爽易读。但是三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。前段时间遇到一个由于使用三目运算符导致的问题其实是因为有三目运算符和自动拆箱同时使用虽然自动拆箱不是我主动用的。  一、三目运算符  对于条件表达式b?x:y先计算条件b然后进行判断。如果b的值为true计算x的值运算结果为x的值否则计算y的值运算结果为y的值。一个条件表达式从不会既计算x又计算y。条件运算符是右结合的也就是说从右向左分组计算。例如a?b:c?d:e将按a?b:c?d:e执行。  二、自动装箱与自动拆箱  基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候我们会这样 Class a new Class(parameters); 当我们创建一个Integer对象时却可以这样 Integer i 100;(注意和 int i 100;是有区别的 ) 实际上执行上面那句代码的时候系统为我们执行了 Integer i Integer.valueOf(100); 这里暂且不讨论这个原理是怎么实现的何时拆箱、何时装箱也略过普通数据类型和对象类型的区别。我们可以理解为当我们自己写的代码符合装拆箱规范的时候编译器就会自动帮我们拆装箱。那么这种不被程序员控制的自动拆装箱会不会存在什么问题呢  三、问题回顾  首先通过你已有的经验看一下下面这段代码。如果你得到的结果和后文分析的结果一致并且你知道原理那么请忽略本文。如果不一致请跟我探索下去。  Java MapString,Boolean map   new HashMapString, Boolean(); Boolean b (map!null ? map.get(test) : false); 1 2 Map String , Boolean map new HashMap String , Boolean ( ) ; Boolean b ( map ! null ? map . get ( test ) : false ) ; 以上这段代码是我们在不注意的情况下有可能经常会写的一类代码在很多时候我们都爱使用三目运算符。当然这段代码是存在问题的执行该代码会报NPE.  Exception in thread main java.lang.NullPointerException 1 Exception  in thread main java . lang . NullPointerException 首先可以明确的是既然报了空指针那么一定是有些地方调用了一个null的对象的某些方法。在这短短的两行代码中看上去只有一处方法调用map.get(test)但是我们也都是知道map已经事先初始化过了不会是Null那么到底是哪里有空指针呢。我们接下来反编译一下该代码。看看我们写的代码在经过编译器处理之后变成了什么样。  反编译后代码如下  Java HashMap hashmap new HashMap(); Boolean boolean1 Boolean.valueOf(hashmap null ? false : ((Boolean)hashmap.get(test)).booleanValue()); 1 2 HashMap  hashmap new HashMap ( ) ; Boolean boolean1 Boolean . valueOf ( hashmap null ? false : ( ( Boolean ) hashmap . get ( test ) ) . booleanValue ( ) ) ; 看完这段反编译之后的代码之后经过分析我们大概可以知道问题出在哪里。((Boolean)hashmap.get(test)).booleanValue()的执行过程及结果如下  hashmap.get(“test”)-null;  (Boolean)null-null;  null.booleanValue()-报错  好问题终于定位到了。那么接下来看看如何解决该问题以及为什么会出现这种问题。  四、原理分析  通过查看反编译之后的代码我们准确的定位到了问题分析之后我们可以得出这样的结论NPE的原因应该是三目运算符和自动拆箱导致了空指针异常。  那么这段代码为什么会自动拆箱呢这其实是三目运算符的语法规范。参见jls-15.25摘要如下  If the second and third operands have the same type (which may be the null type), then that is the type of the conditional expression.  If one of the second and third operands is of primitive type T, and the type of the other is the result of applying boxing conversion (§5.1.7) to T, then the type of the conditional expression is T.  If one of the second and third operands is of the null type and the type of the other is a reference type, then the type of the conditional expression is that reference type.  简单的来说就是当第二第三位操作数分别为基本类型和对象时其中的对象就会拆箱为基本类型进行操作。  所以结果就是由于使用了三目运算符并且第二、第三位操作数分别是基本类型和对象。所以对对象进行拆箱操作由于该对象为null所以在拆箱过程中调用null.booleanValue()的时候就报了NPE。  五、问题解决  如果代码这么写就不会报错  Java Maplt;String,Booleangt; map   new HashMaplt;String, Booleangt;(); Boolean b (map!null ? map.get(test) : Boolean.FALSE); 1 2 Map lt ; String , Boolean gt ; map new HashMap lt ; String , Boolean gt ; ( ) ; Boolean b ( map ! null ? map . get ( test ) : Boolean . FALSE ) ; 就是保证了三目运算符的第二第三位操作数都为对象类型。  这和三目运算符有关。
http://www.zqtcl.cn/news/571863/

相关文章:

  • 男女做啊免费视频网站网站做全景图
  • 网站域名 安全网站开发语言一般是用什么
  • 麦包包的网站建设分析网站开发一般要用到哪些软件有哪些
  • 关于内网站建设的请示天津住房与城乡建设厅网站首页
  • 企业网站免费源码装修公司需要多少钱
  • 沈阳建设网站费用群晖wordpress打不开
  • jsp网站开发 pdf建设植绒衣架网站
  • 做网站接单的网站做外贸网站价位
  • 金融商城快捷申请网站模板下载汕头网站建设和运营
  • 网站建设网站备案所需资料请兼职做企业网站设计怎么收费
  • 电脑配件经营网站的建设论文邯郸市环保局网站建设项目环境
  • 那些网站可以做反链免费游戏不用登录直接玩
  • 安徽网站建设的基本步骤接外贸订单的平台
  • 那些网站可以找得到做货代的广东企业微信网站开发
  • 海宁市建设局官方网站6哔哩哔哩网页版官网在线观看
  • 泉州网站建设轩奇网讯韩国美容网站模板
  • 培训好吗网站建设wordpress手游
  • 元典科技网站建设网页设计制作图片页面
  • 网站设置什么意思无代码搭建平台
  • 织梦做的网站后台登录做网站购买域名
  • 哈尔滨网站关键词优化排名合江做网站
  • 手机网站自动适配旅游网络营销方案
  • 敦化网站开发黔东南购物网站开发设计
  • 建设一个网站 需要提供什么如何免费推广自己的网站
  • 佛山企业网站制作公司中国互联网企业100强榜单
  • 买了域名就可以做网站怎么创造游戏软件
  • 广东广州电脑个人建站徐州网站排名公司
  • 网站优化 流量做网站对企业有什么好处
  • 建设机械网站制作人工智能工程师月薪多少
  • wordpress 百度站长沈阳app开发公司哪家好