【JAVA】运算符总结

优先级

运算符的优先级决定了存在多个运算符时的计算顺序。其中,最简单的规则就是乘法和除法在加法和减法之前完成。程序员经常都会忘记其他优先级规则,所以应该用括号明确规定计算顺序。

赋值

赋值是用等号运算符(=)进行的。它的意思是“取得右边的值,把它复制到左边”。右边的值可以是任何常数、变量或者表达式,只要能产生一个值就行。但左边的值必须是一个明确的、已命名的变量。也就是说,它必须有一个物理性的空间来保存右边的值。举个例子来说,可将一个常数赋给一个变量(A=4;),但不可将任何东西赋给一个常数(比如不能4=A)。

算术运算符

Java的基本算术运算符与其他大多数程序设计语言是相同的。其中包括加号(+)、减号(-)、除号(/)、乘号(*)以及模数(%,从整数除法中获得余数)。整数除法会直接砍掉小数,而不是进位
“Ulcer Addicts Really Like C A lot”,即“溃疡患者特别喜欢(维生素)C”。

助记词运算符类型运算符
UlcerUnary+ - ++ – [[ rest…]]
AddictsArithmetic (and shift)* / % + - << >>
ReallyRelational> < >= <= == !=
LikeLogical (and bitwise)&& || & | ^
CConditional (ternary)A > B ? X : Y
A LotAssignment= (and compound assignment like *=)

一元加、减运算符

一元减号(-)和一元加号(+)与二元加号和减号都是相同的运算符。

关系运算符

关系运算符生成的是一个“布尔”(Boolean)结果。它们评价的是运算对象值之间的关系。若关系是真实的,关系表达式会生成true(真);若关系不真实,则生成false(假)。关系运算符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型。

逻辑运算符

**逻辑运算符AND(&&)、OR(||)以及NOT(!)**能生成一个布尔值(true或false)——以自变量的逻辑关系为基础。

指数计数制(Exponential notation)

在科学和工程学中,e指的是2.718
在Java中e指的是10

按位运算符(Bitwise operators)

按位运算符允许操作单个“比特”,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。

按位AND运算符(&)
若两个输入位都是1,则按位AND运算符(&)在输出位里生成一个1;否则生成0。
按位OR运算符(|)
若两个输入位里至少有一个是1,则按位OR运算符(|)在输出位里生成一个1;只有在两个输入位都是0的情况下,它才会生成一个0。
按位XOR(^,异或)
若两个输入位的某一个是1,但不全都是1,那么按位XOR(^,异或)在输出位里生成一个1。只有在全为0的情况下生成0
按位NOT(~,也叫作“非”运算符)属于一元运算符;它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位NOT生成与输入位的相反的值——若输入0,则输出1;输入1,则输出0。

移位运算符(Shift operators)

移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。
**左移位运算符(<<)**能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0

若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。
若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。
但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果

移位可与等号(<<=或>>=或>>>=)组合使用。此时,运算符左边的值会移动由右边的值指定的位数,再将得到的结果赋回左边的值。

字符串运算符

如果表达式以String开头,则所有接在其后的操作数都必须是String
见例子:

//: operators/StringOperators.java 
import static net.mindview.util.Print.*; 
public class StringOperators { 
	public static void main(String[] args) { 
		int x = 0, y = 1, z = 2; 
		String s = "x, y, z "; 
		print(s + x + y + z); 
		print(x + " " + s); // Converts x to a String
		s += "(summed) = "; // Concatenation operator 
		print(s + (x + y + z)); 
		print("" + x); // Shorthand for Integer.toString() 
	} 
} 
/* Output: 
x, y, z 012 
0 x, y, z 
x, y, z (summed) = 3 
0 
*///:~

注意有时空字符串接+再接基础型,没用调用显示方法(Integer.toString())也输出字符串

逗号运算符

在C和C++里,逗号不仅作为函数自变量列表的分隔符使用,也作为进行后续计算的一个运算符使用。在Java里需要用到逗号的唯一场所就是for循环。

造型运算符

“造型”(Cast)的作用是“与一个模型匹配”。在适当的时候,Java会将一种数据类型自动转换成另一种。例如,假设我们为浮点变量分配一个整数值,计算机会将int自动转换成float。通过造型,我们可明确设置这种类型的转换,或者在一般没有可能进行的时候强迫它进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值