目录
Java语言支持如下运算符:
算术运算符,很好理解,平时算数中的加减乘除,这里特别注意。%是求余的意思
赋值运算符和关系运算符不多描述,记住一点:java中相等的意思是两个等于号==,不相等是!=
逻辑运算符:&&是与(and),||是或(or),!是非的意思(是或不是)
后面三个了解下,后面会深入。
一、算术运算符:
这里在运算时要注意数据类型,我们这里是int类型,所以a/b自动向下取整取0了。
再看一个栗子:
输出结果为
这里就要提到一个规律了:
当数值相加是,有long类型的数据最后结果自动转换为long,没有就统一都是int类型
看个图就明白了:
我们这里把c+d的值通过类型转换转成String类型,他报了个什么错?不可以把int类型转化为String类型,欸,这说明他的值就是int类型。简洁明了。
二、关系运算符:
接下来划重点:
三、自增自减:++,--
先看一个栗子:
欸,输出结果为5,3,5。这是为什么呢?
这就涉及到a++和++a的不同了。
首先,要知道,a++的含义是先赋值再自己+1,++a是先自己+1再赋值给别人
来给程序加点东西:
这里我在 int b=a++;后面输出了一个a的值,输出的结果为4,而我们原本输出b的值为3,这说明什么?刚好就证明了a++是先把自己本身的值赋值给b,然后自己本身再+1,这样就简洁明了。
那int c=++a 又为什么等于5呢?
那是因为前面的代码运行完a的值已经等于4了,且我们前面说到++a是先自己加1再赋值,所以 c=4+1=5。
自减和自加同理。
四、逻辑运算符:
看个栗子:
第一个&&(and、和的意思):我和你,全真才叫真,有一个假就是假。
第二个||(或、or的意思):我或者你,有一个真的就是真,全都假的才叫假
第三个!(取反):假变真,真变假。
记住一点:逻辑运算符会执行短路运算:
那么什么是短路运算呢?做个实验:
这里输出结果为:
看,c的值还是等于5,这说明什么?说明没有执行c++,说明 boolean d = (c<4)&&(c++<4); 这行代码根本没有运行到c++<4那里,再判断c<4为假的时候就确定了d的值为假了(&&符号有假即假原理),没有再往后运行了,这个就是短路运算。
五、位运算符(了解):
上图:
再来看下<<(左移)和>>(右移):
六、扩展赋值运算符:
扩展一个东西,叫做字符串连接符:(+)
七、条件运算符 ? ,:(三元运算符):
x?y:z即为
如果x=true,则结果为y,否则结果为z
看个栗子:
输出结果为及格。
最后,Java中运算符是有分优先级的:
优先级 | 描述 | 运算符 | 结合性 |
1 | 括号 | ()可以改变符号的优先级 | |
2 | 正负号 | +,- | 从右到左 |
3 | 一元运算符 | ++,--,! | 从右到左 |
4 | 乘除 | *,/,% | 从左到右 |
5 | 加减 | +,- | 从左到右 |
6 | 移位 | >>,<< | 从左到右 |
7 | 比较大小 | >,< ,>=,<= | 从左到右 |
8 | 比较是否相等 | ==,!= | 从左到右 |
9 | 按位与运算 | & | 从左到右 |
10 | 按位异或运算 | ^ | 从左到右 |
11 | 按位或运算 | | | 从左到右 |
12 | 逻辑与 | && | 从左到右 |
13 | 逻辑或 | || | 从左到右 |
14 | 三元运算符 | ? : | 从右到左 |
15 | 赋值运算符 | = | 从右到左 |
最后,我把程序流程拆解再注释里:
简洁明了。
八、扩展一下Java类Math的用法:
参考大佬写的:
Java中Math函数的使用_xuexiangjys的博客-CSDN博客_java math
这里面是有很多运算方法的。
我们举个栗子:
package operator;
public class Demo05 {
public static void main(String[] args) {
// Math的用法:
/* Math.sqrt() : 计算平方根
Math.cbrt() : 计算立方根
Math.pow(a, b) : 计算a的b次方
Math.max( , ) : 计算最大值
Math.min( , ) : 计算最小值
Math.abs() : 取绝对值*/
System.out.println(Math.sqrt(16)); // 4.0
System.out.println(Math.cbrt(8)); // 2.0
System.out.println(Math.pow(3, 2)); // 9.0
System.out.println(Math.max(2.3, 4.5));// 4.5
System.out.println(Math.min(2.3, 4.5));// 2.3
/**
* abs求绝对值
*/
System.out.println(Math.abs(-10.4)); // 10.4
System.out.println(Math.abs(10.1)); // 10.1
/**
* ceil天花板的意思,就是逢余进一
*/
System.out.println(Math.ceil(-10.1)); // -10.0
System.out.println(Math.ceil(10.7)); // 11.0
System.out.println(Math.ceil(-0.7)); // -0.0
System.out.println(Math.ceil(0.0)); // 0.0
System.out.println(Math.ceil(-0.0)); // -0.0
System.out.println(Math.ceil(-1.7)); // -1.0
System.out.println("-------------------");
/**
* floor地板的意思,就是逢余舍一
*/
System.out.println(Math.floor(-10.1)); // -11.0
System.out.println(Math.floor(10.7)); // 10.0
System.out.println(Math.floor(-0.7)); // -1.0
System.out.println(Math.floor(0.0)); // 0.0
System.out.println(Math.floor(-0.0)); // -0.0
System.out.println("-------------------");
/**
* rint 四舍五入,返回double值 注意.5的时候会取偶数 异常的尴尬=。=
*/
System.out.println(Math.rint(10.1)); // 10.0
System.out.println(Math.rint(10.7)); // 11.0
System.out.println(Math.rint(11.5)); // 12.0
System.out.println(Math.rint(10.5)); // 10.0
System.out.println(Math.rint(10.51)); // 11.0
System.out.println(Math.rint(-10.5)); // -10.0
System.out.println(Math.rint(-11.5)); // -12.0
System.out.println(Math.rint(-10.51)); // -11.0
System.out.println(Math.rint(-10.6)); // -11.0
System.out.println(Math.rint(-10.2)); // -10.0
System.out.println("-------------------");
/**
* round 四舍五入,float时返回int值,double时返回long值
*/
System.out.println(Math.round(10)); // 10
System.out.println(Math.round(10.1)); // 10
System.out.println(Math.round(10.7)); // 11
System.out.println(Math.round(10.5)); // 11
System.out.println(Math.round(10.51)); // 11
System.out.println(Math.round(-10.5)); // -10
System.out.println(Math.round(-10.51)); // -11
System.out.println(Math.round(-10.6)); // -11
}
}