文章目录
- 1.运算符概述
- 2.运算符具体功能
- 3.基本四则运算符
- 4.取余运算符
- 5.自增自减运算符
- 6.比较运算符
- 7.逻辑运算符
- 8.三目运算符
- 9.赋值运算符
- 10.综合练习:求平年闰年
1.运算符概述
运算符用于连接表达式的操作数,并对操作数执行运算。
例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。
在java语言中,运算符可分为5种类型:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
根据操作数的不同,运算符又分为:
- 单目运算符
- 双目运算符
- 三目运算符
单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。
位运算符涉及到二进制位的运算,在java 程序中运用不是很多。
2.运算符具体功能
3.基本四则运算符
package partOne;
//本类主要用于测试四则运算
public class TestOperator1 {
public static void main(String[] args) {
//int/int=int 结果为:3
System.out.println(35/10);
//double+int=double 结果为:8.0
System.out.println(3.0+5);
//float-int=float 结果为:3.0
System.out.println(7.0F-4);
//int*int=int 结果为:12
System.out.println(3*4);
}
}
JAVA中使用+、-、*、/表示加、减、乘、除运算。其中除法运算中,当除数与被除数都是整数时,表示整数除法,否则表示浮点数除法。
4.取余运算符
package partOne;
//本类用于测试运算符中的取余运算符
public class TestOperator2 {
public static void main(String[] args) {
//%是取余运算符,先将俩数相除,其余数为几,取余运算结果就为几
System.out.println(35%10); //结果为5
System.out.println(10%5); //结果为0
//练习:求一个俩位数的十位与个位各是几
int num1 = 59;
System.out.println(num1/10); //这个数除以10得到十位的数:5
System.out.println(num1%10); //这个数取余10得到个位的数:9
//练习:求一个三位数的十位与个位各是几
int num2 = 613;
System.out.println(num2/100); //这个数除以10得到百位的数:6
System.out.println(num2/10%10); //这个数取余10得到个位的数:1
System.out.println(num2%10); //这个数取余10得到个位的数:3
}
}
在取余运算中,常用来获取一个数各位数具体为多少,像示例代码中的方式,可以获取任意一个数的任意一个位置具体的值。
5.自增自减运算符
package partOne;
//本类用来测试自增自减运算符
public class TestOperator3 {
public static void main(String[] args) {
//定义一个变量的初始值
int num = 5;
//输出num的值
System.out.println(num); //结果为:5
//++num 为前缀自增,先将变量增加1,然后使用其变量
System.out.println(++num); //结果为:6
//定义一个变量的初始值
int num2 = 7;
//num++ 为后缀自增,先使用变量,然后将变量增加1
System.out.println(num2++);//结果为:7
System.out.println(num2);//结果为:8
//同样的,自减运算符也满足此规则
int num3 = 11;
System.out.println(num3--); //先使用变量num3,然后将其减1,结果为:11
System.out.println(num3); //再次打印变量num3,其值为上次使用完后减1之后的值,结果为:10
int num4 = 13;
System.out.println(--num4);//先减1,然后使用变量num4,结果为:12
System.out.println(num4);//此时变量还是上次使用时的值,并没有再次改变,结果为:12
}
}
自增自减运算符只要理解其值是在什么时候改变的即可:
- 前缀自增自减是使用前就改变,然后使用其改变之后的值
- 后缀自增自减是先使用,在使用这个值后,再改变其本身的值,下次再使用就是已经改变之后的值了
那么,大家可以做个练习,思考下方代码的结果:
int num = 10;
System.out.println(--num-num-num--);
首先,num的值为10,在本式中开始进行计算,–num为前缀自增自减,先自减1,此时变量num的值已经变为了9,此时这个式子应该为9-9-(9–);
最后的9–为后缀自增自减,先使用这个值,在使用后,将其结果自减1,所以最后打印结果就为9-9-9=-9;而num的值为9;
6.比较运算符
package partOne;
//本类用于测试比较运算符
public class TestOperator4 {
public static void main(String[] args) {
System.out.println(3>1);//结果为:true
System.out.println(3<1);//结果为:false
System.out.println(3==1);//结果为:false
}
}
比较运算符的结果均为布尔值,只有true和false俩种结果。
其中>、<、>=、<=就是字面上的比较运算,符合结果为true,不符合结果为false。
==与!= 常用来判断俩个变量是否相等,当等号两边的值为相同数据类型时,直接比较值是否相同,当类型不同时会发生数据类型的转换,转换为相同的类型后再进行比较,符合结果为true,不符合结果为false。
7.逻辑运算符
逻辑运算符又称关系运算符只能用于一次比较操作,但是很多情况下是需要多个关系运算兼顾考虑的,如:考试等级判断、个人所得税的缴纳等等,这时就需要使用逻辑运算符来操作。逻辑运算符有:&&----短路与、||----短路或、!----非;
-
短路与运算——&&
- 两个关系参与的短路与运算:只有两个都是true,短路与结果才是true;只要有一个是false,短路与结果就是false。
- 在实际运行中,只要出现false结果,后续就不再继续进行运算,会直接输出结果false;
-
短路或运算——||
- 两个关系参与的短路或运算:只有两个都是false时,短路或结果才是false;只要有一个是true,短路或结果一定是true。
- 在实际运行中,只要出现true结果,后续就不再继续进行运算,会直接输出结果true;
-
非运算——!
- 非运算是针对一个关系运算结果的求反运算:关系为true,则非运算结果是false;关系为false,则非运算结果是true。
-
与运算中,全真才真,或运算中,全假才假,并不会因为前序运算不符合规则就直接停止后续判断,所以在实际开发中,使用较少,因为其效率不高。
8.三目运算符
语法:boolean条件 ? 值1 : 值2
三目运算符是一个根据条件的不同取值,去执行不同的值:如果条件为true时,则执行值1;如果条件为false时,则执行值2。
注意:
- 三目运算中的值1和值2,只能有一个被执行;
- 值1和值2的类型必须一致;
- 三目运算的结果类型,由值的类型决定;
package partOne;
import java.util.Scanner;
//本类用于c测试三目运算符
public class TestOperator5 {
public static void main(String[] args) {
//1.提示用户输入一个数a
System.out.println("请输入要比较的第一个数:");
//接收用户输入的第一个数
int a = new Scanner(System.in).nextInt();
//2.提示用户输入二个数b
System.out.println("请输入要比较的第二个数:");
//接收用户输入的第一个数
int b = new Scanner(System.in).nextInt();
/**
3.比较用户输入的俩个数
其中a>b为表达式,若结果为真,则取a位置的值,如果结果为false则取b位置的值,最后的返回值为a,b相同类型的值max
* */
int max = a > b ? a : b;
System.out.println(max);
}
}
9.赋值运算符
=在java中是作为赋值使用的,其并不是比较运算符,注意要与==进行区分;
赋值运算符是用于将等号右边的结果赋值给左边的变量,赋值运算是最后才执行的,执行顺序是从右往左。赋值运算符在使用时还具备以下用法:
- 赋值运算表达式本身也是有值得
- 在开发中,赋值运算符可以与算术运算符配合一起使用,这种就称之为扩展赋值运算符。具体写法为:
10.综合练习:求平年闰年
package partOne;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
//1.提示并接收用户输入的年份
System.out.println("请输入您要判断的年份:");
int year = new Scanner(System.in).nextInt();
//2.定义一个变量用来保存结果
String result = "平年";//默认值是平年,假设每年都是平年
//3.判断用户输入的年份是否满足闰年的条件
/**方法1*/
/**条件1:能被4整除,并且不能被100整除*/
// 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);
}
}