逻辑运算符、位运算符、三元运算符、判断语句(if,switch)

逻辑运算符

  • 逻辑与 &:由false则false
  • 逻辑或 |:有true则true
  • 逻辑异或 ^:相同为false,不同为true
  • 逻辑非 !:非false则true,非true则false

&&和&的区别:

  1. 最终结果一样
  2. &&具有短路效果,左边是false,右边不执行
  3. &是无论左边false还是true,右边都会执行

位运算符

  • 位与 & :有0则1
  • 位或 | :有1则1
  • 位异或 ^ :相同则0,不同则1;特点,一个数据对另一个数据位异或两次,该数本身不变。
  • * :按位取反

实现两个整数变量的交换

方法一:创建第三方变量

1 int x=10;
2 int y=5;
3 
4 int temp;
5 temp=x;
6 x=y;
7 y=temp;
8 
9 System.out.println("x="+x+",y="+y);

方法二:有弊端,有可能超出int的取值范围

1 x=x+y;    //10+5=15
2 y=x-y;     //15-5=10
3 x=x-y;     //15-10=5

方法三:通过位异或 ^

1 x=x^y;      //10^5
2 y=x^y;      //10^5^5    y=10
3 x=x^y;      //10^5^10   x=5

位移运算符

<<:左移  左边最高位丢弃,右边补齐0

  • 向左移动几位,就是乘以2的几次幂
1 System.out.println(12<<1);      //24
2 System.out.println(12<<2);      //48

>>:右移  最高位是0,左边补齐0;最高位是1,左边补齐1

  • 向右移动几次,就是除以2的几次幂(取整)
1 System.out.println(12>>1);      //6
2 System.out.println(12>>2);      //3

>>>:无符号右移  无论最高位是0还是1,左边补齐0

三元运算符

  • 格式:(关系表达式)?表达式1:表达式2;
  • 若表达式正确,则取表达式1,若错误,则取表达式2
 1 //例子
 2 //比较两个整数是否相同
 3 int x=10;
 4 int y=5;
 5 //boolean b = (x==y) ? true:false;
 6 boolean b = (x==y) ;
 7 System.out.println("b="+b);
 8 
 9 //获取三个整数中的最大值
10 int a=10;
11 int b=20;
12 int c=30;
13 //先比较任意两个数的值,找出这两个数中的最大值
14 int temp = (a>b) ? a:b;
15 //用前两个数的最大值与第三个数比较,获取最大值
16 int max = (temp>c) ? temp:c;
17 System.out.println("max="+max);

键盘录入的基本格式

(1)导包:import java.util.Scanner;在class上面

(2)创建键盘录入对象:Scanner sc = new Scanner(System.in);

(3)通过对象获取数据:int x = sc.nextInt();

 1 //例子
 2 import java.util.Scanner;
 3 class text{
 4        public static void main(String[] args){
 5              Scanner sc = new Scanner(System.in);//通过键盘录入
 6              System.out.println("请输入一个整数:");
 7              int x = sc.nextInt();
 8              System.out.println(x);
 9     }
10 }    
选择结构if语句

if 语句格式一:

1 if(比较表达式){
2     语句体;
3   }

执行流程:

  • 先计算比较表达式的值,看其返回值是true还是false。
  • 如果是true,就执行语句体。
  • 如果是false,就不执行语句体。
1     int age = 19;
2     if(age>=18){
3          System.out.println("可以浏览");
4     }
5           System.out.println("不可以");
6 }

注意事项:

(1)比较表达式无论简单还是复杂,结果必须是boolean类型;

(2)if语句控制的语句体如果是一条语句,大括号可以省略;

if语句格式二:

1 if(比较表达式){
2         语句体1;
3 }else{
4          语句体2;
5 }            

执行流程:

  • 首先计算比较表达式的值,看其返回值是true还是false;
  • 如果是true,就执行语句体1 ;
  • 如果是false,就执行语句体2;
//例子
//1、获取两个数中较大的值
int x = 1int y = 2;
if(x>y){
       System.out.println(x);
}else{
        System.out.println(y);
}
//2、判断一个数是奇数还是偶数,并输出是奇数还是偶数
int num = 10;
if(num%2==0){
       System.out.println(num+"是一个偶数");
}else{
        System.out.println(num+"是一个奇数");
}

if语句格式三:

 1 if(比较表达式1){
 2        语句体1;
 3 }else if(比较表达式二){
 4         语句体2;
 5 }else if(比较表达式三){
 6          语句体3;
 7 }
 8 //………………
 9 else{
10           语句体n+111 }

练习:

 1 //例子
 2 //1、键盘录入一个成绩,判断并输出成绩的等级
 3 /*
 4    90-100:优
 5    80-89: 良
 6    70-79: 中
 7    60-69: 及
 8    0-59:  差  
 9 */
10 Scanner sc = new Scanenr(System.in);
11 System.out.println("请输入学生成绩");
12 int x = sc.nextInt();
13 if(x>=90 && x<=100){
14        System.out.println("优");
15 }else if(x>=80 && x<=89){
16         System.out.println("良");
17 }else if(x>=70 && x<=79){
18         System.out.println("中");
19 }else if(x>=60 && x<=69){
20         System.out.println("及");
21 }else if(x>=0 && x<=59){
22         System.out.println("差");
23 }else{
24         System.out.println("成绩录入错误");
25 }

if语句的嵌套使用:

 1 //例子
 2 //获取三个数的最大值
 3 int a = 10;
 4 int b = 20;
 5 int c = 30;
 6 if(a>b){
 7      if(a>c){
 8         System.out.println(a+"是最大值");
 9      }else{
10          System.out.println(c+"是最大值");
11       }           
12 }else{    //b>=a
13       if(b>c){
14           System.out.println(b+"是最大值");
15 }else{
16            System.out.println(c+"是最大值");
17         }      
18 }    

switch语句:

int x=10;
switch(表达式){
        case 值1:
           语句体1;
            break;
        case 值2:
           语句体1;
            break;
           //........
          default:
            语句体n+1break;
}
 1 //例子
 2 //给定一个值,输出对应星期几
 3 int week = 5;
 4 switch (week) {
 5     case 1:
 6           System.out.println("星期一");
 7            break 8     case 2:
 9           System.out.println("星期二");
10            break11     case 3:
12           System.out.println("星期三");
13            break14     case 4:
15           System.out.println("星期四");
16            break17     case 5:
18           System.out.println("星期五");
19            break20     case 6:
21           System.out.println("星期六");
22            break23     case 7:
24           System.out.println("星期日");
25            break26      default:
27            System.out.println("没有对应的星期");
28             break;
29 }

猜你喜欢

转载自www.cnblogs.com/lc1997/p/10659355.html