03.01 java语言基础(逻辑运算符的基本用法)
A:逻辑运算符有那些:
&, |, ^, !, &&,||
B:逻辑运算符的注意事项:
- 逻辑运算符一般用于连接boolean类型的表达式或者值
- 表达式:就是用运算符把常量或者变量连接起来的符合Java语法的式子
- 算术表达式:a+b
- 比较表达式:a == b(条件表达式)
C:结论:
1.&逻辑与:有false则false
2.|逻辑或:有true则true
3.^逻辑异或:相同为false,不同为true
4.!逻辑非:非false则true,非true则false
特点:偶数个不改变本身
03.02 Java语言基础(逻辑运算符&&和&的区别)
A:&&和&的区别:
a).最终结果一样
b)&&具有短路效果,左边是false,右边不执行
B:||和|的区别:
a)||只要满足第一个条件,后边的条件就不判断了
b)| 要满足所有的条件,才会进行判断
C:开发中常用:&&, ||,!
03.03 java 语言基础(位运算符的基本用法)
A:位运算符有哪些: & | ^ ~ << >> >>>
B: 位运算符的基本用法1
&,|, ^, ~的用法
&:0则0
|:1则1
^ :则0
~ :按位取反
03.04 Java语言基础(位异或运算符的特点及面试题)
位异或运算符的特点
^的特点:一个数据对另一个数据位异或两次,该数本身不变
面试题:请自己实现两个数的交换:
int x = 10;
int y = 5;
int temp;
temp = x;
x=y;
03.05 Java语言基础(位运算符的基本用法2及面试题)
>>, >>>, <<的用法:
<<:左移 左边最高位丢弃,右边补齐0
>>:右移 最高位是0,左边补齐0,最高位是1,左边补齐0
>>>;无符号右移 无论最高位是0还是1,左边都补齐0
左移,向左移动几位就是乘以2的几次幂
右移,向右移动几位就是除以2的几次幂
例: 左移:System.out.println(12 << 1); //24
右移: System.out.println(12 >> 1); //6
00000000 00000000 00000000 00001100 12的补码
000000000 00000000 00000000 0000110(0) 6
0000000000 00000000 00000000 0000110(00) 3
03.06Java语言基础(三元运算符的基本用法)
A:三元运算符的格式:(关系表达式)?表达式1 :表达式2
B: 三元运算符的执行流程
满足关系表达式,结果为表达式1
不满足关系表达式,结果为表达式2
C:案例:获取两个数的最大值
int x = 10;
int y = 5;
int z;
z=(x>y) ? x : y ;
System.out.println(“z = ” + z); //z=10
03.07Java语言基础(三元运算符的练习)
案例:比较两个整数是否相同
int x = 10;
int y = 5;
// boolean b = (x==y) ? true : false;
boolean b = (x==y);
System.out.println(“b = ” + b); //b= false
案例:获取三个整数中的最大值
int a = 10;
int b = 20;
Int c = 30;
//先比较两个数的值,找出这两个数的最大值
int temp = (a>b) ? a : b ;
//用前两个数的最大值与第三个数比价,获取最大值
int max = (temp >c) ? temp : c;
System.out.println(“max = ” + max); //max=30
03.08 Java语言基础(键盘录入的基本格式讲解)
A:为什么要是用键盘录入数据:
为了让程序的数据更符合开发的数据
让程序更灵活
B:如何实现键盘录入:
- 导包:
- 格式:import java.util.Scanner;
- 位置:在class上面
- 创建键盘录入对象:
a) 格式:Scanner sc = new Scanner (System.in);
3.通过对象获取数据
a) 格式: int x = sc.nextInt();
C:案例
键盘录入1个整数,并输出到控制台
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入一个整数:);
int x = sc.nextInt(); //将键盘录入的数据存储在x 中
System.out.println(x);
键盘录入2个整数,并输出到控制台
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入第一个整数:);
int x = sc.nextInt(); //将键盘录入的数据存储在x 中
System.out.println(“请输入第二个整数:);
int y = sc.nextInt(); //将键盘录入的数据存储在y 中
System.out.println(x);
System.out.println(y);
03.09 Java语言基础(键盘录入的练习1)
案例:1.键盘录入两个数据,并对这两个数据求和,输出其结果
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入第一个整数:);
int x = sc.nextInt(); //将键盘录入的数据存储在x 中
System.out.println(“请输入第二个整数:);
int y = sc.nextInt(); //将键盘录入的数据存储在y 中
int sum = x+y;
System.out.println(sum);
2.键盘录入两个数据,获取这个两个数据中的最大值
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入第一个整数:);
int x = sc.nextInt(); //将键盘录入的数据存储在x 中
System.out.println(“请输入第二个整数:);
int y = sc.nextInt(); //将键盘录入的数据存储在y 中
int max = (x>y) ? x : y;
System.out.println(“max = “ + max);
03.10 Java语言基础(键盘录入练习2)
案例:键盘录入两个数据,比较这两个数据是否相等
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入第一个整数:);
int x = sc.nextInt(); //将键盘录入的数据存储在x 中
System.out.println(“请输入第二个整数:);
int y = sc.nextInt(); //将键盘录入的数据存储在y 中
// boolean b = (x==y) ? true : false;
boolean b = (x==y);
System.out.println(“b = ” + b);
键盘录入三个数据,获取这三个数据中的最大值
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入第一个整数:);
int a = sc.nextInt(); //将键盘录入的数据存储在a中
System.out.println(“请输入第二个整数:);
int b = sc.nextInt(); //将键盘录入的数据存储在b 中
System.out.println(“请输入第二个整数:);
int c = sc.nextInt(); //将键盘录入的数据存储在c 中
//先比较两个数的值,找出这两个数的最大值
int temp = (a>b) ? a : b ;
//用前两个数的最大值与第三个数比价,获取最大值
int max = (temp >c) ? temp : c;
System.out.println(“max = ” + max);
03.11 Java语言基础(顺序结构语句)
A:流程语句:可以控制程序的执行流程
B:流程语句的分类:
顺序结构
选择结构
循环结构
C:执行流程:从上往下,依次执行
03.12 Java语言基础(选择结构if语句格式1及其使用)
A:选择结构的分类:
If语句
Switch 语句
B:if语句有几种格式:3种
格式1:
if(比较表达式){
语句体;
}
C:执行流程
先计算比较表达式的值,看其返回值是true还是false
如果是true就执行语句体
如果是false 就不执行语句体
03.13 Java语言基础(选择结构if的注意事项)
A:比较表达式无论是简单还是复杂,结果必须是boolean类型
B:if语句控制的语句体如果是一条语句,大括号可以省略(建议永远不要省略大括号),多条语句,不能省略大括号
C:一般来说:有左大括号,就没有分号,有分号就没有左大括号
03.14 Java语言基础(选择结构if语句及其格式2的使用)
A:格式2:
if (比较表达式){
语句体1;
}else{
语句体2;
}
B:执行流程:
先计算比较表达式的值,看其返回值是true还是false
如果是true 就执行语句体1
如果是false 就执行语句体2
C:案例:1.获取两个数据中的较大值
int a = 10;
int b = 20;
Int c ;
if(a>b){
c = a;
}else{
c = b;
}
System.out.println(c);
- 判断一个数据是奇数还是偶数,并输出是奇数还是偶数
int a = 10;
if(a % 2 == 0){
System.out.println(a+”是一个偶数”);
}else{
System.out.println(a+”是一个奇数”);
}
注意事项:else后面是没有比较表达式的,只有if后面有
03.15 Java语言基础(if语句的格式2和三元的相互转化问题)
A:案例:if语句和三元运算符完成同一个效果
B:if语句和三元运算符的区别:
三元运算符就是if语句的简写。
当if else运算后,有一个具体的结果时,可以简化写成三元运算符
int a = 3,b;
if(a>1){
b = 100;
}else{
b = 200;
}
这时就可以简化:b = a>1?100:200;
C什么时候if语句实现不能用三元改进呢?:
当if语句控制的操作是一个输出语句的时候就不能
因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出
03.16 Java语言基础(if语句的格式3及其使用)
格式3:
If(比较表达式1){
语句体1;
} else If(比较表达式2){
语句体2;
} else If(比较表达式3){
语句体3;
…….
else{
语句体n+1;
执行流程:
先计算比较表达式1的值,看其返回值是true还是false
如果是true 就执行语句体1,if语句结束
如果是false 就比较表达式2的值,看其返回值是true还是false
如果是true 就执行语句体2,if语句结束
如果是false 就比较表达式3的值,看其返回值是true还是false
如果都是false就执行语句体n+1
注意事项:最后一个else可以省略,但是不建议省略,可以对范围外的错误值提示
03.17 Java语言基础(if语句的格式3及其练习)
A:键盘录入一个成绩,判断并输出成绩的等级
90-100 优 80-89 良 70-79 中 60-69 及格 0-59 差
B:键盘录入X的值,并计算出y 的值并输出
x>=3 y=2 * x+1;
-1<x<3 y=2 * x;
x<=-1 y=2* x-1;
03.18 Java语言基础(选择结构if语句的嵌套使用)
A:获取三个数据中的最大值
int a = 10;
int b= 20;
int c= 30;
if(a>b){
if(a>c){
System.out.println(a+”是最大值”);
}else{
System.out.println(c+”是最大值’);
}
}else{ //b>=a
if(b>c){
System.out.println(b+”是最大值”);
}else{
System.out.println(c+”是最大值’);
}
}
03.19 Java语言基础(选择结构switch语句的格式及其解释)
A:switch语句的格式:
int x = 10;
switch(表达式){ //基本数据类型可以接收byte ,short, char, int
case 值1: //引用数据类型可以接收枚举(jdk1.5) String字符串(jdk1.7)
语句体1;
break;
case 值2:
语句体2;
break;
default:
语句体 n+1;
break;
}
B:switch格式语句的解释:
C:面试题:
byte可以作为switch的表达式吗? 能
long可以作为switch的表达式吗? 不能
String可以作为switch的表达式吗? 可以 jdk1.7就可以了
例:String name =”张三”;
String gender =”男士”;
switch(gender){
case ”男士”:
System.out.println(name+”是一位”+gender);
break;
default:
System.out.println(name+”是一位女士”);
break;
}
D:执行流程:
先计算表达式的值
然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句
03.20 Java语言基础(选择结构switch语句的练习)
案例:给定一个值,输出对应的星期几
int week = 5;
Switch(week){
case 1:
System.out.println(“星期一”);
break;
case 2:
System.out.println(“星期二”);
break;
case 3:
System.out.println(“星期三”);
break;
case 4:
System.out.println(“星期四”);
break;
case 5:
System.out.println(“星期五”);
break;
case 6:
System.out.println(“星期六”);
break;
case 7:
System.out.println(“星期日”);
break;
default:
System.out.println(“对不起没有对应的日期”);
break;
}
03.21 Java语言基础(选择结构switch语句的注意事项)
1.case 后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
2. default可以省略,但不建议使用,因为它的作用是对不正确的情况给出提示
特殊情况:case就可以把值固定 如:A ,B ,C , D
- break可以省略吗?
不建议省略,因为会出现case穿透现象
- default:可以放在任意位置 ,但建议放在最后
5. switch语句的结束条件:
a.遇到break就结束了
b.执行到switch的右大括号就结束了
03.22 javg语言基础(选择结构switch语句练习){
A:看程序写结构:
int x = 2;
int y = 3;
switch(x){
default:
y++;
break;
case 3 :
y++;
case 4:
y++;
}
System.out.println(“y=”+y)
B: 看程序写结构:
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3 :
y++;
case 4:
y++;
}
System.out.println(“y=”+y)
03.23 java语言基础(选择结构if语句和switch语句的区别)
总结:switch语句和if语句的各自使用场景
switch判断固定值的时候用
if判断区间的时候用
案例:分别用switch语句和if语句实现下列要求:
键盘录入月份,输出对应的季节
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12,1,2 冬季
1.用switch语句实现:
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入月份数字:);
int month = sc.nextInt();
Switch(week){
case 3:
case 4:
case 5:
System.out.println(month+“月是春季”);
break;
case 6:
case 7:
case 8:
System.out.println(month+“月是夏季”);
break;
case 9:
case 10:
Case11:
System.out.println(month+“月是秋季”);
break;
case 12:
case 1:
case 2:
System.out.println(month+“月是冬季”);
break;
}
2.用if语句实现:
Scanner sc = new Scanner (System.in); //创建键盘录入对象
System.out.println(“请输入月份数字:);
int month = sc.nextInt();
if (month <= 3 && month <= 5) { System.out.println(month+“月是春季”);
} else if (month >= 6 && month <= 8) { System.out.println(month+“月是夏季”);
} else if (month >= 9 && month <= 11) { System.out.println(month+“月是秋季”);
} else if((month >= 0 && month <= 2 ) || month==12) { System.out.println(month+“月是冬季”);
}