算数运算符
- 表示减法运算符
* 表示乘法运算符
/ 表示除法运算符
% 表示取模/取余运算符
codepublic class MathTest {
public static void main(String[] args) {
// 1.声明两个int类型的变量并初始化
int ia = 6; // 推荐该方式,提高了代码的可读性
int ib = 2;
System.out.println("ia = " + ia); // ia = 6
System.out.println("ib = " + ib); // ib = 2
// 2.使用上述变量实现算术运算符的使用 + - * / %
// 表示声明变量ic来记录ia与ib的和
int ic = ia + ib;
System.out.println("ic = " + ic); // ic = 8
// 其中ia+ib这个整体叫做表达式 ia、ib叫做操作数 +叫做操作符/运算符
System.out.println(ia + ib); // 8
System.out.println(ia - ib); // 4
System.out.println(ia * ib); // 12
System.out.println(ia / ib); // 3
System.out.println(ia % ib); // 0
}}
注意事项:
1、注意:当两个整数相除时结果只保留整数部分,丢弃小数部分,如:System.out.println(5 / 2); 运行结果为:2
2、若希望保留小数部分的处理方法有两种,分别是:
处理方式一:使用强制类型转换将其中一个操作数转换为double类型再运算即可。如:
System.out.println((double)5 / 2); // 2.5
System.out.println(5 / (double)2); // 2.5
System.out.println((double)5 / (double)2); // 2.5
System.out.println((double)(5 / 2)); // 2.0
处理方式二:让其中一个操作数乘以1.0即可(推荐)
System.out.println(5*1.0 / 2); // 2.5
System.out.println(5.0 / 2); // 2.5
3、不能做除数:
System.out.println(5 / 0); // 报错:编译ok,运行发生java.lang.ArithmeticException(算术异常 记住): / by zero
System.out.println(5 / 0.0); // 报错:Infinity 无穷
System.out.println(0 / 0.0); // 报错:NaN Not a Number
练习:提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒。
public static void main(String[] args) {
boolean flag=true;
while (flag) {
Scanner sc = new Scanner(System.in);
System.out.println("please input a int value");
int s = sc.nextInt();
if (s==-1){
flag=false;
}
int h = s / 3600;
int m = (s % 3600) / 60;
int ss = s % 60;
System.out.println("当前时间是:" + h + "小时" + m + "分钟" + ss + "秒");
System.out.println("____________________________________");
}
}
字符串连接符
+ 可以实现字符串的连接。同时可以实现字符串与其他数据类型“相连”,如 System.out.println("a="+a);
• > 表示是否大于运算符 >=表示是否大于等于运算符
• < 表示是否小于运算符 <=表示是否小于等于运算符
• == 表示是否等于运算符 !=表示是否不等于运算符
• 所有以关系运算符作为最终运算的表达式结果一定是boolean类型。
code:
int ia = 5;
int ib = 2;
boolean b1 = ia > ib;
System.out.println("b1 = " + b1); // b1 = true
System.out.println(ia > ib); // 是否大于 true
System.out.println(ia >= ib); // 是否大于等于 大于或者等于 true
System.out.println(ia < ib); // 是否小于 false
System.out.println(ia <= ib); // 是否小于等于 false
System.out.println(ia == ib); // 是否等于 false
System.out.println(ia != ib); // 是否不等于 true
++ 表示自增运算符,用于使得当前变量自身的数值加1的效果 ++a 表示现将a自身+1,再让变量的数值作为整个表达式的结果,a++表示现将整个表达式的值+1,然后将变量a+1
-- 表示自减运算符,用于使得当前变量自身的数值减1的效果
注意:只能用于变量,常数不可以
&& 表示逻辑与运算符,相当于"并且",同真为真,一假为假。
|| 表示逻辑或运算符,相当于"或者",一真为真,同假为假。
! 表示逻辑非运算符,相当于"取反",真为假,假为真。
逻辑运算符的操作数均为boolean表达式。
boolean b1 = true;
boolean b2 = false;
// 使用上述变量实现逻辑运算符的使用
boolean b3 = b1 && b2;
System.out.println("b3 = " + b3); // 运行结果:false
System.out.println(b1 && b2); // 运行结果:false 并且
System.out.println(b1 || b2); // 运行结果:true 或者
System.out.println(!b1); // 运行结果false 取反
System.out.println(!b2); // 运行结果:true 取反
注意:
1.对于逻辑与运算符来说,若第一个条件为假则整个表达式为假,此时跳过第二个表达式不执行;
int ia = 3;
int ib = 5;
boolean b4 = (++ia == 3) && (++ib == 5);
System.out.println("b4 = " + b4); // false
System.out.println("ia = " + ia); // 运行结果:4
System.out.println("ib = " + ib); // 运行结果:5,没有执行++ib
2.对于逻辑或运算符来说,若第一个条件为真则整个表达式为真,此时跳过第二个表达式不执行;
int ia = 4;
int ib = 5;
boolean b5 = (++ia == 5) || (++ib == 5);
System.out.println("b5 = " + b5); // true
System.out.println("ia = " + ia); // 5
System.out.println("ib = " + ib); // 5
= 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量 原来的数值。
赋值表达式本身也有值,其本身之值即为所赋之值。
复合赋值运算符:+=、 -=、 *=、 /=、 ...
• << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充
• >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
• >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0 补充。注意:对于非负数来说,逻辑右移和右移的效果一致
• & 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0.
• | 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0.
• ~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1.
• ^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1
• ()的优先级极高。
• =的优先级极低。
• 若无法确认优先级,则使用()来确保即可。