java基础5.运算符
赋值运算符
在Java中,使用'='对一个对象进行赋值时,真正操作的是它的引用,即是对对应的引用进行拷贝。这也正是上一节内容中引用类型的含义。
比如:
Blog blog = new Blog("天码营的博客", "这是我的第一篇博客");
Blog blogB = blog; // 这表示blogB和blog指向同一篇博客
算数运算符
其他算数运算符'*', '/', '-', '%',对应的赋值运算符分别为'*=','/=','-=','%='。
关系运算符
'=='和'!='适用于所有类型的值和对象(即基本类型变量和引用类型变量)
'=='和'!='作为关系运算符只用来比较对象的引用。而对象本身(所有内容)的比较要用equals()方法。
如果想比较两个对象实际内容是否相同,需要调用对象的equals()方法。比如判断一个字符串str的内容是否为"abcd",应该这样比较:
if (str.equals("abcd")) {
}
下面这种方式是一种错误的方式:
if (str == "abcd") {
}
位运算符
| 位运算符 | 计算逻辑 |
|---|---|
& |
与运算:对于某一位,只要两个操作数都为1,则该位的结果为1,否则为0 |
| |
或运算:对于某一位,只要两个操作数有一个为1,则该位的结果为1,否则为0 |
^ |
异或运算:对于某一位,如果两个操作数不相同,则该位的结果为1,否则为0 |
~ |
非运算:按位补运算符翻转操作数的每一位 |
<< |
二进制左移运算符:左操作数按位左移右操作数指定的位数 |
>> |
二进制右移运算符:左操作数按位右移右操作数指定的位数 |
>>> |
二进制右移补零操作符:左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 |
注意>>和>>>的区别:
- 右移位运算符
>>,若操作的值为正,则在高位插入0;若值为负,则在高位插入1; - 右移补零操作符
>>>,无论正负,都在高位插入0。
三元运算符
比如我们要计算x的绝对值,可以通过如下代码实现:
if (x >= 0) {
y = x;
} else {
y = -x;
}
通过三元运算符,只需要一条语句y = x >= 0 ? x : -x;就可以完成,更为简洁。
类型转换运算符
它允许我们显式地进行类型转换,如:
int a = 10;
long b = (long) a;
long c = (long) 100;
在对浮点数进行类型转换时,我们需要注意截尾的问题。如我们要将10.9进行类型转换:(int) 10.9,它的值并不是四舍五入的11,而是10。
运算符的优先级(不需要过多的记忆)
-
.,(),[] -
单目
+(右到左结合), 单目-(右到左结合),++,--,~,! -
*,/,% -
+(左到右结合),-(左到右结合) -
>>,<<,>>> -
<,<=,>,>= -
==,!= -
& -
| -
^ -
&& -
|| -
?: -
=,+=等赋值运算符
浙公网安备 33010602011771号