Java基础(五)---- 运算符
首先了解一下相关概念
运算符: 进行特定操作的符号,例如“+”
表达式: 用运算符连起来的式子叫做表达式
一、算术运算符
1.分类
符号 | 含义 |
---|---|
+ | 加法运算,字符串连接运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算(两数相除取余数) |
++、- - | 自增,自减运算 |
2.代码练习
public class Operator01 {
public static void main(String[] args) {
//先加减再打印
System.out.println(20+30);//结果为50
//两个变量的运算
int a = 10,b = 5;
System.out.println(a-b);//结果为5
//强制类型转换
double c = 10.00000000001;
int d = (int)c;
System.out.println(d);//结果为10
//除法运算
int e = 56,f = 7;
int g = e/f,h = e%f;
//System.out.println(e/f);//结果为8
//System.out.println(e%f);//结果为0
System.out.println(g+"......"+h);//结果为8......0
//一旦运算中有不同的数据类型,则按数据类型更大的那种进行计算
int j = 10;
double i = j * 2.013;
System.out.println(i);//结果为20.13
}
}
3.“+”常用的三种方法
- 对于
数值
就是加法
- 对于字符char来说在计算之前会被提升为int,然后再计算(
char本身为数字
) - 对于
字符串
String 来说,“+”代表字符串的连接
操作
4.自增,自减运算
-
自增运算符:++
-
自减运算符:- -
-
含义:让一个数字加一或者减一
-
格式:写在变量名之前,例如++a,- -a;写在变量名之后,例如a++,a- -
-
使用方式
(1)单独使用:不混和于其他步骤,使自己成为一个独立的步骤
(2)混合使用:和其他操作混合,例如与赋值混合,或者与打印混合等 -
使用区别
(1)单独
使用时:前++和后++没有任何区别 (都会加一)
(2)混合
使用时:前++先自增再使用;后++先使用后自增 -
自增,自减运算符使用练习
public class Operator02{
public static void main(String[] args) {
//1.单独使用
int n1 = 10;
System.out.println(n1);//结果为10
++n1;//先自增
System.out.println(n1);//结果11
n1++;//后自增
System.out.println(n1);//结果为12
//可以看出不论++在前还是在后,运行结果都是+1
System.out.println("==========分割线============");
//2.与打印混合使用
int n2 = 20;
System.out.println(++n2);//结果为21,变量n2已经加一
System.out.println(n2);//结果为21,变量现在的值是21
System.out.println(n2++);//结果为21,经过后自增变量现在的值已经变成了22
System.out.println(n2);//再次打印结果为22
System.out.println("==========分割线============");
//3.和赋值混合使用
int n3 = 30;
int n4 = --n3;
System.out.println(n4);//结果为29,这是混合使用,前- - ,
//变量n3立马减一,变成了29,然后将结果赋值给n4
n3 = 30;//再次给n3赋值为30
n4 = n3--;
System.out.println(n4);//结果为30,后自减,所以在赋值时还没有减一,赋值完成后再减一
System.out.println(n3);//结果为29
}
}
【tips】
1.只有整数取模运算才有意义
2. 一旦运算中有不同
的数据类型
,则按数据类型更大的
那种类型进行计算
3. 只有变量才可使用自增自减
二、赋值运算符
1.含义
将符号右侧的值赋值给左侧
符号 | 名称 |
---|---|
= | 等于号 |
+= | 加等号 |
-= | 减等号 |
*= | 乘等号 |
/= | 除等号 |
%= | 取模等号 |
2.基本赋值运算符
1.就是一个等号“=”,代表将右侧的值交给左边的变量,例如:
int a = 30;
3.复合赋值运算符
1.符号
符号 | 表达式 | 表达式的含义 | |
---|---|---|---|
+= | a += 1 | 相当于 | a = a + 1 |
-= | b -= 2 | 相当于 | b = b - 2 |
*= | c *= 3 | 相当于 | c = c * 3 |
/= | d /= 4 | 相当于 | d = d / 4 |
%= | e %= 5 | 相当于 | e = e % 5 |
2.代码练习
public class Operator03{
public static void main(String[] agrs){
int a = 1;
a += 5;
//按照公式进行翻译a += 5 → a = a + 5;
//a = 1 + 5 = 6
System.out.println(a);//结果为6
System.out.println("==========分割线============");
int b = 7;
x %= 3;
//按照公式进行翻译b %= 3 → b = b % 3;
//b = 7 % 3 = 1
System.out.println(b);//结果为1
}
}
3.注意事项
(1)只有变量
才能使用赋值运算符
,常量不能赋值
(2)复合赋值运算符
其中隐含了一个强制类型转换
三、比较运算符
1.含义
两个数据之间进行比较的运算,不能连续比较,运算结果都是布尔值true或者false
2.符号
符号 | 含义 |
---|---|
== | 比较符号两边数据是否相等,相等结果是true。 |
< | 比较符号左边的数据是否小于右边的数据,如果小于结果是true。 |
> | 比较符号左边的数据是否大于右边的数据,如果大于结果是true, |
<= | 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。 |
>= | 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。 |
!= | 不等于符号,如果符号两边的数据不相等,结果是true. |
3.代码练习
public class Operator04 {
public static void main(String[] args) {
char a = '我',b = '他';
System.out.println(a+0);//结果为25105,首先我们将字符所代表的的数字打印出来
System.out.println(b+0);//结果为20182
//使用比较运算符进行比较
System.out.println(a==b);//结果为false
System.out.println(a>b);//结果为true
System.out.println(a<b);//结果为false
System.out.println(a>=b);//结果为true
System.out.println(a<=b);//结果为false
System.out.println(a!=b);//结果为true
}
}
四、逻辑运算符
1.含义
直接比较两个布尔值
2.符号
符号 | 逻辑功能 |
---|---|
&&(短路与) | 有false则false,若&&左边表达式或者值为false,则右边不进行计算 |
II(短路或) | 有true则true,若II左边表达式或者值为true,则右边不进行计算 |
!(非) | 非false则true,非true则false |
&(并且) | 有false则false |
I(或者) | 有true则true |
^(异或) | 相同为false,不同为true |
3.代码练习
public class Logic {
public static void main(String[] args) {
System.out.println(true && false);//false
// true && true --> true
System.out.println(3 < 4 && 10 > 5);//true
System.out.println("===============");
System.out.println(true || false);//true
System.out.println(true || true);//true
System.out.println(false || false);//false
System.out.println("==============");
System.out.println(true);//true
System.out.println(!true);//false
}
}
【tips】
- 逻辑运算符只能用于boolean值
- “&&”、“||”左右都需要有一个boolean值,“!”只要有唯一一个boolean值即可
- 与,或两种逻辑运算符,如果有多个条件,可以连续写
两个条件:条件A && 条件B
多个条件:条件A && 条件B && 条件C - 与“&&”,或“||”,具有短路效果,如果左边已经可以判断得到最终结果,那么右边将不再执行,从而节省一部分性能,例如:
int a = 10;
System.out.println(3 > 4 && ++a < 100);//false
//false && ...
System.out.println(a);//10
System.out.println("==============");
int b = 20;
System.out.println(2 < 2 || ++b < 100);//true
//true || ...
五、三元运算符
1.定义
一元
运算符:需要一个数据
才就可以进行操作的运算符,例如自增自减、取反二元
运算符:需要两个数据
才可以进行操作的运算符,例如加法、赋值3三元
运算符:需要三个数据
才可以进行操作的运算符
2.格式
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
3.流程
1.首先判断是否成立
如果成立为true
,那么将表达式A的值赋值给左侧
的变量
如果不成立为false
,那么将表达式B的值赋值给左侧
的变量
2.代码练习
public class Operator05 {
public static void main(String[] args){
int a = 10;
int b = 20;
//数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
int c = a > b ? a : b;
System.out.println(c);//20
System.out.println("===========================");
//int d = 3 > 4 ? 2.5 : 10;//右侧数据类型与左侧不符
int d = 5 > 4 ? 2 : 10;
System.out.println(d);//2
System.out.println("===========================");
//结果必须使用
System.out.println(a > b ? a : b);//正确写法
//a > b ? a : b; //错误写法
}
}
【tips】
- 必须同时保证表达式A表达式B都符合左侧的数据类型要求
- 三元运算符的结果必须被使用