运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1) 算术运算符
(资料图片仅供参考)
2) 赋值运算符
3) 关系运算符 [比较运算符]
4) 逻辑运算符
5) 位运算符 [需要二进制基础]
6) 三元运算符
算数运算符是对数值类型的变量进行运算的,在java程序中使用的非常多
//算数运算符 /号public class Test6{ public static void main(String[] args) { System.out.println(10/4);//2,从数学来看是2.5,但是从java来看就是2 System.out.println(10.0/4); double d1 = 10/4; System.out.println(d1);//2.0 }}
2.2.1在java中%的本质,看一个公式a%b=a-a/b*b
//取模%//在java中%的本质,看一个公式a%b=a-a/b*bpublic class Test6{ public static void main(String[] args) { System.out.println(10%3);//1 System.out.println(-10%3);//-1, -10-(-10)/3*3=-10+9=-1 System.out.println(10%-3);//1, 10-10/(-3)*(-3)=10-9=1 System.out.println(-10%-3);//-1, (-10)-(-10)/(-3)*(-3)=-10+9=-1 }}
--与++规则一致
前置++,先++后使用
后置++,先使用后++
//运算符++//前置++,先++后使用//后置++,先使用后++public class Test6{ public static void main(String[] args) { int i = 10; i++;//11 ++i;//12 System.out.println("i="+i);//12 //前置++ int j = 8; int k = ++j; System.out.println("j="+j+" k="+k);// 9 9 //后置++ int a = 8; int b = a++; System.out.println("a="+a+" b="+b);//9 8 }}
注意:i=i++;//后置++三步走:(1) temp=i;(2) i=i+1;(3)i=temp;
public class Test6{ public static void main(String[] args) { int i=1; i=i++;//三步走:(1) temp=i;(2) i=i+1;(3)i=temp; System.out.println(i);//1 }}
i=++i;//前置++三步走:(1)i=i+1;(2)temp=i;(3)i=temp;注意此式三步走与上式顺序不同
//例2public class Test6{ public static void main(String[] args) { int i=1; i=++i;//三步走:(1)i=i+1;(2)temp=i;(3)i=temp;注意此式三步走与上式顺序不同 System.out.println(i);//2 }}
//测试输出public class Test6{ public static void main(String[] args) { int a1=10; int a2=20; int a=a1++; System.out.println("a="+a);//10 System.out.println("a2="+a2);//20 a=--a2; System.out.println("a="+a);//19 System.out.println("a2="+a2);//19 }}
2.思路分析
(1) 使用 int 变量 days 保存 天数
(2) 一个星期是 7 天 星期数 weeks: days / 7 零 xx 天 leftDays days % 7
(3) 输出
//课堂练习1//假如还有 59 天放假,问:合 xx 个星期零 xx 天public class Test6{ public static void main(String[] args) { int days=59; int weeks = days/7;//多少个星期 int leftdays = days%7;//零多少天 System.out.println(weeks+"个星期零"+leftdays+"天");//8个星期零3天 }}
课堂练习2
定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。 [234.5]
2 思路分析
(1) 先定义一个 double huaShi 变量保存 华氏温度
(2) 根据给出的公式,进行计算即可 5/9*(华氏温度-100)
考虑数学公式和 java 语言的特性
(3) 将得到的结果保存到 double sheShi
3 走代码
//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。 [234.5]public class Test6{ public static void main(String[] args) { double huashi = 234.5; double sheshi = 5.0/9*(huashi-100);//5/9*(华氏温度-100) 这里的5/9计算机直接认为的0了所以要用5.0/9 System.out.println("华氏温度"+huashi+"对应的摄氏温度是"+sheshi); }}
1) 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
2) 关系表达式 经常用在 if 结构的条件中或循环结构的条件中
//关系运算符public class Test7{ public static void main(String[] args) { int a = 9;//提示: 工作开发中,不要将变量写的这么简单例如 a, b int b = 8; System.out.println(a>b);//T System.out.println(a>=b);//T System.out.println(a<=b);//F System.out.println(ab; System.out.println("flag="+flag);//true }}
2) 关系运算符组成的表达式,我们称为关系表达式。 a > b
3) 比较运算符"=="不能误写成"="
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值
1) a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
名称 语法 特点
短路与&& 条件 1&&条件 2 两个条件都为 true,结果为 true,否则 false
逻辑与& 条件 1&条件 2 两个条件都为 true,结果为 true,否则 false
1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
//&&(短路与)和&(逻辑与)的使用public class Test7{ public static void main(String[] args) { //&&(短路与)的使用 int age = 50; if(age>20 && age<90) { System.out.println("ok100"); } //&(逻辑与)的使用 if(age>20 & age<90) { System.out.println("ok200"); } //区别 //1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高 //2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低 int a = 4; int b = 9; //if(a < 1 && ++b < 50) // { //System.out.println("ok300"); //} //System.out.println("a=" + a + " b=" + b);// 4 9 if(a < 1 & ++b < 50) { System.out.println("ok300"); } System.out.println("a=" + a + " b=" + b);// 4 10 }}
名称 语法 特点
短路或|| 条件 1||条件 2 两个条件中只要有一个成立,结果为 true,否则为 false
|逻辑或 条件 1|条件 2 只要有一个条件成立,结果为 true,否则为 false
(1)||短路或:如果第一个条件为 true, 则第二个条件不会判断,最终结果为 true,效率高
(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
public class Test7{ public static void main(String[] args) { //||(短路或)的使用 int age = 50; if(age>20 || age<30) { System.out.println("ok100"); } //|(逻辑或)的使用 if(age>20 | age<30) { System.out.println("ok200"); } //区别 //(1)||短路或:如果第一个条件为 true, 则第二个条件不会判断,最终结果为 true,效率高 //(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低 int a = 4; int b = 9; // if(a > 1 || ++b >4 )//短路或 // { // System.out.println("ok300"); // } // System.out.println("a=" + a + " b=" + b);// 4 9 if(a > 1 | ++b > 4)//逻辑或 { System.out.println("ok300"); } System.out.println("a=" + a + " b=" + b);// 4 10 }}
!取反,真变假,假变真
异或,相同为假,不同为真
//取反!和^异或public class Test7{ public static void main(String[] args) { //!取反,真变假,假变真 System.out.println(60>20);//T System.out.println(!(60>20));//F //异或,相同为假,不同为真 boolean b1 = (10>1)^(3<5); System.out.println("b1="+b1);//F boolean b2 = (10>1)^(3>5); System.out.println("b2="+b2);//T }}
public class Test7{ public static void main(String[] args) { // int x = 5; // int y = 5; // if(x++==6 & ++y==6) // { // x=11; // } // System.out.println("x="+x+"y="+y);//6 6 int x = 5; int y = 5; if(x++==6 && ++y==6) { x=11; } System.out.println("x="+x+"y="+y);//6 5 }}
public class Test7{ public static void main(String[] args) { int x = 5; int y = 5; if(x++==5 | ++y==5) { x=11; } System.out.println("x="+x+"y="+y);//11 6 // int x = 5; // int y = 5; // if(x++==5 || ++y==5) // { // x=11; // } // System.out.println("x="+x+"y="+y);//11 5 }}
public class Test7{ public static void main(String[] args) { boolean x = true; boolean y = false; short z=46; if((z++==46)&&(y=true)) z++; if((x=false)||(++z==49)) z++; System.out.println(z);//50 }}