Java入门(四):运算符优先级、关键字与保留字
上次介绍了Java的运算符,今天来介绍下运算符的优先级,以及Java的关键字、保留字。
一、运算符优先级
| 
 序号  | 
 运算符  | 
 名称  | 
 目数  | 
 结合性  | 
 说明  | 
| 
 1  | 
 [ ]  | 
 方括号  | 
 从左向右  | 
 优先级最高  | 
|
| 
 .  | 
 点号  | 
 双目  | 
|||
| 
 ( )  | 
 圆括号  | 
||||
| 
 2  | 
 !  | 
 逻辑非运算  | 
 单目  | 
 从右向左  | 
|
| 
 ~  | 
 按位非运算  | 
 单目  | 
|||
| 
 ++  | 
 自增  | 
 单目  | 
|||
| 
 --  | 
 自减  | 
 单目  | 
|||
| 
 +  | 
 正号  | 
 单目  | 
|||
| 
 -  | 
 负号  | 
 单目  | 
|||
| 
 ( )  | 
 强制类型转换  | 
||||
| 
 new  | 
 new关键字  | 
||||
| 
 3  | 
 *  | 
 乘号  | 
 双目  | 
 从左向右  | 
 算术运算符  | 
| 
 /  | 
 除号  | 
||||
| 
 %  | 
 取余  | 
||||
| 
 4  | 
 +  | 
 加号  | 
 双目  | 
 从左向右  | 
 算术运算符  | 
| 
 -  | 
 减号  | 
||||
| 
 5  | 
 <<  | 
 带符号左移位运算  | 
 双目  | 
 从左向右  | 
 位运算符  | 
| 
 >>  | 
 带符号右移位运算  | 
||||
| 
 >>>  | 
 无符号右移运算  | 
||||
| 
 6  | 
 <  | 
 小于  | 
 双目  | 
 从左向右  | 
 关系运算符  | 
| 
 <=  | 
 小于等于  | 
 双目  | 
|||
| 
 >  | 
 大于  | 
 双目  | 
|||
| 
 >=  | 
 大于等于  | 
 双目  | 
|||
| 
 instanceof  | 
 对象是否为特定类的实例  | 
 双目  | 
|||
| 
 7  | 
 ==  | 
 关系等于运算  | 
 双目  | 
 从左向右  | 
 关系运算符  | 
| 
 !=  | 
 关系不等于运算  | 
 双目  | 
 从左向右  | 
||
| 
 8  | 
 &  | 
 按位与运算  | 
 双目  | 
 从左向右  | 
 位运算符  | 
| 
 9  | 
 ^  | 
 按位异或运算  | 
 双目  | 
 从左向右  | 
|
| 
 10  | 
 |  | 
 按位或运算  | 
 双目  | 
 从左向右  | 
|
| 
 11  | 
 &&  | 
 逻辑与运算  | 
 双目  | 
 从左向右  | 
 逻辑运算符  | 
| 
 12  | 
 ||  | 
 逻辑或运算  | 
 双目  | 
 从左向右  | 
|
| 
 13  | 
 ? :  | 
 三目运算  | 
 三目  | 
 从右向左  | 
|
| 
 14  | 
 =  | 
 赋值运算  | 
 双目  | 
 从右向左  | 
 优先级最低  | 
| 
 +=  | 
 混合赋值运算符  | 
||||
| 
 -=  | 
|||||
| 
 *=  | 
|||||
| 
 /=  | 
|||||
| 
 %=  | 
|||||
| 
 &=  | 
|||||
| 
 |=  | 
|||||
| 
 ^=  | 
|||||
| 
 <<=  | 
|||||
| 
 >>=  | 
|||||
| 
 >>>=  | 
下面用代码来介绍下从右向左计算。
package javalearningday03; /**
*
* @author 小川94
* @date 2018年1月28日
*/
public class JavaOperationPriority { public static void main(String[] args) {
testMethod();
} /**
* 由右向左计算,在进行运算代码编写时,建议加上括号区分层级性,增加可读性,同时方便后期维护
*/
public static void testMethod() {
// 右结合运算:运算符右边是否连接变量
// -n++,-号右边连接变量n,++右边没有连接变量,先算-号,再算++
int n = 5;
int m = -n++; //后加加是先算整体,(-n)++为-5
System.out.println(m); // m = -5
System.out.println(n); // n = 6 // ++右边连接变量i,先计算++i,再计算-(++i)
int i = 5;
int k = -++i;
System.out.println(i); // i = 6
System.out.println(k); // k = -6 int a = 5;
int b = -8-++a;
System.out.println(a); //
System.out.println(b); // -14 int c = 5;
int d = c<<=2; //c=c<<2; d = c
System.out.println(c); //
System.out.println(d); //
}
}
二、Java关键字和保留字
| 
 序号  | 
 关键字  | 
 含义  | 
