算术运算符
包含:+ - * / %
其中注意
/:
1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的。
案例:
System.out.println( 10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
练习:数值拆分:
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
代码示例:
//1.键盘录入一个三位数
//导包 --- 创建对象 --- 接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();//123
//2.获取这个三位数的个位、十位、百位并打印出来
//公式:
//针对于任意的一个数而言
//个位: 数字 % 10
int ones = number % 10;
//十位: 数字 / 10 % 10
int tens = number / 10 % 10;
//百位: 数字 / 100 % 10
int hundreds = number / 100 % 10;
//输出结果
System.out.println(ones);
System.out.println(tens);
System.out.println(hundreds);
隐式转换
两种提升规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
取值范围从小到大的关系:
byte short int long float double
字符串型数据和基本数据类型的转换方法:
将字符串转换为基本数据类型:
String str = "123";
int num = Integer.parseInt(str);
// 将字符串转换为整型
double decimal = Double.parseDouble(str);
// 将字符串转换为浮点型
将基本数据类型转换成字符串
int number = 123;
String strNum = String.valueOf(number);
// 将整型转换为字符串
double decimalNumber = 3.14;
String strDecimal = String.valueOf(decimalNumber);
// 将浮点型转换为字符串
隐式转换的练习:
案例一
int i = 10;
long n = 20L;
??? result = i + n;
问变量result是什么类型的?
变量i里面的值会自动提升为long类型的,result为long类型。
案例二
byte b1 = 10;
byte b2 = 20;
??? result = b1 + b2;//int
问变量result是什么类型的?
变量b1和变量b2里面的值都会自动提升为int类型的,result为int类型。
强制类型转换
书写格式:
目标数据类型 变量名 = (目标数据类型)被强转的数据;
注意点:
强制转换有可能会导致数据发生错误。(数据的精度丢失)
字符串的+操作
案例:
1 + 2 + "abc" + 2 + 1
结果:“3abc21”
从左往右相加。
字符的+操作
规则:
当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。
案例:
char c = 'a';
int result = c + 0;
System.out.println(result);//97
ASCII码表中:
'a' ----- 97 'A' ----- 65
自增自减运算符
分类:
++ 自增运算符
-- 自减运算符
赋值运算符
最为常用的: =
运算过程:就是把等号右边的结果赋值给左边的变量
扩展赋值运算符
+=、-=、*=、/=、%=
注意点:
扩展的赋值运算符中隐层还包含了一个强制转换。
比较(关系)运算符
分类:
符号 | 解释 |
---|---|
== | 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
!= | 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
> | 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false |
>= | 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
< | 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false |
<= | 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
注意点:
- 关系运算符最终的结果一定是布尔类型(boolean)的。要么是true,要么是false
- 在写==的时候,千万不要写成=(==是判断,=是赋值)
逻辑运算符
& 和 | 的使用:
& //两边都是真,结果才是真
// | 或 //两边都是假,结果才是假,如果有一个为真,那么结果就是真。
!(取反)的使用:
是取反,也叫做非。
计算规则:false取反就是true,true取反就是false
温馨提示:取反最多只用一个。
^(异或)的使用:
在以后用的不多,了解一下即可。
计算规则:如果两边相同,结果为false,如果两边不同,结果为true
短路逻辑运算符
&&:
运算结果跟&是一模一样的,只不过具有短路效果。
||:
运算结果跟|是一模一样的。只不过具有短路效果。
逻辑核心:
当左边不能确定整个表达式的结果,右边才会执行。
当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。
三元运算符
又叫做:三元表达式或者问号冒号表达式。
格式:
关系表达式 ? 表达式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);
System.out.println(a > b ? a : b);
}
}