java--java语言基础(3)--黑马程序员

java语言基础(3)

主要内容:《运算符、键盘录入、顺序结构、选择结构if、三元运算符、选择结构switch、》

1 位运算符的基本用法1

位运算符:是对整数的二进制直接进行操作的

1.<< : 左移:左侧高位丢弃,右侧补0.左移一位,相当于原数 * 2 ;

                                      实际移动的位数 = 要移动的位数 % 32;

2.>> : 带符号右移:右移一位,右侧的最低位丢弃,左侧高位补原符号位;每右移一位,相当于原数 / 2;

3.>>>: 无符号右移:右移一位,右侧的最低位丢弃,左侧补0.

        

 

4.& : 两位都为1,结果为1,否则为0;

                                     0000 1010

                            &   0000 1100

                            ---------------

                                     0000 1000

         5.| : 有一位为1,结果为1,否则为0;

                                     0000 1010

                            |         0000 1100

                            ---------------

                                     0000 1110

        

 

 

 

6.^ : 两位相同结果0,不同结果为1:

                                     0000 1010

                            ^       0000 1100

                            --------------------

                                     0000 0110

         7.~ : 按位取反:0变1,1变0

                                     0000 1010

                            ~

                            --------------------

                                     1111 0101-->补码

                            -           1

                            ----------------

              1111 0100

                                          取反

                            ----------------

                                        1000 1011

2 位异或运算符的特点及面试题

         ^的特点

  实现两个整数变量的交换

 

         10     二进制       0000 1010

         20     二进制       0001 0100

                              ^

         --------------------------

                                  0001 1110

         10     二进制       0000 1010

                              ^

         --------------------------

                                  0001 0100   

 1 class Demo2 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int a = 10;
 6         int b = 20;
 7         int temp = a;
 8         a = b;
 9         b = temp;
10         System.out.println("a = " + a + " b = " + b);
11         int x = 10;
12         int y = 20;
13         x = x ^ y;
14         y = x ^ y;
15         x = x ^ y;
16         System.out.println("x = " + x + " y = " + y);
17     }
18 }
/*
    请用最有效率的方式写出计算2乘以8的结果
*/
class Demo 
{
    public static void main(String[] args) 
    {
        System.out.println(8 << 1);
    }

3 三元运算符的基本用法

三目运算符:

1.格式:

关系表达式  ?    表达式1 :表达式2;

2.先判断关系表达式:如果为true:执行表达式1

            否则:执行表达式2

         注意:

         1.三目运算符的整个结果,应该返回一个值;

         int a = 10;

         int b = 20;

    a > b ? System.out.println(a) : System.out.println(b);//错误的

  

 1 class Demo {
 2     public static void main(String[] args) {
 3         int a = 100;
 4         int b = 200;
 5         int c = ( a > b ? a : b);
 6     //    a > b ? System.out.println(a) : System.out.println(b);//错误
 7         System.out.println("c = " + c);
 8         //判断三个整数的最大值--嵌套的三目运算符
 9         int x = 100;
10         int y = 200;
11         int z = 30;
12         int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ;
13         System.out.println("max = " + max);
14     }
15 }

4 键盘录入的基本格式讲解

接收控制台数据:

三步:

1.定义类的前面添加:

import java.util.Scanner;

2.在main()方法中:

Scanner sc = new Scanner(System.in);

3.接收控制台输入:

1).int值: int n = sc.nextInt();

2).String值:String s = sc.next();

import java.util.Scanner;

class Demo

{

         public static void main(String[] args)

         {

                   Scanner sc = new Scanner(System.in);

                   //引导用户

                   System.out.println("请输入您的姓名:");

                   String name = sc.next();//程序在此处阻塞,等待用户输入;

 

                   System.out.println("请输入您的年龄:");

                   int age = sc.nextInt();

                   System.out.println("您好,您叫:" + name + " 您的年龄是:" + age);

         }

}

5 顺序结构语句

程序从第一行代码开始,顺序的执行到最后一行结束:

6 选择结构if语句格式1及其使用

if语句的结构1:

语法:

if(逻辑表达式/关系表达式){

//如果逻辑表达式为true,将执行这里的代码

         }

