教课流程:
位运算符:两个整数型数据交换位置--中间变量、位异或运算[ ^ ]
三元运算符--if语句【数据键盘录入】
switch语句
总结:
1:运算符
(1)位运算符
^ : 一个数据对同一个数据^两次,结果还是数据本身。[异或]
举例:a ^ b ^ b = a
(2)条件运算符
格式:
条件表达式?表达式1:表达式2
执行流程:
根据条件表达式返回的是true还是false,决定结果是什么。
如果是true,就把表达式1作为结果。
如果是false,就把表达式2作为结果。
举例:
int a = 100;
int b = a > 50 ? 200 : 100;
请问b的值?200
2:面试题
(1)请用最有效率的代码写出2乘以8
2<<3 //位运算
(2)请交换两个变量。
int a = 10;
int b = 20;
开发:临时变量
int temp = a;
a = b;
b = temp;
面试:位^运算符
a = a ^ b;
b = a ^ b;
a = a ^ b;
3:if语句
(1)用于做判断使用的。
常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
(2)格式:
A:第一种格式
if(条件表达式)
{
语句体;
}
执行流程:
如果条件表达式为true,就执行语句体;
否则,什么都不执行。
B:第二种格式
if(条件表达式)
{
语句体1;
}
else
{
语句体2;
}
执行流程:
如果条件表达式为true,就执行语句体1;
否则,就执行语句体2;
特殊:
可以和条件表达式在某些情况下进行替换。
一般是在赋值的情况下可以。
举例:
获取两个数中的最大值。
int a = 10,b = 15,c = 23;
int max = (a>b)?((a>c)?a:c):((b>c)?b:c);
C:第三种格式
if(条件表达式1) //条件表达式1和条件表达式2等没有严格的关系,范围的表达式建议书写完整
{
语句体1;
}
else if(条件表达式2)
{
语句体2;
}
...
else
{
语句体n;
}
执行流程:
如果条件表达式1为true,就执行语句体1;
如果条件表达式2为true,就执行语句体2;
...
否则,就执行语句体n;
D:注意事项
a:什么时候时候哪一种if语句。
第一种格式在判断条件为一种情况下使用。
第二种格式在判断条件为两种情况下使用。
第三种格式在判断条件为多种情况下使用。
b:每一种if语句其实都是一个整体,如果有地方执行了, 其他的就不执行了。
c:如果if或者else里面控制的语句体是一条语句,是可以省略大括号的,但是,如果是控制多条语句,就必须写上大括号。
建议:永远写上大括号。
d:大括号和分号一般不同时出现。
E:作用域
所有变量的定义只在它所属的大括号内有效。
(3)案例:
A:根据键盘录入的成绩,判断等级。
B:根据键盘录入的月份,输出该月份所对应的季节。
4:switch语句
(1)用于做选择使用的。一般用于几个常量的判断。
switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。
所以,针对几个常量的判断,一般选择switch语句。
(2)switch语句的格式:
switch(表达式)
{
case 值1:
语句体1; //语句体可以是多条语句,不用加括号
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n;
break;
}
A:针对格式的解释
switch:表示这里使用的是switch语句,后面跟的是选项。
表达式:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
case后面的值是不能够重复的。
break:
switch语句执行到这里,就结束了。
default:
当所有的case和表达式都不匹配的时候,就走default的内容。
它相当于if语句的else。一般不建议省略。
B:执行流程
进入switch语句后,就会根据表达式的值去找对应的case值。
如果最终没有找到,那么,就执行default的内容。
C:注意事项:
a:default整体可以省略吗?
可以,但是不建议。
b:default的位置可以放到前面吗?
可以,但是不建议。
c:break可以省略吗?
可以,但是不建议。
default在最后,break是可以省略的。
case后面的break可以省略,但是结果可能有问题。
d:switch语句什么时候结束呢?
就是遇到break或者执行到程序的末尾。
(3)案例:
A:根据键盘录入的日期(1-7),输出对应的星期日期。
1 /** 2 需求:根据输入数据,判断星期 3 */ 4 import java.util.Scanner; 5 class DataDemo 6 { 7 public static void main(String[] args) 8 { 9 Scanner sc = new Scanner(System.in); 10 System.out.println("请输入待查询的数字1——7:"); 11 int data = sc.nextInt(); 12 13 if(data>7 ||data<0) 14 { 15 System.out.println("输入错误数字,请重新输入!"); 16 data = sc.nextInt(); 17 } 18 switch(data) 19 { 20 case 1: 21 System.out.println("星期一"); 22 break; 23 case 2: 24 System.out.println("星期二"); 25 break; 26 case 3: 27 System.out.println("星期三"); 28 break; 29 case 4: 30 System.out.println("星期四"); 31 break; 32 case 5: 33 System.out.println("星期五"); 34 break; 35 case 6: 36 System.out.println("星期六"); 37 break; 38 case 7: 39 System.out.println("星期天"); 40 break; // /* 41 default://此处default完全没有必要,在switch语句前,已经对输入数据进行了处理。 42 System.out.println("输入错误数字!"); 43 break; //*/ 44 } 45 46 switch(data) 47 { 48 case 1: 49 case 2: 50 case 3: 51 case 4: 52 case 5://多个case公用同一段代码,可以一起使用 53 System.out.println("工作日"); 54 break; 55 case 6: 56 case 7: 57 System.out.println("周末"); 58 break; 59 } 60 61 } 62 }
B:根据键盘录入的月份,输出该月份所对应的季节。
1 /** 2 功能需求: 3 请根据给定的月份,输出对应的季节。 4 5 春:3,4,5 6 夏:6,7,8 7 秋:9,10,11 8 冬:1,2,12 9 10 键盘输入: 11 三种方式:String[]接受参数,标准输入输出流IO,Scanner 12 Scanner的使用: 13 1、导入包:import java.util.Scanner; 14 2、创建Scanner对象:Scanner sc = new Scanner(System.in); 15 3、调用对象方法,获取键盘输入int型数据: 16 int month = sc.nextInt(); 17 */ 18 19 import java.util.Scanner; 20 //导入包 21 class IfDemo 22 { 23 public static void main(String[] args) 24 { 25 //创建Scanner对象 26 Scanner sc = new Scanner(System.in); 27 System.out.println("请输入月份1-12:"); 28 //调用Scanner对象方法,获取输入数据 29 int month = sc.nextInt(); 30 31 if(month >=3 && month <6) 32 { 33 System.out.println(month+"月是春季 ~_~"); 34 } 35 else if(month >=6 && month <9) 36 { 37 System.out.println(month+"月是夏季 ~_~"); 38 } 39 else if(month >=9 && month <11) 40 { 41 System.out.println(month+"月是秋季 ~_~"); 42 } //12月是一个特例,大小比较不好放置 43 else if(month >=1 && month <3 || month ==12) 44 { 45 System.out.println(month+"月是冬季 ~_~"); 46 } 47 else 48 { 49 System.out.println("输入错误季节 ~_~"); 50 } 51 52 53 //因为月份相对较少,可以使用逐个列举的方式 54 } 55 } 56 57 58 /* 59 总结: 60 当前程序主要三个考虑点: 61 1,if语句的使用,尤其是第三种的嵌套; 62 2,Scanner类实现键盘响应; 63 3,程序安全性的考虑,12月的放置,以及输入错误数据的考量。 64 */
5:Scanner的使用
(1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。
(2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:
A:导包
import java.util.Scanner;
B:创建对象,封装键盘录入
Scanner sc = new Scanner(System.in);
C:调用方法,获取数据
int number = sc.nextInt();