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{ //0.创建入口函数 /**main Alt+/补全代码,Ctrl+s保存 Ctrl+F11执行*/ public static void main(String[] args) { /**四则运算 + - * / */ /**syso Alt+/补全代码*/ //2.测试一下除法与取余数% System.out.println(25/10);//int/int->int,商是2 System.out.println(25 % 10);//模,求余数 //练习:获取两位数的个位和十位 int x = 59; System.out.println(x % 10);//获取个位 System.out.println(x / 10);//获取十位 //练习:获取三位数的个十百位 int y = 152; System.out.println(y / 100);//获取百位 System.out.println(y % 100 % 10);//获取个位 System.out.println(y / 10 % 10);//获取十位
<span class="token comment">//3.测试一下自增自减运算符</span> <span class="token comment">/**前缀式,符号在前,先变换,再使用 ++a --a * 后缀式,符号在后,先使用,再变化 a++ a-- * ++:加1 --:减1 * */</span> <span class="token keyword">int</span> a <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"*************"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>a<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//打印结果是1,打印完以后再变化,自增成2</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span> b <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">++</span>b<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//打印结果是2,因为符号在前,先自增</span> <span class="token keyword">int</span> c <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>c<span class="token operator">--</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//打印结果是1,符号在后,先打印,再自减</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//自减过后变成了0</span> <span class="token keyword">int</span> d <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">--</span>d<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//打印结果是0,符号再前,先自减再打印</span> <span class="token comment">//因为受之前代码的影响,c的初始值是0</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">--</span>c<span class="token operator">-</span>c<span class="token operator">-</span>c<span class="token operator">--</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//-1-(-1)-(-1)=-1+1+1=1</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//-2</span> <span class="token punctuation">}</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
1.4 练习:求两数的最大值
创建包: cn.tedu.basic
创建类: TestMaxNum.java
package cn.tedu.basic;
import java.util.Scanner;
/*需求:接收用户输入的两个整数,并比较输出这两个数的最大值/
public class TestMaxNum {
public static void main(String[] args) {
//1.提示用户输入
System.out.println(“请输入您要比较的第一个整数:”);
//2.接收用户输入的整数,并把这个值交给变量a来保存
int a = new Scanner(System.in).nextInt();
System.out.println(“请输入您要比较的第二个整数:”);
int b = new Scanner(System.in).nextInt();
<span class="token comment">//3.比较接收两个数,使用三元运算符</span>
<span class="token comment">/**1 ? 2 : 3
* 1是表达式,若1的结果为true,结果取2位置,若1的结果为false,结果取3位置
* */</span>
<span class="token comment">//4.定义变量max来保存比较的最大值</span>
<span class="token keyword">int</span> max <span class="token operator">=</span> a <span class="token operator">></span> b <span class="token operator">?</span> a <span class="token operator">:</span> b<span class="token punctuation">;</span>
<span class="token comment">//5.打印最大值</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"两个数的最大值是:"</span><span class="token operator">+</span>max<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">/**思考题:如何判断3个数的最大值? int max = a>b?(a>c?a:c):(b>c?b:c);*/</span>
<span class="token punctuation">}</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
1.5 练习:求平年闰年
创建包: cn.tedu.basic
创建类: TestYear.java
需求:接收用户输入的年份,判断是平年还是闰年
package cn.tedu.basic;
import java.util.Scanner;
/**
-
需求:接收用户输入的年份,判断是平年还是闰年
-
如果年份是闰年,需要满足下面两个条件之一:
-
条件1:能被4整除,并且不能被100整除
-
条件2:能被400整除
-
*/
public class Test3_Year {
public static void main(String[] args) {
//1.提示并接收用户输入的年份
System.out.println(“请输入您要判断的年份:”);
int year = new Scanner(System.in).nextInt();<span class="token comment">//2.定义一个变量用来保存结果</span> <span class="token class-name">String</span> result <span class="token operator">=</span> <span class="token string">"平年"</span><span class="token punctuation">;</span><span class="token comment">//默认值是平年,假设每年都是平年</span> <span class="token comment">//3.判断用户输入的年份是否满足闰年的条件</span> <span class="token comment">/**解决方案1*/</span> <span class="token comment">/**条件1:能被4整除,并且不能被100整除*/</span>
// if(year % 4 == 0) {//能被4整除
// if(year %100 != 0) {//不能被100整除
// result = “闰年”;//符合闰年的条件1,修改结果为闰年
// }
// }
// /*条件2:能被400整除/
// if(year % 400 == 0) {//能被400整除
// result = “闰年”;//符合闰年的条件2,修改结果为闰年
// }
/*解决方案2/
/**判断结构 if(判断条件){满足判断条件以后执行的代码} */
//if(条件1 || 条件2){是闰年 }
//if((小条件1 && 小条件2) || 条件2){ 是闰年 }
//if((能被4整除 && 不能被100整除) || 能被400整除){ 是闰年 }
if((year % 4 0 && year %100 != 0) || year % 400 0){
result = “闰年”;//符合闰年的条件,修改结果为闰年
}
System.out.println(year+“年是”+result);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
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:优先级控制
当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的运算符后参与运算。在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。