JAVA运算符
1 运算符
1.1 概述
运算符 用于连接 表达式 的 操作数,并对操作数执行运算。
例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。
在java语言中,运算符可分为5种类型:
算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。
单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。
位运算符涉及到二进制位的运算,在java 程序中运用不是很多。
1.2 运算符速查表
1.3 练习:测试除法、取余、自增自减运算符
创建包: cn.tedu.basic
创建类: TestOperator.java
package cn.tedu.basic;
/**本类用于测试除法与取余运算符*/
public class TestOperator {
public static void main(String[] args) {
//1.测试除法与取余数
System.out.println(25/10);//2 int/int->int
System.out.println(25%10);//5
//2.练习1:获取一个两位数59的十位和个位
System.out.println(59/10);//5 int/int->int
System.out.println(59%10);//9,取余
//3.练习2:获取一个三位数159的百位 十位 个位
int x = 159;
System.out.println(159/100);//打印百位 1.59->1
System.out.println(159/10%10);//打印十位15.9->15 15%10=5
System.out.println(159%10);//打印个位159/10,商为15,余数为9
//4.测试自增自减运算符
/**前缀式:符号在前:++a --a : 先改变变量本身的值,再使用(比如打印/计算)
* 后缀式:符号在后:a++ a-- : 先使用(比如打印/计算),再改变变量本身的值
* ++ : 相当于是给变量的值+1
* -- : 相当于是给变量的值-1
*/
System.out.println("我是一个无情的分界线");
int z = 1;
System.out.println(z+4);/**普通的四则运算并不会改变变量本身的值*/
System.out.println(z);//1
z=z+4;/**除非将四则运算的结果再重新赋值给变量,变量的值才会被改变*/
System.out.println(z);//5
int a = 1;
System.out.println(++a);//2 符号在前,先自增成2,再打印
System.out.println(a);//2,已经自增过了,不会再自增了
int b = 1;
System.out.println(b++);//1,符号在后,先打印
System.out.println(b);//2,打印完,再自增成2
int c = 1;
System.out.println(--c);//0,符号在前,先自减成0,再打印
System.out.println(c);//0,已经自减过了,不会再自减了
int d = 1;
System.out.println(d--);//1,符号在后,先打印
System.out.println(d);//0,打印完,再自减成0
//c的初始值是0
//自增自减运算符会改变变量本身的值
System.out.println(--c-c-c--);//-1-(-1)-(-1)=1
System.out.println(c);//-2
}
}
1.4 练习:测试逻辑运算符
package cn.tedu.basic;
/**本类用于测试逻辑运算符*/
public class TestOperator2 {
public static void main(String[] args) {
/**与:全真才真*/
System.out.println("测试单与:");
System.out.println(true&false);//false
System.out.println(false&true);//false
System.out.println(false&false);//false
System.out.println(true&true);//true
System.out.println("测试双与");
System.out.println(true&&false);//false
System.out.println(false&&true);//false,会短路
System.out.println(false&&false);//false,会短路
System.out.println(true&&true);//true
/**或:全假才假*/
System.out.println("测试单或");
System.out.println(true|false);//true
System.out.println(false|true);//true
System.out.println(false|false);//false
System.out.println(true|true);//true
System.out.println("测试双或");
System.out.println(true||false);//true,会短路
System.out.println(false||true);//true
System.out.println(false||false);//false
System.out.println(true||true);//true,会短路
}
}
1.5 练习:求两数的最大值
创建包: cn.tedu.basic
创建类: TestMaxNum.java
package cn.tedu.basic;
import java.util.Scanner;
/**本类 用于测试三元运算符*/
public class TestMaxNumber {
public static void main(String[] args) {
//需求:接收用户从控制台输入的两个整数,输出这两个数之间的最大值
//1.提示并接收用户输入的两个整数
System.out.println("请您输入第1个数字:");
int a = new Scanner(System.in).nextInt();
System.out.println("请您输入第2个数字:");
int b = new Scanner(System.in).nextInt();
//比较这两个数的最大值
/**三元运算符的格式: 1 ? 2 : 3
* 1是表达式,如果1的结果为true,结果取2号位置的值
* 如果1的结果为false,结果取3号位置的值*/
int max = a>b?a:b;
System.out.println("两个数的最大值是:"+max);
/**思考题:如何判断3个数的最大值? int max = a>b?(a>c?a:c):(b>c?b:c);*/
}
}
1.6 练习:求平年闰年
创建包: cn.tedu.basic
创建类: TestYear.java
package cn.tedu.basic;
import java.util.Scanner;
/**本类用作运算符的综合案例*/
//需求:接收用户输入的年份,判断是平年还是闰年
//补充:闰年的判断条件
//条件1:能被4整除,并且不能被100整除
//条件2:能被400整除
public class TestYear {
public static void main(String[] args) {
//1.提示并接收用户输入的年份
System.out.println("请输入您要判断的年份:");
int year = new Scanner(System.in).nextInt();
//2.1定义一个变量保存最终的结果
String result = "平年";
//2.2需要判断year是否符合闰年的条件,如果符合,就将result改成闰年
/**解决方案1:*/
// //小括号是判断条件,如果判断条件结果为true,就执行大括号中的代码
// //大条件1:能被4整除,并且不能被100整除
// if(year%400==0) {//年份能被400整除
// result = "闰年";//说明是闰年,就改为闰年
// }
// //大条件2:能被400整除
// if(year%4==0) {//年份能被4整除
// if(year%100!=0) {//年份不能被100整除
// result = "闰年";//说明是闰年,就改为闰年
// }
// }
/**解决方案2:*/
//if(大条件1||大条件2){}
//if((小条件1&&小条件2)||大条件2){}
if((year%4==0&&year%100!=0)||year%400==0) {
result = "闰年";
}
//3.将结果输出
System.out.println(year+"年是"+result);
}
}
2 拓展补充:
2.1 总结1:算术运算符之自增自减运算符
a是操作数,++是自增运算符,- -是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如:a++、++a、a- -、- -a等。
自增(++):将变量的值加1
分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(- -):将变量的值减1
分前缀式(如- -a)和后缀式(如a- -)。前缀式是先减1再使用;后缀式是先使用再减1。
2.2 总结2:逻辑运算符
逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题
注意逻辑运算符返回的运算结果为布尔类型
通常,我们用0表示false,用1表示true
与:表示并且的关系
&单与: 1 & 2 ,结果想要是true,要求1和2都必须是true
&&双与(短路与):1 && 2 ,当1是false时,2会被短路,提高程序的效率
或:表示或者的关系
|单或: 1 | 2,结果想要是true,要求1和2只要有一个为true就可以
||双或(短路或):1 || 2,当1是true时,2会被短路,提高程序效率
2.3 总结3:优先级控制
当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的运算符后参与运算。在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。