算数运算符
- 运算符和表达式
运算符 :对 常量或者变量进行操作 的符号 。
表达式 :用 运算符把常量或者变量连接起来符合 Java 语法的式子 称为表达式 。 - 说明并举例 :
int a = 10;
int b = 20;
int c = a + b;
// + 是运算符,并且是算数运算符 。
// a + b 是表达式,由于 + 是算数运算符,所以这个表达式叫算数表达式
-
算数运算符
符号 作用 说明 + 加 两个数之和 - 减 两个数之差 * 乘 两个数之积 / 除 两个数之商 % 取余 两个数之余 -
代码测试
public static void main(String[] args) {
/**
* 算数运算符代码示范
**/
// 整型之间进行算数运算
// 整型之间进行除法运算时,运算的结果也是整型 。
int a = 10;
int b = 4;
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("================");
// 整型与浮点型进行算数运算
// 整数与浮点型进行算数运算时,运算结果自动转换为占用空间大的浮点型,取余不推荐。
int c = 10;
double d = 4.4;
float e = 4.4F;
System.out.println(c+d);
System.out.println(c-d);
System.out.println(c*d);
System.out.println(c/d);
System.out.println(c%d);
System.out.println("================");
System.out.println(c+e);
System.out.println(c-e);
System.out.println(c*e);
System.out.println(c/e);
System.out.println(c%e);
}
字符 + 操作
- 拿字符在计算机底层对应的值来进行计算
- 算数表达式中包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升
- 提升规则 :
byte , char ,short 将被提升为 int 类型 。
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型 。
等级顺序 :byte , char ,short → int → long → float → double - 代码测试 :
/**
* 字符 + 操作测试
**/
// int,char 运算测试
int a = 10;
char b = 'A'; // A 的值为 65;
char c = 'a'; // a 的值为 97;
System.out.println(a + b);
System.out.println(a + c);
System.out.println("==================");
// byte,char,short 运算测试
byte d = 10;
char e = 'A';
short f = 20;
System.out.println(d + e);
System.out.println(d + f);
System.out.println(e + f);
System.out.println("==================");
byte aa = (byte) (d + e);
char bb = (char) (d + e);
System.out.println(aa);
System.out.println(bb);
System.out.println("==================");
// 提升规则:
char AA = 'A' + 10;
int BB = 'A' + 10;
System.out.println(AA);
System.out.println(BB);
System.out.println("==================");
// char CC = a + b;
int DD = a + b;
// int EE = 10+13.14;
double FF = 10 + 13.14;
System.out.println(DD);
System.out.println(FF);
字符串的 + 操作
- 当 + 操作中出现字符串时,这个 + 是字符串连接符,而不是算数运算 。
521+“一生一世” - 当 + 操作中,如果出现了字符串,就是连接符,否则就是算数运算 。当连续进行 + 操作时,从左到右逐个执行 。
13+14+“测试” - 代码测试 :
/**
* 字符串 + 操作
**/
// 字符串拼接
System.out.println('我' + "爱你!");
System.out.println("亲爱的" + "姑娘!");
System.out.println(521 + "一生一世");
System.out.println("一生一世" + 521);
System.out.println("=======================");
// 数值运算+字符串拼接
System.out.println(13 + 14 + "测试");
System.out.println("测试" + 13 + 14);
System.out.println("测试" + (13 + 14));
赋值运算符
-
赋值运算符
符号 作用 说明 = 赋值 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 -
代码测试 :
/**
* 赋值运算符
**/
// 把 10 赋值给int类型的变量 a
int a = 10;
System.out.println("a=" + a);
System.out.println("====================");
// +=,把等式左边和右边的数据进行加法操作,结果赋值给等式左边( += 隐含强制类型转换 )
short b = 20;
b += 10;
System.out.println("b=" + b);
short c = 20;
c = (short) (c + 10);
System.out.println("c=" + c);
System.out.println("====================");
// -=,*=,/=,%=, 把等式左边和右边的数据拿出来进行 - * / % 的操作,结果赋值给等式左边
short d = 20;
d -= 5;
System.out.println("d=" + d);
short e = 20;
e *= 5;
System.out.println("e=" + e);
short f = 20;
f /= 5;
System.out.println("f=" + f);
short g = 20;
g %= 3;
System.out.println("g=" + g);
自增自减运算符
-
自增自减运算符
符号 作用 说明 ++ 自增 变量的值加1 - - 自减 变量的值减1 -
注意事项
++ 和 - - 既可以放在变量的后边,也可以放在变量的前面
单独使用时,++ 和 - - 无论是放在变量的前面还是后边,结果是一样的
参与操作时,++ 和 – 在前,先自增在赋值,++ 和 - - 在后,先赋值在自增 -
代码测试 :
/**
* ++ -- 操作
**/
// ++ , -- 单独使用, ++ 在前或者在后值相同
int i = 10;
i++;
System.out.println(i);
i=10;
++i;
System.out.println(i);
i=10;
i--;
System.out.println(i);
i=10;
--i;
System.out.println(i);
System.out.println("======================");
/**
* 参与操作使用
* ++ 在前,先自增在赋值 ;++ 在后,先赋值在自增 。
* -- 在前,先自减在赋值 ;-- 在后,先赋值在自减。
**/
i=10;
int j = ++i;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("======================");
i=10;
j= i++;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("======================");
i=10;
j = --i;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("======================");
i=10;
j = i--;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("======================");
关系运算符
-
关系运算符
符号 说明 == 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 -
== 和 = 的区别 :
== 是关系运算符,判断两个值是否相等
= 是赋值运算符,将等式右边的值赋值给等式左边的变量 -
代码测试 :
/**
* 关系运算符
**/
int a = 10;
int b = 20;
int c = 10;
// ==
System.out.println(a==b);
System.out.println(a==c);
System.out.println("==========================");
// !=
System.out.println(a!=b);
System.out.println(a!=c);
System.out.println("==========================");
// >
System.out.println(a>b);
System.out.println(a>c);
System.out.println("==========================");
// >=
System.out.println(a>=b);
System.out.println(a>=c);
System.out.println("==========================");
// <
System.out.println(a<b);
System.out.println(a<c);
System.out.println("==========================");
// <=
System.out.println(a<=b);
System.out.println(a<=c);
System.out.println("==========================");
逻辑运算符
-
逻辑运算符概叙
在数学中,一个数据 x 大于3 小于6,我们可以这样来进行表示 :3<x<6 在 Java 中,需要把上面的式子进行拆解,在进行合并表示 拆解为 :x>3 和 x<6 合并后 :x>3 && x<6
逻辑运算符,是用来连接关系表达式的运算符,也可以直接连接布尔类型的常量或者变量。
-
逻辑运算符
符号 作用 说明 & 逻辑与 a&b,a 和 b 都是 true,结果为 true,否则为 false l 逻辑或 a l b,a 和 b 都死 false ,结果为 false,否则为 true ^ 逻辑异或 a^b,a 和 b 结果不同为 true,相同为 false ! 逻辑非 !a,结果和 a 的结果相反 -
代码测试 :
/**
* 逻辑运算符
**/
// 定义变量
int a = 10;
int b = 20;
int c = 30;
// & 逻辑与,有 false 则 false
System.out.println((a > b) & (a > c)); // false & false
System.out.println((a > b) & (a < c)); // false & true
System.out.println((a < b) & (a > c)); // true & false
System.out.println((a < b) & (a < c)); // true & true
System.out.println("===========================");
// | 逻辑或,有 true 则 true
System.out.println((a > b) | (a > c)); // false | false
System.out.println((a > b) | (a < c)); // false | true
System.out.println((a < b) | (a > c)); // true | false
System.out.println((a < b) | (a < c)); // true | true
System.out.println("===========================");
// ^ 逻辑异或,相同为 false,不同为 true
System.out.println((a > b) ^ (a > c)); // false ^ false
System.out.println((a > b) ^ (a < c)); // false ^ true
System.out.println((a < b) ^ (a > c)); // true ^ false
System.out.println((a < b) ^ (a < c)); // true ^ true
System.out.println("===========================");
// !逻辑非,结果相反
System.out.println(a > b); // false
System.out.println(!(a > b)); // ! false
短路逻辑运算符
-
短路逻辑运算符
符号 作用 说明 && 短路与 作用和&相同,具备短路效果 ll 短路或 作用和 l 相同,具备短路效果 &,无论左边真假,右边都要执行 && ,左边为真,右边执行;左边为假,右边不执行 | ,无论左边真假,右边都要执行 || ,左边为假,右边执行;左边为真,右边不执行
-
最常用的逻辑运算符
&& ,|| ,!
-
代码测试 :
/**
* 短路逻辑运算符
**/
// 定义变量
int a = 10;
int b = 20;
int c = 30;
// && 短路与, 有 false 则 false
System.out.println((a > b) && (a > c)); // false && false
System.out.println((a > b) && (a < c)); // false && true
System.out.println((a < b) && (a > c)); // true && false
System.out.println((a < b) && (a < c)); // true && true
System.out.println("===========================");
// || 短路或, 有 true 则 true
System.out.println((a > b) || (a > c)); // false || false
System.out.println((a > b) || (a < c)); // false || true
System.out.println((a < b) || (a > c)); // true || false
System.out.println((a < b) || (a < c)); // true || true
System.out.println("===========================");
// & , && 区别: & 不具备短路效果,&& 具备短路效果
System.out.println((a++ > 30) & (b++ > 30)); // false & false , a 和 b 的值都 +1
System.out.println("a:" + a);
System.out.println("b:" + b);
a = 10;
b = 20;
System.out.println((a++ > 30) && (b++ > 30)); // false && false , a 的值 +1 , b 的值不变
System.out.println("a:" + a);
System.out.println("b:" + b);
System.out.println("===========================");
// | , || 区别: | 不具备短路效果,|| 具备短路效果
a = 10;
b = 20;
System.out.println((a++ < 30) | (b++ < 30)); // true | true , a 和 b 的值都 +1
System.out.println("a:" + a);
System.out.println("b:" + b);
a = 10;
b = 20;
System.out.println((a++ < 30) || (b++ < 30)); // true || true , a 的值 +1 , b 的值不变
System.out.println("a:" + a);
System.out.println("b:" + b);
三元运算符
-
三元运算符
格式 :关系表达式 ?表达式 1:表达式 2 ; 范例 :a > b ? a : b ; 计算规则 :首先计算关系表达式的值 如果值为 true , 表达式 1 的值就是运算结果 如果值为 false , 表达式 2 的值就是运算结果
-
代码测试 :
/**
* 三元运算符
**/
// 定义两个 int 类型的变量
int a = 10;
int b = 20;
// 定义一个 int 类型的变量 max 来接收较大值
int max = a > b ? a : b;
// 输出较大值
System.out.println("max :" + max);
// 定义一个 int 类型的变量 little 来接收较小值
int little = a < b ? a : b;
// 输出较小值
System.out.println("little :" + little);
- 案例 :两只老虎
需求:动物园里有两只老虎,已知两只老虎的体重分别为 180kg ,200kg 请用程序实现判断两只老虎的体重是否相同 。
/**
* 需求:动物园里有两只老虎,已知两只老虎的体重分别为 180kg , 200kg 请用程序实现判断两只老虎的体重是否相同 。
* 分析:定义两个变量用于保存老虎的体重,单位为千克,使用 int 类型保存数值。
**/
// 定义两个 int 类型的变量存储老虎的体重
int weight1 = 180;
int weight2 = 200;
// 判断 weight1 weight2 值是否相等,相等返回 true,不等返回 false
boolean a = (weight1 == weight2) ? true : false;
// 判断 a 的值是否等于 true ,等于输出体重相同,不等于输出体重不同
System.out.println((a == true) ? "体重相同" : "体重不同 ");
- 案例 :三个和尚
需求 :一座寺庙里住着三个和尚,已知他们的身高分别是 150cm,210cm,165cm,请用程序实现获取这三个和尚的最高身高 。
/**
* 需求:一座寺庙里住着三个和尚,已知他们的身高分别是 150cm,210cm,165cm,请用程序实现获取这三个和尚的最高身高
* 分析:定义三个变量用于保存和尚的身高,单位为cm,使用 int 类型保存数值。
**/
// 定义三个 int 类型的变量存储和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
// 判断 height1 > height2 是否成立,成立返回 height1,不成立返回 height2
// 定义 int 类型的临时变量 height 进行存储
int height = (height1 > height2) ? height1 : height2;
// 判断 height > height3 是否成立,成立返回 height,不成立返回 height3
// 输出结果进行字符串拼接
System.out.println("最高身高为:"+ ((height > height3) ? height : height3) + "CM");