Java自学笔记系列一:运算符的优先级与结合性

 仔细读了Java语言的最基础章节,而这些章节,以前是自己从不屑一顾的,事实上,今天的这个小小的案例却给自己上了很好的一课。发现很多不足。

int x=10;(当然可以为任何一个数值)

求表达式 !x*3<=x*4; 的值。

说实话第一感觉的结果是:false 就是给不出合理的解释。

印象中,逻辑运算符 "!" 的优先级比较高,仅次于并列第一的(). 和[] 所以自己就得意洋洋的分析道:

 

第一步: !x :0

[

  其实这样理解是错误的,Java中"!"不能对非布尔类型的数据类型使用。在PHP中" !"则可以这样使用,且php将任何非零数均当做true对待.

比较一下两段代码:

Java:

      
      
      
      
  1. int e = 10; 
  2. if(e){  //则报错: 不能从int转换为boolean 
  3.   System.out.println("true"); 
  4. }  
  5. if(!e){ //未对参数类型int定义运算符!
  6.     System.out.println("true"); 
  7.   

PHP:

      
      
      
      
  1. <?php 
  2.   $e = 10; 
  3.   if($e){  
  4.     echo $e
  5.   }else
  6.     echo "false"
  7.  } //输出结果是 10 
  8.     

  另外php对变量的数据类型放的比较宽泛,可以先赋值,根据程序中的实际在改变其数据类型.[若有不同意见请指正]

]

第二步:0*3<=10*4 结果是为true.

随决定借助于非常优秀的eclipse软件。

当我输入以下语句的时候:

 System.out.println(!o*3<=o*4);

报出了如图所示的错误.错误提示表明:该表达式需要一个"()".

error

至此,结果为false就有了最好的解释。

修改语句后,输出结果:false.

 

与此问题相关的Java基础主要有两点:运算符的优先级(数字越小,优先级越高) 和 结合性,可见下图。至于运算符的分类就不赘述了。

优先级

 

   记住特殊的,一般的都好记了,关键是优先级,当然在程序设计的时候,可以提前需求分析择优选择运算符或者根据需要选取。

    所以理解就好,你说呢!

   "编程,只要掌握该门语言的核心思想,熟练运用就算入门了"

你可能感兴趣的:(java,运算符,优先级,结合性)