运算符 (operator)

算术运算符 二元运算符 +  , -  , *  ,/  ,%
一元运算符 ++, --
赋值运算符 =
扩展运算符 += , -= , *= ,/=
关系运算符 >  ,  <  ,  >=  ,  <=  ,  ==  ,  !=  , instanceof (判断某个对象是不是类)
逻辑运算符 &&(与)  ,  || (或)  ,  ! (非)  ,  ^ (异或)
位运算符 &  ,  |  ,  ^  ,  ~(非)  ,   >>  ,  <<  ,  >>>
条件运算符 ?:(唯一需要三个操作数的运算符)
字符串连接符 +

各种运算符

算术运算符

二元运算符

public class Test{
public static void main(String[] args){
int a = 3;
int b = 5;
int c = a + b;
int d = a - b;
int e = a * b;
int f = b / a;
int g = a % b; // 取模运算
System.out.println("a为" + a);
System.out.println("b为" + b);
System.out.println("c为" + c);
System.out.println("d为" + d);
System.out.println("e为" + e);
System.out.println("f为" + f); // 整型除法出现小数不存在四舍五入,只有向下取整
System.out.println("g为" + g);
}
}

二元运算符的一些运算规则

整数运算

~如果两个操作数有一个为long,则结果为long(向上兼容)

~如果没有long时,结果为int,即使操作数全为short,byte, 结果也为int

import java.util.function.DoubleBinaryOperator;
public class Test{
public static void main(String[] args){
int a = 3;
long b = 4L;
// int c = a + b;// 会报错, 不兼容
long c = a + b;
System.out.println(c);
int d = 10;
double e = d / a; // 整数和整数相除只会保留整数部分
System.out.println(e);
}
}


浮点运算

~如果两个操作数有一个为double,则结果为double

~只有两个操作数全为float时,结果才为float

public class Test{
public static void main(String[] args){
int a1 = 3;
double a2 = 3.0;
int b1 = 4;
double b2 = 4.0;
double c1 = a1 / b1;
double c2 = a1 / b2;
double c3 = a2 / b1;
double c4 = a2 / b2;
System.out.println("整数除整数 : " + c1);
System.out.println("整数除浮点数 : " + c2);
System.out.println("浮点数除整数 :" + c3);
System.out.println("浮点数除浮点数 :" + c4);
}
}


取模运算

~其操作数也可以是浮点数,一般使用整数,结果是”余数“,”余数“符号和左边的操作数相同,

   如 -7 % 3 = -1,7 % -3 = 1

 

 

一元运算符

public class Test{
public static void main(String[] args){
int b = 30;
//自增
b ++;
System.out.println(b);
//自减
b --;
System.out.println(b);
int a = 40;
System.out.println("进行任何操作前是\t" + a);
System.out.println("自增\t" + a ++); // 用完才自增
System.out.println("自增后\t" + a);
System.out.println("自减\t" + a --); // 用完才自减
System.out.println("自减后\t" + a + "\n\n");
int c = 60;
System.out.println("进行任何操作前是\t" + c);
System.out.println("自增\t" + ++ c); // 先增再用
System.out.println("自增后\t" + c);
System.out.println("自减\t" + -- c); // 先减再用
System.out.println("自减后\t" + c);
}
}

 

赋值运算符

比较简单我甚至都不想写  比如 t = 3 就是将 3 这个值赋予 t 这个变量

 

 

扩展运算符

运算符 用法举例 等效的表达式
+= 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

 

关系运算符

关系运算符是用来进行比较运算的。关系运算的结果是布尔值: true / false

运算符 含义 运用示例
== 等于 a == b
!= 不等于 a != b
> 大于 a > b
< 小于 a < b
>= 大等于 a >= b
<= 小等于 a <= b

注意事项

1. = 是赋值运算符,真正的判断两个操作数是否相等的运算符是 ==

2. ==、 != 是所有(基本和引用)数据类型都可以使用的

3. >、>= 、< 、<= 、仅针对数值类型(byte/short/int/long, double/float, char)

 

 

逻辑运算符

运算符 说明
& 只要有一个为false,则为false
短路与 &&
| 只要有一个为true,则为true
短路或 ||
! 取反
异或 ^ 相同为false, 相异为true

短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符的左边的操作数就能确定该逻辑表达式的真值,

则不会继续计算运算符右边的操作数,提高效率。

public class Test{
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println("与运算示例\t" + (a & b));
System.out.println("或运算示例\t" + (a | b));
System.out.println("非运算示例\t" + !a);
System.out.println("异或运算示例\t" + (a ^ b));
// 短路与、短路或
// int b3 = 3/0; //会报错,不能除以0
boolean c = (1 > 2) && (4 < 3 / 0); //不会报错, 一假即假
// Boolean d = (1 > 2) & (4 < 3 / 0); //会报错
System.out.println("\n短路与\t" + c);
// System.out.println(d);
boolean e = (2 > 1) || (3/0 == 0); //不会报错,一真即真
// boolean f = (2 > 1) | (3/0 == 0); //会报错
System.out.println("\n短路或\t" + e);
}
}

 

 

位运算符

位运算符 说明
~ 取反
& 按位与
| 按位或
^ 按位异或
<< 左移运算符,左移n位相当于乘2n
>> 右移运算符,右移n位相当于除2n取商
public class Test{
public static void main(String[] args){
int a = 7; // 0111
int b = 8; // 1000
System.out.println("按位与\t" + (a & b)); // 0000
System.out.println("按位或\t"+ (a | b)); // 1111
System.out.println("按位取反\t" + ~ b);
// 0 1000 取反 是对其补码 0 1000 全部取反 1 0111 末尾减一得反码 1 0110 算原码 1 1001 即 -9
System.out.println("按位异或\t" + (a ^ b)); // 1111 相同为0,相异为1
System.out.println("左移\t" + (b << 1)); // 相当于 8 * 2
System.out.println("右移\t" + (a >> 1)); // 相当于 7 / 2
}
}

注:移位运算比普通得 * 和 / 要快, 像乘2和除以2移位运算符是最快的

 

条件运算符

格式 X ? Y : Z
释义

如果X为true 返回 Y;X若为false 返回 Z

 

 

字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个字符串转化为字符串任何进行连接

public class Test{
public static void main(String[] args){
String a = "3";
int b = 4;
char c = 'h';
// 连接符要求至少有一个是String
System.out.println(a + b);
System.out.println(c + b);
System.out.println("" + c + b); // 这个时候才是输出字符串
}
}

 

运算符优先级

优先级 运算符
1 () 括号运算符
2 !、+(正号)、-(负号) 一元运算符
~ 位运算符
++ 、 -- 递增和递减运算符
3 * 、/ 、% 算术运算符
4 +、- 算术运算符
5 << 、 >> 位左移、右移运算符
6 >、 >=、 <、 <= 关系运算符
7 == 、!= 关系运算符
8 & 位运算、逻辑运算符
9 ^ 位运算、逻辑运算符
10 | 位运算、逻辑运算符
11 && 逻辑运算符
12 || 逻辑运算符
13 ?: 条件运算符
14 =、+=、-=、*=、/=、 %= 赋值运算符、扩展运算符

 

posted @   我就一水  阅读(281)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示