Java运算符
- 六、Java运算符
- 6.1、运算符简介
- 6.2、数学运算符
- 实现简单的四则运算
- 支持简化运算符(+= -= *= /= %=)
- 6.3、关系运算符
- 6.4、三目(赋值)运算符
- 比较两个大小,来返回max
- 传统方法:
- 6.5、位运算
- 观察与操作 &、|
- 移位有乘除属性,求2的3次方
本系列内容为阿里云大学 java学习路线里的内容
六、Java运算符
6.1、运算符简介
所有程序开发都是一种数字处理的游戏,那么对于数字的处理一定会有所谓的操作符。
对于程序开发而言,会提供有大量的基础运算符,那么这些运算符也都会提供各自的优先顺序,不建议取记优先级。可以加括号,括号优先级最高。
对于程序开发而言,个人不建议编写太复杂的运算。
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int result = x -- + y++ * -- y / x / y * ++ x - --y + y ++ ;
System.out.println(result) ;
}
}
Output:
30
如果在项目代码里按这样逻辑写了代码,会被骂,写简单易懂的代码。
6.2、数学运算符
在Java中数学运算都提供标准支持,包括四则运算等。
实现简单的四则运算
public class test {
public static void main(String args[]) {
int result = 10;
result = result + 20;
System.out.println(result);
}
}
Output:
30
支持简化运算符(+= -= *= /= %=)
public class test {
public static void main(String args[]) {
int result = 10;
result += 20;
System.out.println(result);
}
}
Output:
30
结果一样
最头疼的是"++" “–”,有两类使用方法
- ++变量:先自增/减,再运算
- 变量++:先运算,再自增减
public class test {
public static void main(String args[]) {
int x = 10;
int y = 20;
int result = ++ x - y --;
// 1、++ x:首先x的内容要先自增1,为11;
// 2、y --:先进行计算,使用的内容是20,计算完成后自减
System.out.println("计算结果:" + result); //-9
System.out.println("x=" + x); //11
System.out.println("y=" + y); //19
}
}
Output:
计算结果:-9
x=11
y=19
这是当初内存量不大时用的,现在不建议这么写,如果要写可以考虑分开。
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
++ x ;
int result = x - y;
y -- ;
System.out.println("计算结果:" + result) ; // -9
System.out.println("x = " + x) ; // 11
System.out.println("y = " + y) ; // 19
}
}
Output:
计算结果:-9
x=11
y=19
6.3、关系运算符
主要特征是大小的处理:> , < , >= , <=,!=, ==。所有的关系运算返回的结果都是布尔类型。
在关系判断时,特别注意相等的判断问题。在Java里,=表示赋值,内容的比较用==
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
boolean flag = x > y ; // false
System.out.println(flag) ;
}
}
Output:
false
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 10 ;
boolean flag = x == y ; // true
System.out.println(flag) ;
}
}
Output:
true
public class test {
public static void main(String args[]) {
char c = '建';
System.out.println((int)c); //24314
}
}
Output:
24314
public class test {
public static void main(String args[]) {
char c = '建' ;
boolean flag = 24314 == c ; // true
System.out.println(flag) ;
}
}
Output:
true
6.4、三目(赋值)运算符
在程序开发中,三目运算用的比较多,合理的使用可以避免一些大范围的程序编写。 是一种设置逻辑关系的判断后才可进行赋值的操作。
关系运算符 ? 满足时的运算:不满足时的运算
比较两个大小,来返回max
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判断x与y的大小关系来决定最终max变量的内容
int max = x > y ? x : y ;
System.out.println(max) ;
}
}
Output:
20
传统方法:
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判断x与y的大小关系来决定最终max变量的内容
int max = 0 ;
if (x > y) {
max = x ;
} else {
max = y ;
}
System.out.println(max) ;
}
}
Output:
20
代码长
三目运算允许嵌套,但是可读性差
public class test {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int z = 15 ;
int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ;
System.out.println(max) ;
}
}
Output:
20
根据实际情况决定是否使用
6.5、位运算
指可以直接进行二进制数据的计算处理,主要有与(&) 或(|) 异或(^) 取反(~) 移位处理(>> <<)
10进制–>2进制,处以2取余
1 2 4 8 16
1 0 1 1
观察与操作 &、|
&:如果两位都是 1 结果才是 1 ,如果一位是 0 结果就是 0
|:如果有一位是 1 结果就是 1 ,如果两位是 0 结果才是 0
public class test {
public static void main(String args[]) {
int x =13;
int y =7;
System.out.println(x&y);
System.out.println(x|y);
}
}
Output:
5
15
13的二进制:00001101
7的二进制:00000111
&的运算:00000101
|的运算:00001111
移位有乘除属性,求2的3次方
public class test {
public static void main(String args[]) {
int x = 2 ;
System.out.println(x << 2) ;
System.out.println(x) ;
}
}
Output:
8
2
2的二进制:00000010
向左移两位:00001000
之前在内存有限时,很少有人使用移位来操作乘除
Q: 请解释& 和 && ,| 和 ||的区别
& 和 | 两个运算符可以进行位运算与逻辑运算:
在进行逻辑运算时所有的判断条件都要执行 在进行位运算时只针对当前的数据进行与和或处理 在逻辑运算上还可以使用&& , ||
&&:在若干个条件判断,如果前面返回false,后续条件都不执行和判断
在进行位运算时只针对当前的数据进行与和或处理
||: 在在若干个条件判断,如果前面返回true,后续条件都不执行和判断