| 
 1  | 
 abstract  | 
 修饰类、方法,成为抽象类、抽象方法  | 
| 
 2  | 
 assert  | 
 用来查找内部程序错误  | 
| 
 3  | 
 boolean  | 
 基本数据类型之一,布尔类型  | 
| 
 4  | 
 break  | 
 跳出一个switch或结束一个循环  | 
| 
 5  | 
 byte  | 
 基本数据类型之一,8位整型  | 
| 
 6  | 
 case  | 
 switch语句的一个分支  | 
| 
 7  | 
 catch  | 
 捕获异常的try块子句  | 
| 
 8  | 
 char  | 
 基本数据类型之一,字符型  | 
| 
 9  | 
 class  | 
 定义一个类  | 
| 
 10  | 
 const  | 
 未使用  | 
| 
 11  | 
 continue  | 
 跳过continue语句后面的循环部分,进入下一次循环  | 
| 
 12  | 
 default  | 
 switch的缺省子句  | 
| 
 13  | 
 do  | 
 do/while循环最前面的语句  | 
| 
 14  | 
 double  | 
 基本数据类型之一,双精度浮点数  | 
| 
 15  | 
 else  | 
 if语句的else子句  | 
| 
 16  | 
 enum  | 
 枚举类型  | 
| 
 17  | 
 extends  | 
 表明一个类型是另一个类型的子类型  | 
| 
 18  | 
 final  | 
 一个常量,或不能覆盖的一个类或非法  | 
| 
 19  | 
 finally  | 
 try语句块中总会执行的部分  | 
| 
 20  | 
 float  | 
 基本数据类型之一,单精度浮点数  | 
| 
 21  | 
 for  | 
 一种循环类型  | 
| 
 22  | 
 goto  | 
 未使用  | 
| 
 23  | 
 if  | 
 一个条件语句  | 
| 
 24  | 
 implements  | 
 定义一个类实现的接口  | 
| 
 25  | 
 import  | 
 导入一个包  | 
| 
 26  | 
 instanceof  | 
 判断一个对象是否为一个类的实例  | 
| 
 27  | 
 int  | 
 基本数据类型之一,32位整型  | 
| 
 28  | 
 interface  | 
 一种抽象类型,其中包含可以由类实现的方法  | 
| 
 29  | 
 long  | 
 基本数据类型之一,64位长整型  | 
| 
 30  | 
 native  | 
 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的  | 
| 
 31  | 
 new  | 
 用来创建新的实例对象  | 
| 
 32  | 
 null  | 
 一个空引用  | 
| 
 33  | 
 package  | 
 包含类的一个包  | 
| 
 34  | 
 private  | 
 一种访问控制方式,私有模式,只能由该类的方法访问  | 
| 
 35  | 
 protected  | 
 一种访问控制方式,保护模式,只能由该类、其子类和同包类的方法访问  | 
| 
 36  | 
 public  | 
 一种访问控制方式,共有模式,所有类的方法都可以访问  | 
| 
 37  | 
 return  | 
 从一个方法返回  | 
| 
 38  | 
 short  | 
 基本数据类型之一,16位短整型  | 
| 
 39  | 
 static  | 
 表明具有静态属性,属于类,不属于类的对象  | 
| 
 40  | 
 strictfp  | 
 对浮点数计算使用严格的规则  | 
| 
 41  | 
 super  | 
 超类对象或构造函数  | 
| 
 42  | 
 switch  | 
 一个选择语句  | 
| 
 43  | 
 synchronized  | 
 对线程而言是原子的方法或代码块  | 
| 
 44  | 
 this  | 
 当前类的一个方法或构造函数的隐含参数  | 
| 
 45  | 
 throw  | 
 抛出一个异常  | 
| 
 46  | 
 throws  | 
 一个方法可能抛出的异常  | 
| 
 47  | 
 transient  | 
 标志非永久的数据  | 
