A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张研老师 于 2015-11-29 23:32 编辑

赋值运算符:
        =,+=,-=,*=,/=,%=

        byte a = 4;
        a += 5;   // 相当于 a =(byte)(a + 5);  (左右相加,值给左边)
        掌握:
                byte b = 10;
                b++;  相当于  b+=1  相当于 b = (byte)(b+1);

关系运算符
        ==,!= ,> ,>= ,<,<=
        关系运算符连接起来的式子(关系表达式,条件表达式),结果肯定是boolean。
        
int a = 10;
int b = 20;

a > b
a+=10;
sop(a);                //20
  
逻辑运算符
        &:逻辑与(并且)        有false则整体为false
        |:逻辑或(或者)        有true则整体为true
        !:逻辑非                        以前真,现在假,以前假,现在真。(偶数个,本身值不变)
        ^:逻辑异或                        相同为false,不同为true。

        &&:短路与,有短路效应,前边出现false,后边不执行。
        ||:短路或,有短路效应,前边出现true,后边不执行。

        &&和&的区别:
                &&:短路与,有短路效应,前边出现false,后边不执行。
                &:逻辑与,无论前边是false还是true,后边都会执行。
                他们的运行结果是一样的。
        ||和|的区别:
               
        开发中常用: &&,||,!

位运算符
        操作的是二进制数据(0可以看做是false,1可以看做是true)。

        &:按位与        有0则0
        |:按位或        有1则1        
        ~:按位取反        以前是0,现在是1(包括符号位) 最终的结果相当于该数据 +1,然后求反(正负)。
        ^:按位异或        相同为0,不同为1.        
                            特点:一个数据(a),被同一个数据(b)位异或两次,值(a)不变。
                                实例:a^b^b                结果还是 a;

        <<:左移,往左移动,右边空缺,空缺位用0补齐。
        >>:右移,往右移动,左边空缺,
                空缺位怎么补?
                        最高位0,空缺位补0,最高位是1,空缺位补1.
        >>>:无符号右移。往右移动,左边空缺,
                空缺位怎么补?
                        不管最高位是1还是0,都用0补。
                总结: 向左(右)移动就是增大(减小)该数据的2的指定次幂。

        面试题:
                1、交换两个int类型的值。
                        思路:
                                第一种:采用第三方变量。(开发中)
                                第二种:可以采用+法运算。
                                第三种:采用位运算符。(面试的时候写)
                2、请用高效的方式算出: 2乘以8                2*12        2<<3+2<<2

三元(目)运算符
        格式:
                条件表达式 ? 表达式1 : 表达式2;
        执行流程:
                看条件表达式的结果是true还是false,
                        如果是true,执行表达式1,
                        如果是false,执行表达式2

        1、比较两个整数是否相同。
                int a = 10;
                int b = 20;
                boolean b1 = (a==b)?true:false;
        2、求三个整数中的最大值。
                int a = 10;
                int b = 20;
                int c = 30;
                int max = a>b? (a>c?a:c) : (b>c?b:c);

键盘录入:
        步骤:
                1、导包(写在类上)
                        import java.util.Scanner;
                2、创建键盘录入对象(写在main函数中的)。
                        Scanner sc = new Scanner(System.in);
                3、调用方法,获取用户输的内容。
                        int a = sc.nextInt();


流程控制语句:
        顺序结构:从上往下,从左往右依次逐行来执行。
                          sop(5+5+"hello"+5+5);
        选择结构:
                if语句:
                        格式1:
                                格式:
                                        if(条件表达式) {
                                                语句体;
                                        }
                                执行流程:
                                        A:先计算条件表达式的值,看是true还是false。
                                                如果是true,就执行语句体,
                                                如果是false,不执行语句体。
                                注意事项:
                                        A:条件表达式的结果只能是boolean类型。
                                        B:如果if控制的语句体是一句,那么大括号可以省略,如果是多句,不能省略。
                                           推荐,永远不要省略。
                                        C:一般来讲,左大括号和分号不能共存。
                        
                        格式2:
                                格式:
                                        if(条件表达式) {
                                                语句体1;
                                        } else {
                                                语句体2;
                                        }
                                执行流程:
                                        A:先计算条件表达式的值,看是true还是false。
                                                如果是true,就执行语句体1,
                                                如果是false,就执行语句体2。
                                思考:if的第二种格式和三元表达式有什么区别?
                                          能用三元运算符解决的问题,都可以用if来做,反之不成立。
                 格式3:
                        格式:
                                if(条件表达式1) {
                                        语句体1;
                                } else if(条件表达式2) {
                                        语句体2;
                                } else if(条件表达式3) {
                                        语句体3;
                                } else if(条件表达式4) {
                                        语句体4;
                                }
                                。。。
                                else {
                                        语句体5;
                                }
                        执行顺序:
                                A:先判断条件表达式1的结果,看结果是true还是false
                                        如果是true,就执行语句体1,之后if语句结束。
                                        如果是false,就继续判断条件表达式2,看结果是true还是false
                                                如果是true,就执行语句体2,之后if语句结束。
                                                如果是false,就继续判断条件表达式3,看结果是true还是false
                                                。。。。。。。
                                        所有的if都不满足,就走else中的语句体。

                                        键盘录入一个成绩,判断(判断标准见备注)并输出成绩的等级。
                                       90-100 优     
                                           80-89  良      
                                           70-79  中   
                                           60-69  及
                                           0-59   差
                                          第一版:普通版(if语句中有两个判断条件)
                                          第二版:增强版(if语句中只有一个判断条件)
                                          第三版:变态版(用switch语句改进)
                                                if(score>=0 && score<=100) {
                                                        switch
                                                } else {
                                                        不合法
                                                }
                                          第四版:究极版(用String来改进)
                if的嵌套:
                        


                switch-case语句:
                        格式:
                                switch(表达式) {
                                        case 值1:
                                                语句体1;
                                                break;
                                        case 值2:
                                                语句体2;
                                                break;
                                        .....
                                        default:
                                                语句体3;
                                                break;        
                                }
                        执行流程:
                                先计算表达式的值,然后从第一个case进行匹配,能匹配上就执行对应的语句体,
                                如果所有的case都匹配不上,就执行default中的内容。
                        注意:
                                表达式可以放什么?
                                        byte,short,char,int,JDK1.5以后支持枚举,JDK1.7以后支持字符串(String)。
                        练习题:给定一个值(整数),输出对应星期几
                        注意事项:
                                1、case后边只能是常量,不能是变量,多个case不能出现重复值。
                                2、default可以省略,但是他记录的是所有非正常情况,一般不省略。
                                3、最后一个break可以省略,对程序的结果没有影响,
                                   其他break如果省略的话,可能发生case穿透的情况。
                                4、default可以不放在最后,可以放在任意位置,但是一般放在最后。
                                5、switch语句什么时候结束?
                                        A:遇到break。
                                        B:执行到switch语句的右大括号。

                if语句和switch语句有什么区别?
                        if语句主要用于 做范围 的判断。
                        switch语句主要用于 做固定值 的判断。
                        能用switch做的都可以用if来做,反之不行。

                        

        循环结构:
                for循环:
                while循环:
                do-while循环:


中午作业:
        1、交换两个int类型的变量值。(三个思路都练习下)
        2、用三元表达式实现:
                A:键盘录入两个数据,比较两个整数是否相同。
                B:键盘录入三个数据,求三个整数中的最大值。

        练习题:
                * 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);

评分

参与人数 1技术分 +5 黑马币 +5 收起 理由
张研老师 + 5 + 5 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马