Java操作符作用于操作数,生成一个新值。

几乎所有的操作符都智能操作基本类型,例外的操作符是"="、"=="、和"!=",这些操作符可以操作所有的对象,除此之外,String类还支持"+"和"+="。

优先级

当一个表达式中存在多个操作符时,操作符的优先级决定了各部分的计算顺序。

赋值

赋值操作符"=",意思是"去右边的值,把它复制给左边"。右值可以是任意常数、变量或表达式,左值必须是一个明确的已命名变量。

基本操作符

Java基本元素操作符包括加号(+),减号(-),除号(/)、乘号(*)以及取模操作符(%)。

自动递增和递减

递减操作符是"--",意味"减少一个单位";递增操作符"++",意味"增减一个单位"。

这连个操作符有两种方式:前缀式和后缀式。前缀递增表示"++"操作符位于变量或表达式的前面,后缀递增表示"++"操作符位于变量或表达式的后面。

对于前缀递增和前缀递减,是先执行运算,再生成值。而对于后缀递增和后缀递减,会先生成值,再执行运算。

关系运算符

关系运算符生成的是一个boolean结果,它们计算的是操作数的值之间的关系。

关系操作符包括小于(<)、大于(>),小于或等于(<=)、大于或等于(>=),等于(==)以及不等于(!=)。

关系运算符==和!=适用于所有对象,比较的是对象的引用。如果相比较两个对象的实际内容是否相同,必须使用equals()方法;而基本类型直接使用==和!=比较。

逻辑运算符

逻辑运算符包括与(&&)、或(||)、非(!)能根据参数的逻辑关系,生成一个布尔值。

与、或、非操作只可应用与布尔值。

按位操作符

按位操作符/对两个参数中对应的位/执行布尔代数运算,并生成一个结果。

按位操作符与逻辑操作符使用同样的符号,但由于位是非常小,所以按位操作符只是用一个符号,即按位与(&)、按位或(|),按位非(~)。

位移操作符

位移操作符的运算对象是二进制的位。位移操作符只可用来处理整数类型。

左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0);"有符号"右移位操作符(>>)则按照操作右侧制定的位数将操作符左边的操作向右移动;"有符号"右移位操作符使用符号扩展:若符号为正,则在高位插入0;若符号为负,则在高位插入1;Java中增加了一种"无符号"右移位操作符(>>>),它使用零扩展:无论政府,都在高位插入0。

如果对char、byte或者short类型的数值进行位移操作,则在位移之前,他们先转换为int类型。

result = expression1 >> expression2

十进制整数转换为二进制整数

十进制整数转换为二进制整数采用"除2取余,逆序排列"法,即用2除以十进制整数,得到一个商和余数,再用2去除商,又得到一个商和余数,如此进行,直到商为1时为止,然后把先得到的余数作为二进制数的低位,后得到的余数作为二进制数的高位,依次排列。

例如302:302/3=152余0;152/2=75余1;72/2=37余1;37/2=18余1;18/2=9余0;9/2=4余1;4/2=2余0;2/2=1余0;1/2=0余1;故二进制数为100101110。

二进制整数转换为十进制整数

二进制整数转换为十进制整数采用"把二进制数首先写成加权系数展开式,然后按十进制加法规则求和"。

例如01101011:第0位,1乘2的0次方=1;1乘2的1次方=2;0乘2的2次方=0;1乘2的3次方=8;0乘2的4次方=0;1乘2的5次方=32;1乘2的6次方=64;0乘2的7次方=0;然后1+2+0+8+32+60=107。

负数的二进制表达式

负数是以其正值的补码的形式表达。

原码:一个整数,按照绝对值的大小转换成的二进制数

反码:将二进制数按位取反,得到的新二进制数称为原二进制数的反码(1变0,0变)

补码:反码加1称为补码,即要得到一个数的补码,先得到反码,然后反码加1,所得数为补码。比如00000101的反码是11111010,那么补码为11111010+1=11111011。

三元操作符

三元操作符也称为条件操作符:boolean-exp ? value0 : value1

如果boolean-exp的结果为true,则计算value0,如果为false,则计算value1。

条件运算符与if-eles完全不同,因为它会产生一个值。

字符串操作符+和+=

这个操作符在Java中有特殊用途:连接不同的字符串。

字符串操作符:如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型,编译器会把双引号内的字符序列自动转换成字符串。



说明:笔记内容摘自《SCJP考试指南》和《Think in Java》

关联:整理了一些Java软件工程师的基础知识点