1、算术运算符
+ - × ÷ 跟小学数学中一模一样
// %:取模、取余。
// 他做的也是除法运算,只不过获取的是余数而已。
System.out.println(10 % 2);
System.out.println(10 % 3);
// 应用场景:
// 可以利用取模来判断一个数是奇数还是偶数
System.out.println(15 % 2);
//1 3 5 7...奇数 0 2 4 6...偶数 又叫:双数 倍数
//任何一个数 % 2 不是 0 就是 1
数值拆分
公式: 获取任意一个数上每一位数
个位:数字 % 10
十位:数字 / 10 % 10
百位:数字 / 100 % 10
千位:数字 / 1000 % 10
。。。以此类推。。。
2、隐式转换
取值范围小的和取值范围大的进行运算,小的会先提升为大的,再进行运算
byte b = 100;
int i = b; //可以成功赋值
int i = 10;
long n = 20L;
long result = i + n;
取值范围大小关系:double > float > long > int > short > byte
byte、short、char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
3、强制转换
书写格式: 目标数据类型 变量名 = (目标数据类型)被强转的数据;
public class Demo {
public static void main(String[] args) {
double a = 12.3;
int b = (int) a;
System.out.println(b); //12
}
}
强制转换有可能会导致数据发生错误。(数据的精度丢失)
要转成什么类型的,那么就在小括号中写什么类型就可以了。
4、字符串的 + 操作
当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。
当连续进行+操作时,从左到右逐个执行的。
public class Dem {
public static void main(String[] args) {
//两个字符串相加产生一个新的字符串
String name = "默默";
System.out.println("我的名字是:" + name); //我的名字是:默默
//从左到右逐个执行
System.out.println(1 + 2 + "里" + 2 + 1); //3里21
}
}
5、字符的 + 操作
当+操作中出现了字符,会拿着字符到ASCII码表中去查对应的数字,然后再进行计算
// ASCII码表中:
'a' ----- 97
'A' ----- 65
char c = 'a';
int result = c + 0;
System.out.println(result); //97
6、自增自减运算符
++ 自增运算符 | 就是把变量里面的值 +1 |
-- 自减运算符 | 就是把变量里面的值 -1 |
放在变量的前面,我们叫做:先++ 放在变量的后面,我们叫做:后++
int a = 10;
a++; //就是让变量a里面的值 + 1
System.out.println(a);//11
++a; //就是让变量a里面的值 + 1
System.out.println(a);//12
int b = 10;
b--; //就是让变量a里面的值 - 1
System.out.println(b);//9
--a; //就是让变量a里面的值 - 1
System.out.println(b);//8
不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。
7、赋值运算符
最为常用的: = 运算过程:就是把等号右边的结果赋值给左边的变量
public class OperatorDemo6 {
public static void main(String[] args) {
//1.最为简单的赋值运算符用法
int a = 10;//就是把10赋值给变量a
System.out.println(a);
//2.如果等号右边需要进行计算。
int b = 20;
int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量
System.out.println(c);
//3.特殊的用法
a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量
System.out.println(a);//20
}
}
运算规则: +=、-=、*=、/=、%=
就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。
public class OperatorDemo7 {
public static void main(String[] args) {
//赋值运算符
int a = 10;
int b = 20;
a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响
// 相当于 a = a + b;
System.out.println(a); //30
System.out.println(b); //20
}
}
8、关系运算符
符号 | 解释 |
== | 就是判断左边跟右边是否相等, 如果成立就是 true, 如果不成立就是 false |
!= | 就是判断左边跟右边是否不相等,如果成立就是 true, 如果不成立就是 false |
> | 就是判断左边是否大于右边, 如果成立就是 true, 如果不成立就是 false |
>= | 就是判断左边是否大于等于右边,如果成立就是 true, 如果不成立就是 false |
< | 就是判断左边是否小于右边, 如果成立就是 true, 如果不成立就是 false |
<= | 就是判断左边是否小于等于右边,如果成立就是 true, 如果不成立就是 false |
关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
9、逻辑运算符
| | 逻辑或(或者) | 两边都为假,结果才是假,只要有一个为真,那么结果就是真。 | 两边满足一个 |
|| | 运算结果跟 | 是一模一样的,只不过具有短路效果。 | ||
& | 逻辑与(并且) | 两边都为真,结果才是真,只要有一个为假,那么结果就是假。 | 两边都要满足 |
&& | 运算结果跟 & 是一模一样的,只不过具有短路效果。 | ||
^ | 异或 | 如果两边相同,结果为假,如果两边不同,结果为真 | |
! | 取反 | 假取反就是真,真取反就是假 |
// & 两边都是真,结果才是真。
System.out.println(true & true); //true
System.out.println(false & false); //false
System.out.println(true & false); //false
System.out.println(false & true); //false
// | 或 两边都是假,结果才是假,如果有一个为真,那么结果就是真。
System.out.println(true | true); //true
System.out.println(false | false); //false
System.out.println(true | false); //true
System.out.println(false | true); //true
//^ 左右不相同,结果才是true,左右相同结果就是false
System.out.println(true ^ true); //false
System.out.println(false ^ false); //false
System.out.println(true ^ false); //true
System.out.println(false ^ true); //true
//!
System.out.println(!false); //true
System.out.println(!true); //false
System.out.println(!!false);//注意点:取反最多只用一个。
10、三元运算符
又叫做:三元表达式 或者 问号冒号 表达式。
格式:关系表达式 ? 表达式1 :表达式2 ;
如果关系表达式的值为真,那么执行表达式1 如果关系表达式的值为假,那么执行表达式2。
public class OperatorDemo12 {
public static void main(String[] args) {
//需求:求两个数的较大值
int a = 10;
int b = 20;
//格式:关系表达式 ? 表达式1 : 表达式2 ;
//注意点:
//三元运算符的最终结果一定要被使用。
//要么赋值给一个变量,要么直接输出。
int max = a > b ? a : b ;
//赋值给一个变量打印变量。
System.out.println(max); //20
//或者直接打印
System.out.println(a > b ? a : b); //20
}
}
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。