运算符
-
--1、算数运算符
- --包括: +-*/ % ++ --
-
--2、比较运算符:结果是boolean类型
- --包括: == !=
-
--3、逻辑运算符:结果是boolean类型
- --包括: & | && || + !
-
--4、三元运算符:结果是2或者3
- --格式: 1 ? 2 : 3
-
--5、赋值运算符
- --包括: = += -= *= /=
逻辑运算符(重点)
单与 & :表示并且关系 1 & 2 ,如果结果想要得到true,要求是:1和2都是true 单或 | :表示或者关系 1 | 2 ,如果结果想要得到true,要求是:1是true或者2是true 双与 / 短路与 -- && :表示并且关系,高效 1 && 2 ,如果1判断不成立得到了false(结果已经注定了就是false),2会被短路,提高效率。 双或 / 短路或 -- || :表示或者关系,高效 1 || 2 ,如果1判断成立得到了true(结果已经注定了就是true),2会被短路,提高效率。
1.与运算符 与运算符用符号“&”表示,其使用规律如下: 两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。 public class data13 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 与的结果是:"+(a&b)); } } 运行结果 a 和b 与的结果是:128 下面分析这个程序: “a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。
根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。 2.或运算符 或运算符用符号“|”表示,其运算规律如下: 两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。 public class data14 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 或的结果是:"+(a|b)); } } 运行结果 a 和b 或的结果是:129 下面分析这个程序段: a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,
根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。
运算符的练习
练习:自增自减
package cn.tedu.basic; /** *@author 作者:李强 *@email 邮箱:1435430561@qq.com * 日期: 2020年4月30日 */ //这个类用来测试自增自减 public class Test2_Zizeng { public static void main(String[] args) { //符号在后,先使用后变化 int a = 1; System.out.println(a++);//1 System.out.println(a);//2 //符号在前,先变化后使用 int b = 1; System.out.println(++b);//2 System.out.println(++a+b+a++);//8 System.out.println(a);//4 int c = 1; System.out.println(c--);//1 int d =1; System.out.println(--d);//0 System.out.println(--c-c-d--);//0 //System.out.println(a+++a);//a++ 然后+a int x = 10; int y = 20; int z = ++x+y-y--+x--; System.out.println(z);//22 System.out.println(++x+y-y--+x--);//22 } }
练习:求两个数里的大值 ,三个数里的大值(三目运算 1 ? 2 : 3)
package cn.tedu.basic; import java.util.Scanner; /** *@author 作者:李强 *@email 邮箱:1435430561@qq.com * 日期: 2020年4月30日 */ //求两个数里的大值 public class Test3_Max { public static void main(String[] args) { //定义变量 System.out.println("请输入一个数a"); int a=new Scanner(System.in).nextInt(); System.out.println("请输入一个数b"); int b=new Scanner(System.in).nextInt(); System.out.println("请输入一个数c"); int c=new Scanner(System.in).nextInt(); System.out.println("输入的数分别为a = "+a+" b = "+b+" c ="+c); int max = a>b?a:b; System.out.println("两个个数中"+a+" "+b+"的最大的数为:"+max); max = max>c?max:c; System.out.println("三个数中"+a+" "+b+" "+c+"的最大的数为:"+max); // int max = (a>b?a:b)>c?(a>b?a:b):c; // System.out.println(max); } }
练习:平年闰年
package cn.tedu.basic; import java.util.Scanner; /** *@author 作者:李强 *@email 邮箱:1435430561@qq.com * 日期: 2020年4月30日 */ //测试平年闰年 public class Test4_Year { public static void main(String[] args) { System.out.println("请输入年份:"); int year = new Scanner(System.in).nextInt(); String desc ="平年"; // if ((year%4==0 && year%100!=0) || year%400==0) { //desc = "闰年"; // System.out.println(year+"年是闰年"); // }else { // System.out.println(year+"年不是闰年"); // } //System.out.println((year%4==0 && year%100!=0) || year%400==0?"闰年":"平年"); if ((year%4==0 && year%100!=0) || year%400==0) { desc = "闰年"; } System.out.println(year+"年是"+desc); } }
分支结构
if分支:
--语法 单分支: if( 判断条件 ){ 满足条件的代码 } 多分支: if( 判断条件 ){ 满足条件的代码 }else{ 不满足条件的代码 } 嵌套分支: if( 判断条件1 ){ 满足条件的代码1 }else if( 判断条件2 ){ 满足条件的代码2 }else if( 判断条件3 ){ 满足条件的代码3 }else{ 谁都不满足的代码 }
练习:商品打折
package cn.tedu.ifdemo; import java.util.Scanner; /** *@author 作者:李强 *@email 邮箱:1435430561@qq.com * 日期: 2020年4月30日 */ //测试商品打折 public class Test5_Discount { public static void main(String[] args) { System.out.println("请输入商品价格"); double price = new Scanner(System.in).nextDouble(); double dis=price;//折后价 if (price>=5000) { dis=price*0.5; }else if (price>=2000) { dis=price*0.7; }else if (price>=1000) { dis=price*0.9; } System.out.println("原价是"+price+",折后价为:"+dis); } }
练习:成绩分等级
package cn.tedu.ifdemo; import java.util.Scanner; /** *@author 作者:李强 *@email 邮箱:1435430561@qq.com * 日期: 2020年4月30日 */ //统计成绩在哪个等级 public class Test6_Chengji { public static void main(String[] args) { System.out.println("请输入学生的成绩"); double cj = new Scanner(System.in).nextDouble(); String grade =""; if (cj>100 || cj<0) { System.out.println("请输入0~100以内的值"); //return; System.exit(0); } if (cj>=90) { grade ="优秀"; }else if (cj>=80) { grade="良好"; }else if (cj>=70) { grade="中等"; }else if (cj>=60) { grade="合格"; } else { grade="不合格"; } System.out.println("学生的成绩为"+cj+",等级属于:"+grade); } }
Switch分支:
概述:
当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束。
switch(expr1)中,expr1是一个整数表达式, 整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以也支持。
注意: jdk1.7以后新增 String
语法:
switch(变量或者表达式){ case 1: case 2: case 3: case 4: default: }
练习:数字匹配
package cn.tedu.ifdemo; //这个类用来测试 数字匹配 //简单了解即可!! public class Test7_Switch { public static void main(String[] args) { int a = 2 ; //1、参数a相当于把数字2传递成功 switch ( a ) {//0、整型表达式对于数据类型有要求:byte short int char jdk1.7后String //2、开始匹配各种情况 case '0' : System.out.println(0); break ; case 1 :System.out.println(1); break ; //3、成功匹配了数字2的情况,并向后穿透所有case,包括default case 2: System.out.println(2); break ; //4、break用来结束程序 case 3: System.out.println(3); break ; case 4: System.out.println(4); break ; default : System.out.println(99); } } }