在职学习中,小伙伴们拿这个当个参考笔记就行了嗷,更新不定期的
1.算数运算符
补充:运算符,是对值进行计算
表达式:int a = 2 + 3 等号右边对字面量进行计算、拼接等就是表达式
运算符有 加、减、乘、除、取余 5种运算符。加减就略过啦大家代码瞧一瞧,多打印就懂了,一下是其余3种
以上为同类型数据运算,问题:整数+ 小数 怎么接收呢?---- 类型转换
1.1 “+” 的不同场景
当+ 两边都是数字时,是运算符 1+1 // 2
当+ 两边有字符串时,是拼接 1+"1" // "11"
当+ 有多个时,从左到右 是 1+1+"1" // "21"
1.1.1 + 拼接的常用场景
拼接变量和字符串,让变量的数据更易读
//需求:打印出用户输入的三位数整数
public class ArithmeticoperatorDemo3 {
public static void main(String[] args) {
// 1.获取键盘输入的数字
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 2.拆分出个十百位的数字
int bai = num / 10 / 10 % 10;
int shi = num / 10 % 10;
int ge = num % 10;
// 3.拼接打印
System.out.println("百位数是" + bai);
System.out.println("十位数是" + shi);
System.out.println("个位数是" + ge);
2.类型转换
2.1隐式转换
作用:当数据类型不同,但要放在一起计算时,转换为同类型数据进行计算
我们不用做特殊处理,运算时自动转换
例: 下图的 b 此时 等于 10.0 运算时,按照图底部的取值范围大小排序进行转换
2.1.1小提大的规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
左图:c 是double类型 右图:c是int类型 (根据小提大的第二个规则)
2.1.2大提小的规则:
使用场景: 把取值范围大的数值 赋值 给取值范围小的 变量
语法: 数据类型 变量名 = (目标数据类型)被强转的数据 目标数据类型和数据类型保持一致
注:有可能发生数据错误,注意数据类型的取值范围
例1:
double a = 12.3;
int b = (int)a;
例2:
byte a = 10;
byte b = 20
byte result = a + b × byte运算时,会隐式转换成int
byte result = (byte) (a + b) √
2.1.3 字符相加
前提:数字相加时,我们知道byte short char三种类型运算时,隐式转换为int再计算。但是char是字符类型,隐式转换为int是什么样?
char c = 'a';
int b = c + 0;
System.out.println(b); // 97
为什么字符串a能对应数字97? ---- ASXII码表中,a对应的就是97.
结论:
当 char字符+char字符 或者 char字符+数字 时,会把字符通过ASXII码表查询到对应的数字再进行计算。
3.自增自减运算符 ++ 、--
3.1基础用法
++ 表示变量的值自己增加1‘ a++
-- 表示变量的值自己减少1 a--
应用场景: 年龄 购物车
注:前自增和后自增,如果单独使用 ---- 结果相同 开发中常见
如果参与计算 ---- 结果不一样
前自增:先加后用
后自增:先用后加
import java.util.Scanner;
//键盘输入一个值,打印这个值
public class ArithmeticoperatorDemo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 键盘输入方法
int a = sc.nextInt(); //键盘输入的值赋值给a变量
// System.out.println(a); // 打印a
int b = a++;
System.out.println(b); // 1 先用后加 此时a = 2
int c = ++a;
System.out.println(c); // 3 先加后用
}
}
4.赋值运算符
赋值运算符底层会强制转换成接收结果的变量的数据类型
例:
short s = 1;
s += 1
System.out.println(s) //2 short类型的2
解析:+= 做的事:short s = (short)(s+1) 强制转换成什么类型,是s的数据类型决定的
5.关系运算符
用于比较两个值,比较结果是boolean类型,只有true,false两种结果
注:书写注意区分 = 和 == 。=是赋值,==是比较
练习:键盘输入两个整数,如果第一个整数大于第二个整数,输出true。否则输出false
package com.itheima.arithmeticoperator;
import java.util.Scanner;
public class 比较运算符 {
public static void main(String[] args) {
Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
int num1 = sc1.nextInt();
int num2 = sc2.nextInt();
boolean res = num1 > num2;
System.out.println(res); //
}
}
6.逻辑运算符
作用: 判断一个数字大于5的同时,小于10
java中 x>5 & x<10
package com.itheima.arithmeticoperator;
public class luoji {
public static void main(String[] args) {
System.out.println(true & true); // true
System.out.println(false | true); // true
System.out.println(false ^ false); // false 相同为false,不常用
System.out.println(!true); // false 取反
}
}
6.1逻辑短路
逻辑短路是什么? 当左边的表达式,可以确定最终结果,就不再判断后面一个条件,提升代码效率
与&& 是左边为false出现短路。或|| 是左边为true出现短路
注:一定是&& || 单个&|没有逻辑短路效果
int a = 10;
System.out.println(a<10 && ++a>1); //false
System.out.println(a); //10 说明a<10为false时,&& 右边代码不执行
System.out.println(a<10 || ++a>1);
System.out.println(a); //11 右边执行了,说明没有逻辑短路
总结:常用逻辑运算符 &&与 ||或 !非
练习:键盘输入两个整数,如果输入一个为6,或者和为6的倍数,输出true,否则输出false
7.三元运算符
语法:关系表达式 ? 表达式1:表达式2;
场景:求两个数的最大值
int max = a > b ? a : b; a>b为true,结果是a,为false,结果是b。max接收结果
需求:动物园里有两只老虎,体重分别为通过键盘录入获得
请用程序实现判断两只老虎的体重是否相同。
分析:1.键盘录入两只老虎的体重 2.比较两只老虎的体重,并打印结果
import java.util.Scanner;
public class sanyuan {
public static void main(String[] args) {
Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入第一只老虎的体重");
int tiger1 = sc1.nextInt();
System.out.println("请输入第二只老虎的体重");
int tiger2 = sc2.nextInt();
String max = tiger1 == tiger2 ? "相同" : "不相同";
System.out.println(max);
}
}
练习:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
分析:1.先对比两个,存一个变量中,再用这个变量的值对比第三个
int height1 = 150;
int height2 = 165;
int height3 = 210;
int res = height1 > height2 ? height1 : height2;
int max = res > height3 ? res : height3;
System.out.println(max);
8.运算符优先级
总结:想让谁优先计算,给谁加小括号