package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo2{
public static void main(String[] args) {
// /
System.out.println(10 / 2);//5
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
// %
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
//应用场景
//1.可以用取模来判断,A是否可以被B整除 ,例: A % B 10 % 3
//2.可以判断A是否为偶数
//(例: A % 2 如果结果为0,那么证明A是一个偶数;如果结果为1,那么证明A是一个奇数)
}
}
(运行结果截图)
结论
1.整数参与计算,结果只能得到整数
2.小数参与计算,结果可能是不精确的,如果我们需要精确计算,那么需要用到后面的知识点
练习:数值拆分
**需求:**键盘录入一个三位数,将其拆分为个位,十位,百位后,打印在控制台
运行结果:
公式总结:
(源代码)
java复制代码
package com.itheima.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//键盘录入一个三位数,获取其中的个位,十位,百位
//1.键盘录入一个三位数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数:");
int number = sc.nextInt();
//2.获取其中的个位,十位,百位
//个位:number % 10
//十位:number / 10 % 10
//百位:number / 100 % 10
//千位:number / 1000 % 10
//...
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100 % 10;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
}
}
(运行结果截图)
隐式转换和强制转换
"+"操作的三种情况(数字相加 字符串相加 字符相加)
数字相加
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算.
类型转换的分类
隐式转换(自动类型提升)
把一个取值范围小的数值,转成取值范围大的数据
java复制代码
范例:
int a = 10;
double b = a;//10.0
隐式转换的两种提升规则
-取值范围小的,和取值范围大的进行运算,小的会提升为大的,再进行运算
java复制代码
public class Test{
public static void main(String[] args){
int a = 10;//整数
double b =12.3;//小数
double c = a + b;
}
}
-byte short char 三种类型的数据在计算的时候,都会直接先提升为int,然后再进行运算
java复制代码
public class Test{
public static void main(String[] args){
byte a = 10;
byte b =12.3;
int c = a + b;
}
}
package com.itheima.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//键盘录入一个三位数,获取其中的个位,十位,百位
//1.键盘录入一个三位数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数:");
int number = sc.nextInt();
//2.获取其中的个位,十位,百位
//个位:number % 10
//十位:number / 10 % 10
//...
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100 % 10;
System.out.println("个位是:" + ge);
System.out.println("十位是:" + shi);
System.out.println("百位是:" + bai);
}
}
(运行结果截图)
字符相加
当 字符 + 字符 / 字符 + 数字 时,会把字符通过ASCII码表查询到对应的数字再进行计算.
java复制代码
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo5{
public static void main(String[] args) {
char c = 'a';
int result = c + 0;
System.out.println(result);//97
}
}
ASCII码表
练习:看代码说结果
(源代码)
java复制代码
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo5{
public static void main(String[] args) {
System.out.println(1 + 'a');//98
System.out.println('a' + "abc");//"aabc"
}
}
(运行结果截图)
小结
注意事项:
/ 和 % 的区别:两个数据做除法, / 取结果的商, % 取结果的余数
-整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
自增自减运算符-基本使用
基本用法
注意事项:
++ 和 -- 既可以放在变量的前边,也可以放在变量的后边.
练习:
(源代码)
java复制代码
package com.itheima.arithmeticoperator;
public class rithmeticoperatorDemo6 {
public static void main(String[] args) {
//++ 和 --
int a = 10;
//表示把变量a里面的值+1
a++;
System.out.println(a);//11
//表示把变量a里面的值+1
++a;
System.out.println(a);//12
//表示把变量a里面的值-1
a--;
System.out.println(a);//11
//表示把变量a里面的值-1
--a;
System.out.println(a);//10
}
}
(运行结果截图)
两种用法
单独使用
++ 和 -- 无论是放在变量的前边还是后边,单独写一行结果是一样的.
参与运算
int a = 10;
int b = a++;
先用后加 int a = 10;
int b = ++a;
先加后用
例如:
(源代码)
java复制代码
package com.itheima.test;
public class Test2 {
public static void main(String[] args) {
int x = 10;
//后++:先用后加
//先把x里面的值拿出来用,赋值给y,然后再进行自增
//赋值给y的值是自增前的
int y = x++;
//前++:先加后用
//先把x里面的值进行自增,然后再把自增后的结果赋值给左边的变量
//赋值给z的值是自增后的
int z = ++x;
System.out.println("x = " + x);//12
System.out.println("y = " + y);//10
System.out.println("z = " + z);//12
}
}
(运行结果截图)
赋值运算符和关系运算符
赋值运算符
分类
= 赋值 int 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=b,将a/b的余数给a
注意事项:
扩展的赋值运算符隐含了强制类型转换
练习1:
(源代码)
java复制代码
package assigningoperator;
public class AssigningoperatorDemo1 {
public static void main(String[] args) {
//+=
//规则:将左边和右边进行相加,然后再把结果赋值给左边
int a = 10;
int b = 20;
//先a+b,再把结果赋值给左边的变量a
a += b;
//细节:+= -= /= *= %= 底层都隐藏了强制类型转换
//等同于a = (int) (a + b);
System.out.println(a);//30
System.out.println(b);//20
}
}
(运行结果截图)
练习2:
(源代码)
java复制代码
package assigningoperator;
public class AssigningoperatorDemo12 {
public static void main(String[] args) {
short s = 1;
s += 1;
//等同于: s = (short) (s + 1);
System.out.println(s);
}
}
(运行结果截图)
关系运算符
(关系运算符/比较运算符)的分类
== 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
注意事项:
-关系运算符的结果都是boolean类型,要么是true,要么是false.
-千万不要把"==",误写成"=".
练习:(关系运算符)
(源代码)
java复制代码
package compareoperator;
public class CompareoperatorDemo1 {
public static void main(String[] args) {
//关系运算符
//1.== 判断左右两边是否相等
int a = 10;
int b = 10;
int c = 20;
System.out.println(a == b);//true
System.out.println(a == c);//false
//2.!= 判断左右两边是否不相等
System.out.println(a != b);//false
System.out.println(a != c);//true
}
}
(运行结果截图)
练习:(比较运算符)
(源代码)
java复制代码
package compareoperator;
public class CompareoperatorDemo2 {
public static void main(String[] args) {
//比较运算符
//1.> 判断左边是否大于右边
int a = 10;
int b = 10;
int c = 20;
System.out.println(a > b);//false
System.out.println(a > c);//false
//2.>= 判断左边是否大于等于右边
System.out.println(a >= b);//true
System.out.println(a >= c);//false
//3.< 判断左边是否小于右边
System.out.println(a < b);//false
System.out.println(a < c);//true
//4.<= 判断左边是否小于等于右边
System.out.println(a <= b);//true
System.out.println(a <= c);//true
}
}
package com.itheima.test;
public class Test6 {
public static void main(String[] args) {
/*需求:一座寺庙里住着三个和尚,已知它们的身高分别为150cm,210cm,165cm,
请用程序实现获取这三个和尚的最高身高*/
//1.定义三个变量,分别存储和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
//2.拿着第一个和尚和第二个和尚进行比较
//再拿着结果跟第三个和尚进行比较即可
int temp = height1 > height2 ? height1 : height2;
int max = temp > height3 ? temp : height3;
//3.打印结果
System.out.println(max);
}
}
(运行结果截图)
运算符优先级
运算符的通用写法
java复制代码
public class Test{
public static void main(String[] args){
int a = 10;
int b =20;
int c = 30;
//System.out.println(a + b * c);
System.out.println(a + (b * c));
}
}