需求:

                   女孩子要找男朋友,要求年龄在25--28岁之间;

                   如果达到要求,女孩子说:可以,找个时间见见面;

 1 class Demo
 2 
 3 {
 4 
 5          public static void main(String[] args)
 6 
 7          {
 8 
 9                    int age = 22;
10 
11          //       System.out.println(age >= 25 && age <= 28);
12 
13                    if(age >= 25 && age <= 28){
14 
15                             System.out.println("可以,找个时间见见面");
16 
17                    }
18 
19                    System.out.println("程序结束!");
20 
21          }
22 
23 }
24 
25  

if语句的结构2:

语法:

         if(逻辑表达式){

         //如果为true,执行这里

         }else{

         //如果为false,执行这里

         }

         需求:

         女孩子找男朋友,要求年龄在25--28岁,

         如果可以,明天下午4点在星巴克见;

         否则,留个微信,你是好人,改天联系!

 1 class Demo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int age = 36;
 6         if(age >= 25 && age <= 28){
 7             System.out.println("行啊,明天下午4点在星巴克见;");
 8         }else{
 9             System.out.println("你是好人,留个微信,改天联系!");
10         }
11 
12         System.out.println("相亲结束!");
13     }
14 }

if语句的格式3:

         有些时候我们要进行多个判断,才能产生一个结果:

         例如:判断年龄是否符合要求:

                                     是:判断身高是否符合要求:

                                                        是:判断薪水是否符合要求:

女孩子要求男孩子:年龄在25-28之间,身高在1.75-1.85之间,月薪要在20000(税后)以上。

class Demo {
    public static void main(String[] args) {
        int age = 26;
        double height = 1.78;
        int salary = 23000;
        if(age >= 25 && age <= 28){
            if(height >= 1.75 && height <= 1.85){
                if(salary >= 20000){
                    System.out.println("好吧,明天下午4点保利影院见!");
                }else{
                    System.out.println("对不起,您的收入不够补贴家用!");
                }
            }else{
                System.out.println("对不起,您的身高不符合!");
            }
        }else{
            //也可以再嵌套if
            System.out.println("对不起,您的年龄不符合!");
        }
    }
}


关系表达式无论简单还是复杂,结果必须是boolean类型;

7 选择结构if语句注意事项

                   if(true){//OK的

                   }

                   if(0){//不可以

                   }

                   if(1){//不可以

                   }

         2.f语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

                   int age = 20;

                   if(age > 18)

                            System.out.println("OK,可以见面");

                   System.out.println("下午4点");

         3.一般来说:有左大括号就没有分号,有分号就没有左大括号

                   int age = 20;

                   if(age > 18);{//错误的

                            System.out.println("OK,可以见面");

                   }

                   if(age > 18){//正确

                            //......

                   }

8 选择结构if语句格式2及与三元运算符的区别

         if语句的格式2:

                   if(逻辑表达式){

                   }else{

                   }

         三目运算符:

                   逻辑表达式 ? 表达式1 : 表达式2;

 

         相同点:都是一个判断,两个选择;

 

         对于一些应用,两种格式可以达到一样的效果:例如:求两个数的最大值:

                   int a = 10;

                   int b = 20;

                   使用if语句

                   int max = 0;

                   if(a > b){

                            max = a;

                   }else{

                            max = b;

                   }

                   //使用三目运算符:

                   int max = a > b ? a : b;

                   System.out.println("max = " + max);

         对于一些类似于求两个数的最大值,或三个数的最大值,使用三目运算符的语法要简洁;

         但是,三目运算符可以做的事情少,它只能返回一个值。所以想做更多的事情,使用if语句比较方便;

9 选择结构switch语句的格式及其解释

         1.选择结构;

         2.基于判断,要进行选择:

         3.语法:

                 

  switch(表达式){

                            case 值1:

                                               //代码;

                                               break;

                            cast 值2:

                                               //代码;

                                               break;

                            case 值3:

                                               //代码;

                                               break;

                            ....

                            default:

                                               //代码;

                                               break;

                   }

 

         例子:

         有一个int变量,存储1-7的一个星期值。根据这个值,打印中文的星期表示;

         如果int变量等于1,打印:星期一

             int变量等于2,打印:星期二

