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软件工程师的基础知识点