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

© Animal 中级黑马   /  2015-6-1 22:20  /  253 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

逻辑运算符:
        概述:就是用于连接结果是boolean类型的表达式的。
        表达式:由运算符连接起来的式子。(由变量或者常量组成)
       
        &:逻辑与。并且。有假则假。
        |:逻辑或。或者。有真则真。
        !:逻辑非。以前为假,现在为真,以前为真,现在为假。正对同一个表达式来操作的。
        ^:逻辑异或。        相同为假,不同为真。

        &&:短路与 前边如果出现了false,后边将不再执行。
        ||:短路或 前边如果出现了true,后边将不再执行。

        &&跟&的区别:
                &&是短路与,&是逻辑与。他们的特点都是有假则假。但是,
                短路与的时候,前边的表达式如果出现了false,后边将不再执行。
                逻辑与的时候,所有的表达式都会执行。
        开发常用:
                &&,||,!
位运算符:
        概述:就是用来计算二进制数据的(可以把0看做false,1看做是true)。
        &:按位与         有0则0。
        |: 按位或         有1则1。
        ^: 按位异或  相同为0,不同为1.
        ~: 按位取反  针对所有的二进制位,1变0,0变1。
                                 结果其实相当于该值+1,然后取反。
                00001010  10  按位取反:-11
                1、求它的原码00001010,
                2、求它的反码00001010,
                3、求他的补码00001010。
                4、针对第3步的补码,进行取反操作。11110101
                5、把第四步得到的结果作为补码再来运算,求出它的反码:11110100。
                6、求第5步的原码。
                        11110100
                        10001011
       
        <<:左移。最高位舍弃,右边的空缺位用0补齐。
        >>:右移。看最高位是0,还是1,如果是0,空缺位就用0补齐,如果是1,空缺位就用1补齐。
        >>>:无符号右移。 不管最高位是0还是1,空缺位都用0补齐。
        总结:
                向左移动(增大)或者向右移动(减小),就是增大或者减小2的指定次幂。

        思考:
                1、请用高效的形式写出:2*8  2<<3
                2、交换两个变量。
                        int a = 10;
                        int b = 20;
                第一种做法:用第三方变量来做。(开发用)
                        int temp = a;
                        a = b;
                        b = temp;
                第二种做法:用位异或来做。(面试用)
                        特点:一个数据对同一个数据位异或两次,值不变。
                        a = a^b;   //a=a^b  b的值不发生变化
                        b = a^b;   //b= a^b^b  b=a,a=a^b
                        a = a^b;  // a= a^b^a  a=b;
                第三种做法:
                        仅适用于基本类型(boolean类型除外)。
                        用算术运算符。
                        a = a + b; //a=30,b=20
                        b = a - b; //a=30,b=10,
                        a = a - b; //a=20,b=10



条件运算符:
        格式:
                条件表达式?表达式1:表达式2;
        注意:
                条件表达式的结果必须为boolean类型。
        执行顺序:
                如果条件表达式的结果是true,就执行表达式1,
                如果天健表示的结果是false,就执行表达式2。
                int y = 10;
                int x = y>5?'a':20;
        思考:
                表达式1和表达式2的数据类型必须一样吗?
                不一定。只要包含隐式类型转换就可以。
                推荐:一般写同样的数据类型。

Java中的流程控制语句(结构)
        1、顺序结构:代码是从上往下,从左往右依次逐行来执行的。
        2、选择结构:根据给定的判断或者选择语句从而来决定执行顺序.
                A:判断语句
                        if
                B:选择语句
                        switch-case
        3、循环结构:就是重复的做某件事情。

if语句的第一种形式:
        if(条件表达式)
        {
                语句体;
        }
执行顺序:
        根据条件表达式的结果来决定是否执行语句体。
        如果结果为true,执行语句体,
注意事项:
        A:不管条件表达式简单还是复杂,结果只能是boolean类型。
        B:if后边的大括号{}可以省略,省略的话该if只能控制它后边的一行语句。
                如果想控制多行语句,必须写{},
                不管if的语句体是一行还是多行,都推荐写上{}。
        C:if的{}前最好不要加;,否则结果可能不是我们想要的。
               
