概述
一、表达式
什么是表达式。由一系列预算付和操作数组成
如: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不是闰年