`
king130520
  • 浏览: 20841 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

判断条件的写法

阅读更多
有朋友问我以下三种if语句有什么不同(也就是考我):
class A{
  private boolean flag=true;
  public void start(){
     if(true==flag){}


     if(flag){}

     if(flag==true){}
  } 
}


我个人常用第二个,我学了几个月的java真的不知道有什么不同。
希望有牛人指点~~~~
2
0
分享到:
评论
6 楼 liuming 2009-10-06  
我真不知道你的朋友想考你什么。不过要是你说面试的话,我倒有些想法。

据我有仅有的面试人家和被人家面试的经历,要问到那么偏的问题的话,无非想考查两方面:一是综合素质,二是技术水平。

素质没什么标准的,主要看你面对那么古怪的问题时的反应,比如说表情、语气、思路等。因为从一些出乎意料的问题,可以多少折射出一个人的处理问题的态度。

要是想考技术的话,我的看法是,对于这一段钻牛角尖的代码,你可以从几个角度分析:运行效率、维护成本以及由此引伸出的其它问题。第一种写法,如果对于从左到右阅读的语言来说(比如英语),它增加了阅读时间,有点本未倒置的嫌疑,导致维护成本有所提升。从字节码可知,第二种写法少了常量读取的操作,所以运行效率应该会更高,不过这种效率可能要连续运行数十亿次才能体现出来。而第三种写法则更清晰明了。而延伸性的讨论就是,由于Java的强制类型的特点,所以第二种写法已经可以确定flag必须为布尔值了,所以在Java中,第二种写法综合优势高些。
5 楼 king130520 2009-10-06  
liuming 写道
   0: iconst_1
   1: aload_0
   2: getfield #2; //Field flag:Z
   5: if_icmpne 8
   8: aload_0
   9: getfield #2; //Field flag:Z
   12: ifeq 15
   15: aload_0
   16: getfield #2; //Field flag:Z
   19: iconst_1
   20: if_icmpne 23
   23: return

反编译出来的字节码,希望能有所帮助。

我还没学会看字节码,不知道能不能稍微解析下,谢谢~~~~
4 楼 king130520 2009-10-06  
ideal46 写道
无非就是执行效率的问题了~!~如ls所说,用第二个最简单,效率最高~!~

你能分析下吗???呵呵,既然有人问到了,就也可能会拿来面试~~~
3 楼 ideal46 2009-10-05  
无非就是执行效率的问题了~!~如ls所说,用第二个最简单,效率最高~!~
2 楼 ZangXT 2009-10-05  
java用 if(flag)这个就好了。

if(true==flag)估计是些C程序的人养成的习惯,java里看起来很恶搞。
if(flag==true)比上一个好看点,但还是   if(flag)清晰自然。
1 楼 liuming 2009-10-05  
   0: iconst_1
   1: aload_0
   2: getfield #2; //Field flag:Z
   5: if_icmpne 8
   8: aload_0
   9: getfield #2; //Field flag:Z
   12: ifeq 15
   15: aload_0
   16: getfield #2; //Field flag:Z
   19: iconst_1
   20: if_icmpne 23
   23: return

反编译出来的字节码,希望能有所帮助。

相关推荐

    JS复杂判断的更优雅写法代码详解

    我们编写js代码时经常遇到复杂逻辑判的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂,那么如何更...

    JS中比Switch...Case更优雅的多条件判断写法

    它通过链式条件判断来实现多条件逻辑,语法直观易懂,适合于判断条件较少且逻辑简单的情况。但如果条件较多,那么代码会变得冗长且难以维护。示例代码如下: ```javascript function whatFood(mealtime) { let ...

    JS中比Switch…Case更优雅的多条件判断写法

    对于多条件判断写法,大部分程序员都是采用if…else if…else或者switch…case的写法,但是有一种多条件判断写法,比传统写法更加有趣且优雅——对象属性判断法。 实例展示 废话不多说了,下面直接用三个实例,给...

    【JavaScript源代码】JavaScript中判断的优雅写法示例.docx

    在 JavaScript 中,判断语句是非常常见的,但是当判断条件变得复杂时,代码就会变得冗长、难以阅读。因此,我们需要优化我们的代码,使其变得更加优雅/highlights。 一元判断 --------- 在 JavaScript 中,一元...

    Python基础教程:条件语句的七种写法.pdf

    第六种方法结合了元组和条件判断,利用切片获取所需值: ```python msg = ((age > 18) and ("已成年",) or ("未成年",))[0] ``` 这些技巧在个人项目中可能会显得很酷,但团队协作时应谨慎使用,因为它们可能会...

    详解Spring Data JPA动态条件查询的写法

    Spring Data JPA 动态条件查询写法详解 Spring Data JPA 是一个基于 Java Persistence API(JPA)规范的数据访问框架,提供了强大的数据访问功能。在实际开发中,我们经常需要根据不同的条件进行数据查询,而 ...

    python语句十大优雅写法

    当需要判断多个条件中至少有一个成立时,可以使用or连接多个条件: ```python math, English, computer = 90, 80, 88 if math print('notpass') # 输出:notpass ``` **优雅方法:** 使用any()函数,它可以检查一...

    struts2标签写法

    - `s:if` 和 `s:else`:条件判断,如 `<s:if test="%{age > 18}">成年人</s:if><s:else>未成年人</s:else>`。 - `s:set`:设置变量,如 `<s:set var="myAge" value="%{age+1}" />`,然后可以在后续标签中使用这个...

    Mybatis3 if判断字符串变态写法

    然而,如果不按照规范写判断条件,也会引发问题。例如,`!= null and regOrSign == 'R' ">`这样的表达式会导致异常。原因在于Mybatis尝试将字符串“R”转换为数字。解决这个问题的方法是将条件改为`test='regOrSign ...

    正则表达式大于50万的判断js与php写法.docx

    这两种语言的正则表达式写法有所不同,但都用于确保用户输入的投资金额符合特定条件。 在JavaScript部分,可以看到一个jQuery插件`formValidator`被用来处理表单验证。首先,它设置了最小值(1)以确保投资金额非零...

    windows下批处理命令写法

    - **功能**:用于判断条件是否满足,并根据结果执行相应的命令。 - **语法**: - 判断字符串是否相等: ```batch if ""=="string" command ``` - 检查文件是否存在: ```batch if exist filename command ``...

    shell脚本写法:复杂数学式,字符串,布尔值,case写法

    例如,判断字符串变量`user`是否以字母`r`开头: ```shell if [[ $user == r* ]]; then # 如果是,则执行相关操作 fi ``` 双方括号内不仅支持模式匹配(如`*`和`?`),还支持正则表达式的匹配,且没有词分割...

    SQL写法—数据修改

    ### SQL写法——数据修改:条件 INSERT ALL 与 INSERT FIRST 在数据库操作中,SQL(Structured Query Language)作为处理关系型数据库的标准语言,其功能强大且应用广泛。本文将详细介绍如何利用Oracle数据库中的...

    最短JS判断是否为IE6(IE的写法)

    然而,上述代码中还存在对IE8和IE7的判断,因此在检测IE6时可以省略对IE8和IE7的判断条件,因为它们和IE6是互斥的。对于IE8,我们可以利用documentMode属性来判断,这是一个IE8及以上版本支持的只读属性,不存在于IE...

    02-条件语句_besidebj4_python爬虫_

    6. `hm_06_拓展:条件写法.py`:可能探讨了条件语句的其他编写方式,如使用比较运算符和逻辑运算符组合。 7. `hm_01_体验if语句.py`:基础的`if`语句实践,可能是学习条件语句的起点。 8. `hm_09_随机数.py`:可能...

    JS 中可以提升幸福度的小技巧(可以识别更多另类写法)

    利用短路特性,可以进行有效的条件赋值和简化判断语句。 例如,利用短路特性给变量赋初值时,可以使用variable1 || 'foo'的写法,如果variable1是一个真值,则使用variable1的值,否则使用'foo'。在if语句的替代...

    oracle存储过程写法

    它不仅展示了如何动态地创建和管理临时表,还展示了如何通过游标来遍历记录集,并执行条件查询来统计特定条件下的数据。这些技术在实际应用中非常有用,可以帮助开发者构建高效、可维护的应用程序。

    vue 动态添加class,三个以上的条件做判断方式

    如果 status为1,样式为redRoom 如果 status为2,样式为greenRoom1 ...补充知识:vue 根据变量值来判断显示class 我就废话不多说了,大家还是直接看代码吧~ <div :class=”[‘bottom-btn’,{‘face-btn’:type==’

    IE、FF的JS兼容写法

    总之,编写兼容IE和FF的JavaScript代码需要对两者的差异有深入的理解,并采用条件判断、函数封装等方式来消除这些差异。通过使用如上的兼容性写法,可以确保代码在不同的浏览器环境下都能正常工作。在实际项目中,还...

    JS的判断与命令规格

    3. **三元运算符**:一种更简洁的条件表达式写法。 ```javascript let result = condition ? trueValue : falseValue; ``` ### 命令规格与函数调用 在JavaScript中,函数调用是一种常见的命令规格,用于执行预...

Global site tag (gtag.js) - Google Analytics