变量的作用域:
        定义的变量,只能在它所属的那对{}内使用。


if的第二种格式:
        if(条件表达式)
        {
                语句体1;
        }
        else
        {
                语句体2;
        }

if的第三种格式:
        int score;
        if(条件表达式1)
        {
                语句体1;
        }
        else if(条件表达式2)
        {
                语句体2;
        ]
        。。。。这里可以写多个else if
        else
        {
                语句体3;
        }
        sop(score);
注意事项;
        1、else后边不能直接写条件表达式。
        2、最后一个else可以省略。
                推荐:一般都写上。
        3、if体系,只要其中一个if满足了,整个if体系不会再往下执行。
总结:
        在if体系的上边定义了一个变量,如果想在if体系的下边使用这个变量,怎么办?
                1、直接在if体系的上边给这个变量赋值。
                2、在if体系的每一个大括号{}内,都对该变量进行赋值。

总结;
        if可以用来处理几个固定值的问题,也可以用来处理范围的问题。
        一般,if都用来处理范围的问题。

if的嵌套:
        概述:if语句的语句体本身又是一个if语句。
        if语句的第二种形式和条件运算符的关系?
                没有关系,if是语句,条件运算符是运算符。
                在某些情况下,条件运算符可以用来替代if语句,更简洁。
选择语句:
        switch-case:
                格式:
                        switch(表达式)
                        {
                                case 取值1:
                                        执行语句1;
                                        break;
                                case 取值2:
                                        执行语句2;
                                        break;
                                case 取值3:执行语句3;break;
                                .....此处可以写多个case
                                default:
                                        执行语句4;
                                        break;
                        }
                简答的描述:
                        表达式:byte,short,char,int
                                JDK5.0以后,表达式支持枚举类型。(就业班讲)
                                JDK7.0以后,表达式支持字符串。
                        break: 程序执行到break,就会结束switch-case语句。
                执行顺序:
                        从上往下,依次逐行来执行。
                        会拿表达式的值来和第一个case来匹配,匹配不上,接着匹配其他的case,
                        如果都匹配不上,执行default中的语句。

使用switch-case的时候的注意事项;
        1、default可以省略吗?
                可以。
                但是default相当于if-else中的else,可以控制所有非正常的情况,
                一般不省略,当我们明确知道可以省略的时候,可以不写。
        2、break可以省略吗?
                A:放在最后的default的break可以省略,对整个语句的结果没有影响。
                B:放在case后边的break也可以省略,语法不报错,但是,结果可能不是我们想要的。
        3、default必须放最后吗?
                不一定,一般放最后。
        4、switch语句什么时候结束?
                当遇到break或者执行到语句的末尾的时候。
                补充:
                        当表达式匹配上对应的case或者default后,但是他们后边没有break,程序会继续向下执行
                        可以执行的语句,知道遇到break或者switch语句的末尾。






考试成绩分等级。
int         score = 10;
                90-100        A等。
                80-89        B等。
                70-79        C等。
                60-69        D等。
                60以下        E等。
        请根据给定成绩,输出对应的等级。

Scanner的使用步骤:
        1、导包。
                import java.util.Scanner;  这行代码写到类的上边。
        2、创建对象。
                Scanner sc = new Scanner(System.in);  //这行代码写main函数里边
        3、调用方法。
                int score = sc.nextInt(); //这行代码写main函数里边


一年有12个月,每个月分别对应于不同的季节。
        请根据给定的月份,输出对应的季节。
        春:3,4,5
        夏:6,7,8
        秋:9,10,11
        冬:1,2,12

//导包
import java.util.Scanner;  
class IfTest
{
        public static void main(String[] args)
        {       
                //创建一个Scanner类的对象,对象名为:sc
                Scanner sc = new Scanner(System.in);
                //提示用户进行键盘录入数据
                System.out.println("请输入一个月份");
                //通过sc对象,调用它的nextInt()方法,接收用户输入的数字
                String month = sc.nextInt();
        }
}

0 个回复

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