java运算符
文章目录
1.运算符概述
运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
2.算术运算符
2.1 运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
int a = 1;
int b = 2;
int c = a + b;//+是运算符 a+b是表达式
2.2 算数运算符
运算符 | 含义 |
---|---|
+ | 求和 |
- | 相减 |
* | 相乘 |
/ | 求商 |
% | 取余(求模) |
-
: 减法,算数运算
*
: 乘法,算数运算
/
: 除法,两个操作数都是整数类型时,结果还是整数(小数部分不能四舍五入,而是自然截取),除数不能为0。两个操作数中只要有一个是浮点数,结果也是浮点数,此时允许除数是0,或者0.0,结果是正无穷大或负无穷大。
%
: 取余,求余结果不一定都是整数,当操作数中只要有一个是浮点数,则允许除数是0或0.0,结果是非数:NaN。
+
: 算术运算或者作为字符串连接运算符
字符的“+”操作
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double
// 可以通过使用字符与整数做算术运算,得出字符对应的数值是多少
char ch1 = 'a';
System.out.println(ch1 + 1); //结果 97+1=98
字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
System.out.println("字符" + 1); // 输出 字符1
例.
//二元运算符
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
int d = 4;
System.out.println(a + b);
System.out.println(b - a);
System.out.println(a * b);
System.out.println(b / a);
System.out.println(b % a);
}
//如果
3
1
2
2
0
3.赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。其中扩展的赋值运算符隐含了强制类型转换。
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a×b的值给a |
/= | 除后赋值 | a/=b,将a÷b的商给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
=
: 赋值是用等号运算符(=)进行的。它的意思是“取得右边的值,把它复制到左边”。
+=: a+=b ==> a=a+b;
-=: a-=b ==> a=a-b;
*=: a*=b==>a=a*b;
/=: a/=b==>a=a/b;
%=: a%=b==>a=a%b;
例.
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(a+=b);
System.out.println(a-=b);
System.out.println(b*=a);
System.out.println(b/=a);
System.out.println(b%=a);
}
//结果
3
10
200
20
0
注.使用扩展赋值运算符;1.提高执行效率。2.自动做强制类型转换。
4.自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
–或者++在变量前
当–出现在变量前,会先自减一或者自加一
,在做赋值运算
–或者++在变量后
当–出现在变量后,会先做赋值运算
,再自减1或者自加1
例.
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a++);
System.out.println(++a);
System.out.println(b--);
System.out.println(--b);
}
//结果
10
12
20
18
5.关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
1、> < >= <=
只能比较基本数据类型 byte short char int long float double
2、== !=
基本数据类型的数据,引用数据类型的数据都可以比较是否相等,最终的运算结果,都为boolean类型的值,要么是true,要么是false.
例.
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>=b);
System.out.println(a<b);
System.out.println(a<=b);
}
//结果
false
true
false
false
true
true
6.逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或a | b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑异或 | !a,结果和a的结果正好相反 |
例.
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^b);
System.out.println(!b);
}
//结果
false
true
true
true
6.1 短路逻辑运算符
短路 :如果第一个操作数已经能够决定最终的结果,第二个操作数不再执行
&&
:两边的操作数 都是true才是true,一个为false,结果就为false
||
:两边的操作数 一个为true就是true,两个都为false才是false
&
:逻辑与 &,无论左边真假,右边都要执行
|
:逻辑或 |,无论左边真假,右边都要执行
推荐使用&& 或者 ||,提议提高效率
public static void main(String[] args) {
Boolean a=true;
Boolean b=false;
System.out.println(a&&b);
System.out.println(a||b);
}
//结果
false
true
6.2 三元运算符
三元运算符的格式
关系表达式 ? 表达式1 : 表达式2;
问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其
逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
例.
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = a > b ? a : b;
System.out.println(c);
}
//结果
20
7.移位运算符
左移 <<: 最左侧位不要了, 最右侧补 0。
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)。
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)。
8.总结
java运算符总结的文章就介绍到这了,这边列举了部分例子供参考,仅作为学习笔记使用,欢迎批评指正,要是感兴趣可以关注微信订阅号 程序own