class Demo 
{
    public static void main(String[] args) 
    {
        //使用if语句
        /*
        int n = 70;
        String str = "";
        if(n == 1){
            str = "星期一";
        }else if(n == 2){
            str = "星期二";
        }else if(n == 3){
            str = "星期三";
        }else if(n == 4){
            str = "星期四";
        }else if(n == 5){
            str = "星期五";
        }else if(n == 6){
            str = "星期六";
        }else if(n == 7){
            str = "星期日";
        }else{
            str = "非法的星期值!";
        }
        System.out.println(str);
        */
        //使用switch语句
        int n = 30;
        String str = "";
        switch(n){
            case 1:
                str = "星期一";
                break;
            case 2:
                str = "星期二";
                break;
            case 3:
                str = "星期三";
                break;
            case 4:
                str = "星期四";
                break;
            case 5:
                str = "星期五";
                break;
            case 6:
                str = "星期六";
                break;
            case 7:
                str = "星期日";
                break;
            default:
                str = "非法的星期值!";
                break;
        }
        System.out.println(str);

        //表达式:char
        char c = '*';
        switch(c){
            case '+':
                System.out.println("你选择了加法");
                break;
            case '-':
                System.out.println("你选择了减法");
                break;
            case '*':
                System.out.println("你选择了乘法");
                break;
            case '/':
                System.out.println("你选择了除法");
                break;
            default:
                System.out.println("非法的运算符");
                break;
        }

        //表达式:String
        str = "java";
        switch(str){
            case "java"://区分大小写的
                System.out.println("你选择了java");
                break;
            case "C++":
                System.out.println("你选择了C++");
                break;
            case "C#":
                System.out.println("你选择了C#");
                break;
            case "IOS":
                System.out.println("你选择了IOS");
                break;
            default:
                System.out.println("你选择的课程不正确!");
                break;
        }
    } 

}/*

10 switch语句的break和default:

1.break:表示结束switch语句。

                            它不是必须的,可以不写。

                 如果不写break,将会无条件的继续执行后续的case中的代码;直到遇到break或switch语句的末尾。

         2.default:表示如果没有匹配任何的case值,将会执行default。

                                     它类似于多重if..else if...语句的最后的else。不是必须的,可以不写;

                              default语句跟其他的case语句没有顺序关系。default语句可以在switch中的任何位置;

 1 class Demo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int n = 5;
 6         switch(n){
 7             case 1:
 8                 System.out.println("星期一");
 9             case 2:
10                 System.out.println("星期二");
11             case 3:
12                 System.out.println("星期三");
13             case 4:
14                 System.out.println("星期四");
15             case 5:
16                 System.out.println("星期五");
17             case 6:
18                 System.out.println("星期六");
19             
20             case 7:
21                 System.out.println("星期日");
22             default:
23                 System.out.println("非法的星期值");
24         }
25         System.out.println("**************打印月份***********");
26         int month = 50;
27         //用switch实现:
28         switch(month){
29             default:
30                 System.out.println("非法的月份值!");
31             case 1:
32             case 2:
33             case 12:
34                 System.out.println("冬季");
35                 break;
36             case 3:
37             case 4:
38             case 5:
39                 System.out.println("春季");
40                 break;
41             case 6:
42             case 7:
43             case 8:
44                 System.out.println("夏季");
45                 break;
46             case 9:
47             case 10:
48             case 11:
49                 System.out.println("秋季");
50                 break;
51             
52             
53         }
54     }
55 } 

11 选择结构switch语句的注意事项

         1.case后的值只能是"常量",不能是变量;

         2.case后的值不能重复;

         3.default可以省略吗?可以。不建议,根据实际情况。

         4.break可以省略吗?可以。根据实际情况。

         5.default的位置一定要在最后吗?不是的

           default和其他的case之间没有顺序关系;

           另外:多个case之间也没有顺序关系;

         6.switch语句的结束条件

                   1.某处遇到break时,结束;

                   2.当执行到switch语句的最后,将自动结束;

 1 class Demo 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int month = 1;
 6         int v1 = 2;
 7         switch(month){
 8             case 1:
 9                 System.out.println("aaa");
10                 if(v1 == 3){
11                     System.out.println("bbb");
12                 }
13                 break;
14             case 2:
15                 System.out.println("aaa222");
16                 break;
17         }
18     }
19 }
20  

12 选择结构if语句和switch语句的区别

在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?

if语句使用场景:

针对结果是boolean类型的判断

针对一个范围的判断

针对几个常量值的判断

switch语句使用场景:

针对几个常量值的判断

未完待续。。。。。。

posted on 2015-08-06 21:21  林木森  阅读(188)  评论(0编辑  收藏  举报

导航