03-运算符+分支结构
运算符
- --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);
}
}
}