概述
一、表达式
什么是表达式。由一系列预算付和操作数组成
如:5,a,m+3,sum=a+b,n=x*y+(x%2)-(x/y)
二、运算符
1、算术运算符(+,-,*,/,%,++,--),
2、赋值运算符(=,+=,-=,*=,/=,%=),例如:a+=b,等于:a=a+b
3、关系运算符(==,!=,<,<=,>,>=)
4、逻辑运算符(!,&,&&,|,||) && 或 || : 短路运算符,就是前面表达式结果能直接决定整个表达式结果,就不需要判断后面表达式结果
5、条件运算符(? :) 例:a>b?a:b; //a>b,成立为a,不成立为b; java中唯一的三目表达式,意思是操作三个数
6、位运算符(本次没讲解)
三、运算符的优先级
一、赋值运算符
格式:变量 = 表达式
注意:赋值运算符是从右往左运算
赋值运算符的左边只能是变量不能是常量
二、算数运算符
算数运算符:
1)作用:算数运算符主要用于进行基本的算数运算,如加法、减法、乘法和除法等;
2)分类:
加法(+)、减法(-)、乘法(*)、除法(/)、求余数(%)、自增1(++)、自减1(--);
3)注意:除法的分子分母都是整型时,结果为整除后的结果;
除法的分子分母有任意一个为小数时,结果为小数。
public static void main(String[] args) {
int num1=10,num2=5,result;
result=num1+num2;
System.out.println(num1+"+"+num2+"="+result);
// 字符串连接:值+字符串=字符串;从左往右依次运行
System.out.println(""+num1+num2);
//减法
result=num1-num2;
System.out.println(num1+"-"+num2+"="+result);
//乘法
result=num1*num2;
System.out.println(num1+"*"+num2+"="+result);
//除法
result=num1/num2;
System.out.println(num1+"/"+num2+"="+result);
//分子分母都是整型时,结果为整除后的结果
System.out.println(13/5);
//有一个是浮点型,结果就有小数
System.out.println("13.0/5="+13.0/5);
//求余数
result=13%num2;
System.out.println("13%"+num2+"="+result);
System.out.println("13.5%5="+(13.5%5));
}
注意:
1.字符串连接:有字符串在,输出的都是连接后的字符串;
只有数值的话,输出的就是运算后的数值结果;
2.整除中的数有小数,结果就有小数
自增自减运算符
自增自减在前:先自增自减,后运算
自增自减在后:先运算,后自增自减 (即使自增自减在括号内,也是如此)
三、关系运算符
1)分类:>、<、>=、<=、==、!=;
2)比较运算符用于判断两个数据的大小;
3)比较的结果是一个布尔值;
4)字符型数值比较的是两个字符的ASCII值,'A' >'B' 结果false;
5)浮点数与整数比较,只要相等就返回true,float f =5.0f; long l =5; f==l; 结果为true;
if条件结构
关系运算符主要用于条件和循环语句中的判断条件
简单if语句的格式:
if(条件){
<语句块>
}
举例:
class ConditionDemo1 {
public static void main(String[] args) {
//商场打折,如果两件商品的价格大于100则减20,并把原价和折后价分别输出。
//定义两个变量,分别存放两件衣服的价格
double price1,price2;
price1=80;
price2=55;
//计算两件商品的总价格
double sum=price1+price2;
//输出原价
System.out.println("原价为"+sum);
if(sum>100) {
sum=sum-20;//sum-=20;
}
System.out.println("折后价为"+sum);
}
}
//原价为135.0
//折后价为115.0
if-else条件结构
格式:
if(条件){
<语句块>
}else{
<语句块>
}
举例:
public class ConditionDemo2 {
public static void main(String[] args) {
//判断一个整数是基数还是偶数,并将结果输出。
//定义一个变量存放数据
// int n=11;
// 从键盘接收数据
System.out.println("请输入一个整数:");
Scanner s = new Scanner(System.in);//s变量
int n = s.nextInt();//接收键盘输入的s
if (n % 2 == 0) {
System.out.println(n + "是偶数!");
} else {
System.out.println(n + "是基数!");
}
}
}
//请输入一个整数:
//10
//10是偶数!
四、逻辑运算符
1)种类:与(&&或&)、或(||或|)、非(!);
2)注意:逻辑运算符的操作数都是布尔类型的。
逻辑与运算符(&&)
1)&&:又叫短路运算,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了;
2)&:即使运算符左边表达式的值为false,也会继续执行运算符右边的表达式。
例如:
int n=3; boolean b=(3>7)&((n++)<2);
结果为b=false,n=4。
若boolean b=(3>7)&&((n++)<2);
结果为b=false,n=3。
逻辑“或”运算符(||)
1)运算逻辑:
只要运算符左右两边的表达式的值有一个为true,则结果为true;
当运算符左右两边的表达式的值都为false,则结果为false;
2)特点:||也是短路运算符,只要有一个表达式的结果为true,则整个表达式的值一定为true,且第二个表达式就不会进行计算了。
例如: int n =3;boolean b = (3<7)|((n++)<2) 结果为b =true,n=4 int n=3;boolean b = (3<7)||((n++)<2)
结果为b=true,n=3;
逻辑“非”运算符(!)
对原条件进行取反。格式 !(n%3==0)
举例:
public class LogicDemo3 {
public static void main(String[] args) {
//输入一个整数
System.out.println("请入一个整数:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
if(!(n%3==0)) {
System.out.println(n+"不能被三整除");
}else {
System.out.println(n+"能被三整除13");
}
}
}
//请入一个整数:
//12
//12能被三整除
五、条件运算符(三目运算符)
语法: 布尔表达式?表达式1:表达式2
例如:a>b?a:b 当布尔表达式的值为true,返回表达式1的值,否则返回表达式2的值
public class Demo4 {
public static void main(String[] args) {
//求a,b的最大值
int a=1,b=7,max;
if(a>b) {
max=a;
System.out.println("max="+max);
}else {max=b;
System.out.println("max="+max);
}
max=a>b?a:b;//前面那么多行代码,可以只用这一行
System.out.println("max="+max);
boolean b1=a>b?(3<6&&4>3):(true==false);// :的两边也可以是复杂的表达式
System.out.println("b1="+b1);
}
}
六、运算符的优先级
算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
七、运算符案例
判断是否是闰年
提示闰年的判断规则:能被4整除但不能被100整除的年份,或者能被400整除的年份
public class LeapYearDemo {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
int year;
while (true) {
System.out.println("请输入年份:");
year=sc.nextInt();
if(((year%4==0)&(year%100!=0))|(year%400==0)) {
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
}
}
}
请输入年份: 2000
2000是闰年
请输入年份: 2004
2004是闰年
请输入年份: 1995
1995不是闰年