| 
 48  | 
 try  | 
 捕获异常的代码块  | 
| 
 49  | 
 void  | 
 修饰方法,表示无返回值  | 
| 
 50  | 
 volatile  | 
 确保一个字段可以由多个线程访问  | 
| 
 51  | 
 while  | 
 一种循环  | 
| 
 
  | 
||
| 
 52  | 
 true  | 
 不是关键字,是字面量,但是依旧不能当做变量名使用,属于保留字  | 
| 
 53  | 
 false  | 
文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!

公众号后台输入关键字“Java学习电子书”,即可获得12本Java学习相关的电子书资源,如果经济能力允许,还请支持图书作者的纸质正版书籍,创作不易。
Java入门(四):运算符优先级、关键字与保留字的更多相关文章
- java表达式中运算符优先级
		
运算符优先级:运算符*和/(以及%)的优先级高于+和-(优先级越高,越早运算) 在逻辑运算符中,!拥有最高优先级,之后是&&,接下来是||. 一般来说,相同优先级的运算符的运算顺序是从 ...
 - java中的标识符、关键字、保留字
		
Java中关键字(keyword)和保留字(reservedword) Keyword :Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等. Reserv ...
 - 针对安卓java入门:运算符和表达式
		
逻辑运算符 &&和&判断是一样的,区别在于过程,&会把整个过程算一遍,&&一旦碰到false就不会往下
 - js运算符、关键字、保留字、转义字符
 - Java 之常用运算符(3)
		
什么是运算符: 运算符是一种“功能”符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作. Java 语言中常用 ...
 - [Python3 填坑] 003 关键字?保留字?预留字?
		
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 问题的由来 2.2 网上搜索 2.3 结论 2.4 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/04 明细 坑的编 ...
 - 【JAVA零基础入门系列】Day5 Java中的运算符
		
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
 - 1.Java关键字和保留字
		
关键字和保留字 http://www.cnblogs.com/wwxbi/p/4292170.html 访问控制 private protected public 类,方法和变量修饰符 abstrac ...
 - java SE 入门之运算符(第三篇)
		
在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符.关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符). 我们一起来学习下吧! 一.赋值运算符 赋值运算符主要有五个.分别是 ...
 
随机推荐
- MySQL中间件之ProxySQL(9):ProxySQL的查询缓存功能
			
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的 ...
 - Perl输出复杂数据结构:Data::Dumper,Data::Dump,Data::Printer
			
输出复杂结构 Data::Dumper.Data::Dump.Data::Printer都可以用来输出复杂的数据结构.本文只介绍简单的几个输出形式,以后再需要的地方再详细介绍. 前两者建议传递数据结构 ...
 - 建了个QQ群,不定期分享一些资料,欢迎加入
			
技术源于生活,大家一起进阶 Java学习交流QQ群:603654340 大数据学习交流QQ群:217770236 感谢您的来访,不妨关注一下我吧……
 - VUE 组件通信总结
			
1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值 Child组件 <template> <span>{{message}}</span> ...
 - webpack 配置文件相关解说
			
博客地址:https://ainyi.com/10 webpack - 什么是webpack: WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它 ...
 - CLR 协变、逆变
			
看书看得有点晕了,协变.逆变傻傻分不清楚. 看到泛型和委托.委托方法,发现这里面的协变和逆变不一样. 泛型的逆变和协变:如果某个返回类型可以由其基类替换,那么这个类型就是支持协变的.如果某个参数类型可 ...
 - c# 关于字段内存排序
			
关键字:StructLayout.LayoutKind.Explicit.FieldOffset [StructLayout(LayoutKind.Explicit)] public class AA ...
 - JavaWeb学习日记----XML的解析
			
XML的解析简介: 在学习JavaScript时,我们用的DOM来解析HEML文档,根据HTML的层级结构在内存中分配一个树形结构,把HTML的标签啊,属性啊和文本之类的都封装成对象. 比如:docu ...
 - Contest2089 - 湖南多校对抗赛(2015.05.31) Swipe(csu1648)
			
Problem E: Swipe Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 100 Solved: 15[Submit][Status][Web ...
 - Springboot使用Filter以及踩过的坑
			
Springboot使用Filter以及踩过的坑 在Springboot中使用Filter有两种方式,注解方式,注册bean方式 一.注解@WebFilter 1.实现Filter接口(javax.s ...