声明:本节内容为本人观看“遇见狂神说”Java教学视频后总结,仅供学习参考。
(1)加减乘除运算
package 运算符;
public class demo1 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+b);
System.out.println(a*b);
System.out.println(a-b);
System.out.println(a/(double)b); //注意:当结果为小数时,要转化类型。否则两个整数相除,不会保留小数部分
}
}
注意:char,byte,short类型在做加减乘除运算时,会自动将结果转化为int类型。
例如:
package com.oy.运算符;
public class Demo10 {
public static void main(String[] args) {
byte a = 1;
short b = 2;
short c = a+b;
System.out.println(c);
}
}
结果如下:
(2)关系运算符
注意:关系运算符返回的是一个布尔值(true或者false)
package 运算符;
public class demo2 {
public static void main(String[] args) {
int a = 20;
int b = 10;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a >= b);
System.out.println(a <= b);
}
}
运行结果如下:
true
false
false
true
true
false
(3)取余和取模运算符
- 取余:取除法运算后的余数,作为运算的最终结果。
- 取模:取除法运算后的商,作为运算的最终结果。
package 运算符;
public class demo3 {
public static void main(String[] args) {
int a = 10;
int b = 42;
System.out.println(b % a); //取余
System.out.println(b/a); //取模:本质还是除法,当结果为整数是就相当于取模
}
}
运算结果如下:
2
4
(4)自增自减运算
注意:自增自减运算本质上很简单,对一个变量做自增自减时(如:a++,a–)。就相当于a=a+1或a=a-1
。但是有一个需要特别注意的点就是运算符的位置。例如:
int b = a++
:运算过程是a先赋值给b,然后a在自增1。int b = ++a
:运算过程是a先自增1,然后赋值给b。
package 运算符;
public class demo4 {
public static void main(String[] args) {
int a = 5;
int b = a++;
System.out.println(b);
System.out.println(a);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
int c = 5;
int d = ++a;
System.out.println(d);
System.out.println(c);
}
}
运算结果如下:
5
6
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7
5
(5)逻辑运算符
逻辑运算符,是用来连接两个布尔类型结果的运算符(!
除外),运算结果一定是boolean值true
或者false
逻辑运算符 | 符号解释 | 符号特点 |
---|---|---|
& | 与,且 | 有false 则false |
| | 或 | 有true 则true |
^ | 异或 | 相同为false ,不同为true |
! | 非 | 非false 则true ,非true 则false |
&& | 双与,短路与 | 左边为false,则右边就不看 |
|| | 双或,短路或 | 左边为true,则右边就不看 |
package 运算符;
public class demo5 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println(a && b);
System.out.println(a || b);
System.out.println(!a);
}
}
运算结果如下:
false
true
false
(6)位运算
- &(与):参与计算的两边都为1才为1,否则为0。
0011 1100
0000 1101
&运算结果:
0000 1100
- |(或):参与计算的两边都为0才为0,否则为1。
0011 1100
0000 1101
|运算结果:
0011 1101
- ^:参与计算的两边相同为0,不同为1。
0011 1100
0000 1101
^运算结果:
0011 0001
- ~:对参与运算的数据取反,0则为1,1则为0。
0000 1101
~运算结果:
1111 0010
-
<<
(左移):a<<b
将数据a的位数向左移b位,每左移一位效果与*2
相同。 -
>>
(右移):a>>b
将数据a的位数向右移b位,每右移一位效果与/2
相同。
练习:
package 运算符;
public class demo6 {
public static void main(String[] args) {
/*
分析:
int a = 10; (0000 1010)
int b = 25; (0001 1001)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
a&b = 8 (0000 1000)
a|b = 27 (0001 1011)
a^b = 19 (0001 0011)
~b = -26 (1110 0110)
a<<3 = 80 (0101 0000)
a>>1 = 5 (0000 0101)
*/
int a = 10;
int b = 25;
System.out.println("a&b="+(a&b));
System.out.println("a|b="+(a|b));
System.out.println("a^b="+(a^b));
System.out.println("~b="+(~b));
System.out.println("a<<3="+(a<<3));
System.out.println("a>>1="+(a>>1));
}
}
运算结果如下:
a&b=8
a|b=27
a^b=19
~b=-26
a<<3=80
a>>1=5
(7)加等于减等于…
- a+=b:等价于
a=a+b
。 - a-=b:等价于
a=a-b
。 - a*=b:等价于
a=a*b
。 - a/=b:等价于
a=a/b
。 - 注意:使用
+=,-=,*=,/=
赋值运算符,不会导致数据类型改变。而使用+,-,*,/
运算符会导致两个char,short,byte
计算数据结果自动改变为int
(8)扩展:含字符串的+运算
- 当
+
运算表达式中包含字符串时,会将其他数字也转化为字符串然后拼接起来。但是字符串前后的数字处理方式不一样。
package com.oy.运算符;
public class Demo10 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("哈哈"+a+b); //字符串后面的数字不会做计算处理,直接当成字符串拼接起来
System.out.println(a+b+"哈哈"); //字符串前面的数字会先做计算处理,然后当成字符串拼接起来
System.out.println("哈哈"+(a+b)); //可以使用小括号来改变优先级
}
}
结果如下:
哈哈1020
30哈哈
哈哈30
(9)三元运算符
x ? y : z
:如果x的值为真,则结果为y,否则结果为z。
package 运算符;
public class demo8 {
public static void main(String[] args) {
boolean x1 = true;
boolean x2 = false;
int y = 100;
int z = 200;
System.out.println(x1?y:z);
System.out.println(x2?y:z);
}
}
运算结果如下:
100
200