黑马程序员技术交流社区

标题: (One丶Life学习笔记)第二章 java基础——(二) [打印本页]

作者: One丶Life    时间: 2015-8-28 00:04
标题: (One丶Life学习笔记)第二章 java基础——(二)
2.1.2 常量和变量    1. 常量:不能改变的数值
      分类:
    2. 变量
    (1)定义:在内存中开辟一块空间,来存储不确定的数据。
    (2)定义变量的格式:
        数据类型    变量名 = 初始值;
        int a = 3;

    (3)数据类型:
   
    2.1.3 类型转换
    分类:
    自动类型转换(隐式类型转换)和强制类型转换(显示类型转换)
    1. 自动类型转换:对于数值型低精度自动转换为高精度
        int a = 3;
        double b;
        b = a + 4;
        注:字符型会自动提升为int型。
    2. 强制类型转换

        int a;
        a = (int)3.14;
    2.1.4 转义字符
    通过\来改变后面的字母或符号的含义
    2.1.5 运算符
    1. 算术运算符
        包括:+、-、*、/(取商)、%(取余)、++(自加)、--(自减)
        5/2 = 2;
        5%2 = 1;
    2. 赋值运算符:
        包括:=、+=、-=、*=、/=、%=
        x+=6;——>x=x+6;
        short s=4;
        s = s + 4;//编译出错,两布运算,s + 4算完会提升为int类型。
        s+=4;//成功,一步运算,内部有一个自动转换。
    3. 比较运算符:
        包括:==(相等于)、!=(不等于)、<、>、<=、>=
        比较运算符的结果是boolean类型,不是true就是false。
    4. 逻辑运算符:
        包括:&(与)、|(或)、^(异或)、!(非)、&&(短路与)、||(短路或)
        (1)&(与):
            true & true = true;
            true & false = false;
            false & true = false;
            false & false = false;
            只要有一个为false,结果就是false;
            只有两个都是true,结果才是true。
         (2) |(或):
            true | true = true;
            true | false = true ;
            false | true = true ;
            false | false = false;
            只要有一个为true,结果就是true;
            只有两个都是false,结果才是false。
         (3)^(异或):
            true ^ true = false;
            true ^ false = true ;
            false ^ true = true ;
            false ^ false = false;
            两个都一样,结果是false;
            两个都不同,结果是true;

               (4) !(非):
            !true = false;
            !false = true;
               (5) &&(短路与):
             int a = 2;
             a > 3 && a < 6;
           因为a > 3为false,所以后面a < 6不再判断,结果一定为false。
           左边为false时,右边不运算。

         (6)||(短路或):
            原理和&&(短路与)一样;
            当左边为true时,右边不运算。

    5. 位运算符:
        包括:<<(左移)、>>(右移)、>>>(无符号右移)、 &(与)、|(或)、^(异或)、~(反码)
        (1)<<(左移):
            3<<2:
            先把3写成二进制0000-0000 0000-0000 0000-0000 0000-0011,然后左移2位

                           00-0000 0000-0000 0000-0000 0000-001100 = 12;

            左移相当于*2的位数次幂
            3<<2 ——> 3 * 4 = 12;

            3<<2 = 12;
        (2)>>(右移):
            6>>2=1;
                   0000-0000 0000-0000 0000-0000 0000-0110
             ——> 000000-0000 0000-0000 0000-0000 0000-01
            右移相当于/2的位数次幂
            6>>2 ——> 6 * 4 = 1;
        (3)>>>(无符号右移):
            >>缺少位由原有数据的最高位的值而定;
            如果最高位为0,右移后用0补齐空位;
            如果最高位是1,右移后用1补齐空位。
            >>>无论最高位是什么,都用0补空位。
        (4)&(与):
            6 & 3:
                110
               &011
               ----
                010 = 2;
            6 & 3 = 2;
            把0当作false,1当作true,进行&运算即可;
        (5)|(或):
            6 | 5:
                110
               |101
               ____
                111 = 7;
            6 | 5 = 7;
        (6)^(异或):
            6 ^ 5:
                110
               ^101
               ____
                011 = 3;
            6 ^ 5 = 3;
            一个数异或同一个数两次,结果还是原数。

        (7)~(反码):
            ~6:
                ~000...110
                ----------
                 111...001 = -7
            ~6 = -7;

    6. 三元运算符:
        格式:
        (条件表达式)?表达式1:表达式2;
        如果条件为true,结果是表达式1;
        如果条件为false,结果是表达式2;
        例:
        int x = 3, y = 4, z;
        z = (x > y)?x : y;
        z存储的是两个数的最大的一个






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2