第三章 Java 中的基本运算符
3.1 运算符
- 运算符按照其功能来分,有算数运算符,关系运算符,逻辑运算符,赋值运算符等
- 算术运算符即算术运算符号,是完成基本的算术运算 符号,即+、-、*、/
- 关系运算符有6种关系,分别为小于,大于、等于、大于等于、小于等于、不等于
- 逻辑运算符 即 与或非,分别代表 并且、或者、非
- 赋值运算符基本就是 =
- 运算符的优先级
- 括号优先级是最高的
- 算数运算符
- 在Java 中,+、-、*、/、% 分别代表加、减、乘、除、取模预算
- 参与出发运算的两个操作数都是整数时,表示整数除法,否则表示浮点数乘法
15/2 = 7
15.0/2 = 7.5
3.2 赋值运算符
- 在 Java 中所有的 ‘ = ‘ 号都代表赋值运算符,它的作用是将一个表达式的值赋给一个左值。
eg:
int a,b,c;
a=3;
b=4;
c=(a+b)*(2*a-b) // 得出14
- 赋值运算符二元运算符的简化格式,通常,将运算符放在赋值号的左侧(如: *=、+=、-=等)
eg:
x+=4 => x=x+4
3.3 关系运算符
- 关系运算符
- Java 中具有各种关系运算符,主要用于大小的比较处理,返回的是 boolean 类型。关系表达式的结果只能是 true 或 false,包括
= 大于或者大于等于
- < <=小于或者小于等于
- == 相等
- == 与 != 比较基本数据领是比较值,比较引用类型是虚地址
这段代码第三个解释写的有点歧义,感谢小红书用户 Lynn 的指出
public class Test{
public static void main(String[] args){
System.out.println(2!=0);//打印 true
System.out.println(3 == 8);//结果为 false
System.out.print(3>2?"对的":"错的"); //三元运算符,前面的逻辑表达式为真,则打印前者。相反,则为 false。结果打印是 错的,
}
}
- 三元运算符:设置一个逻辑关系的判断之后,才可以赋值
使用三元运算符比较三个数字的大小
public class Test{
public static void main(String[] args){
int a=10;
int y=20;
int c=15;
int max = x>y?(x>z?x:z):(y>z?y:z);//程序可读性变得很差
System.out.println(max);//三元运算符比较三个数字的大小
}
}
数据类型间有转型的支持,数据会变成 int 类型,然后进行比较
注意:
- Java中逻辑运算符使用 “&&” 表示 “与”,使用“||” 表示 “或”,使用 “!”表示取反运算
- “||” 是按照 “短路” 方式求值的,如果第一个操作数已经能够确定值,第二个操作数就不进行计算了。
- 连接两个 boolean 表达式
public class Test{
public static void main(String[] args){
System.out.println((1>5> && <2<4));//打印 false
System.out.println((1>5) || (2>1));//打印 true
}
}
3.5 算数运算符
3.5.1 简单的数学运算
public class calc {
public static void main(String[] args){
int x=2;
int y=3;
System.out.print(x+y); //5
System.out.print(x-y); //-1
System.out.print(x*y); // 6
System.out.print(x/y); // 1
}
}
3.5.2 自加,自减运算符
public class Test{
public static void main(String[] args){
int x;
x++;
x--;
}
}
3.5.3 位运算符
- 位运算可以直接进行二进制数据的处理:与(&)、或(|)、异或(^)、反码(~)、移位操作
- 位运算:(先转换成二进制再进行运算)
- 与(&)、非(~)、或(|)、异或(^)
- 移位运算符: <<、>> (有符号右移)、>>>(无符号右移)
- 左移 1位相当于乘以二,右移1位相当于除以 2,比乘除运算效率更高
public class Test {
public static void main(String[] args) {
int a=8,c;
c=a>>2; // 右移两位 等价于 8/2 = 4 4/2 = 2
System.out.print(c); // 2
c= a<<2; // 32 等价于 8*2 =16 16*2 =32
System.out.print(c); //32
}
}