黑马程序员技术交流社区

标题: Java语法小结 [打印本页]

作者: 高盖茨    时间: 2015-12-6 15:23
标题: Java语法小结
常量:
        概述:在程序的运行过程中,其值不发生改变的量。
        字面值常量:
                整数常量:
                小数常量:
                字符串常量: ""括起来的内容
                字符常量:        ''括起来的内容,只能是一个,不能为空 ''
                布尔常量:        true,false。
                空常量:        null
        自定义常量:(面向对象的时候,数组)


进制:
        概述:逢几进一,就是几进制。
        特点:进制越大,表现形式越短。
                1byte(字节) = 8bit(位)
                1kb        = 1024byte
        计算机对数据进行存储和运算的最小单位是:字节。
        计算机能够直接识别的进制是哪一种:二进制数据。

        二进制:以0b开头,0,1组成。 (JDK1.7以后支持了二进制的写法)
        八进制:以0开头,0-7组成。
        十进制: 0-9组成。
        十六进制:以0x开头,0-9,A-F组成。         

        进制的转换:
                其他进制到十进制的转换:
                123456
        权:543210               
                        公式: 把各位的  系数*基数的权次幂 相加即可。        (123456)
                        系数:就是每一位的数据。(1,2,3,4,5,6)
                        基数:几进制,基数就是几。
                        权:从右往左,以0开始编号,编号就是对应位置的权。

                十进制到其他进制的转换:
                        除基倒取余。
                        大白话理解:用数据除以基数,直到商为0,然后把余数倒着写。
                        调出计算机的DOS命令:calc

                        0b0110        转成十进制:6
                        20                转成二进制:10100       

           进制的快速转换法:(掌握)
                1        1        1        1        1        1        1        1                                01100100
                128        64        32        16        8        4        2        1       

                二进制到八进制: 从后往前,三位一组合(不够用0补齐),计算出十进制的值,然后拼接即可。
                        001 101 010
                二进制到十六进制:从后往前,四位一组合,计算出十进制的值,然后拼接即可。
                         0110 1010

有符号的数据的表示形式:
        -20的二进制?
        原码反码补码:都是二进制的数据。最高位是符号位(1代表负数,0代表正数),其他位是数值位。
        计算机运算(存储)数据都是以数据的 补码形式 来运算(存储)的。

        正数:
                原反补都是一样的。
        负数:
                原码:
                反码:在原码的基础上,符号位不变,其他数值位0变1,1变0.
                补码:在反码的基础上,末位+1.

                A:已知原码求补码: 0b10110100 (原码)

                                                         11001011 (反码)
                                                         11001100            


                B:已知补码求原码: 0b11101110                                                        
                                                   0b11101101(反码)
                                                   0b10010010(原码)
                                                       
       

中午作业:
        1、100转成二进制,八进制,十六进制。
                01100100        144  64
        2、完成如下需求:
                A:已知原码求补码: 0b10011101 (原码)
                                                         11100010 (反码)
                                                         11100011(补码)11100011(补码)
                                                  
                B:已知补码求原码: 0b10101110 (补码)
                                                         10101101(反码)
                                                         11010010(原码)


变量:
        概述:在程序的运行过程中,其值在 一定范围内 可以发生改变的量。
        格式:
                格式1:
                        数据类型 变量名 = 值;
                        byte b = 100;
                格式2:
                        数据类型 变量名;
                        变量名 = 值;
        数据类型:
                基本数据类型(四类八种)
                        整型:
                                byte        1个字节        -128-127
                                short        2个字节
                                int                4个字节
                                long        8个字节
                        浮点型:
                                float        4个字节
                                double        8个字节
                        布尔型:
                                boolean        值只有true和false        1个字节
                                                补充一句:但是理论上来讲,八分之一个字节就够了,因为它的值只有两个,
                                                          但是计算机最底层的存储单位是字节,所以这里把它当做一个字节来算。
                        字符型:
                                char        2个字节

                引用数据类型:自定义类,接口,数组,String


        数据类型注意事项:
                1、整型默认的是int类型,浮点型默认的是double类型。
                2、如果定义long类型的变量,在变量值后边加L或者(小L)。
                   如果定义float类型的变量,在变量值后边加F或者(小f)。

        使用变量的注意事项:
                1、作用域。
                        同一对大括号内,相同的变量名不能重复定义。
                2、局部变量使用前,必须先初始化(定义,赋值)。
                   局部变量使用前,必须先定义,在赋值,然后才能使用。               
                3、可以定义多个同类型的变量
                        int b,c,d,e,f;

        数据类型转换:
                默认转换规则:
                        取值范围小的数据类型 与 取值范围大的数据类型 进行运算,会先将小的数据类型提升为大的,再运算
                        byte,short,char --> int --> long --> float --> double          boolean类型不参与运算。
                        为什么long的范围比float的范围要小?
                                因为他们的底层存储结构不同。

                隐式类型转换:
                        把小的赋值给大的。
                        格式:和定义变量的格式是一致的。
                                double d = 10;
                强制类型转换:
                        把大的给小的。
                        格式: (转换后的数据类型)要转换的值或者变量名;
                                        int a = (int)10.0;

                                        double d = 20.3;
                                        int b = (int)d;

                        byte b = (byte)130;         //-126  
                        /*
                                第一步:求出130的二进制形式。(原码00000000 00000000 00000000 10000010)
                                第二步:求出130的反码。(反码00000000 00000000 00000000 10000010)
                                第三部:求出130的补码。(补码00000000 00000000 00000000 10000010)
                                第四步:对130的补码进行截取,保留最后一个字节,得到一个新的补码(10000010)。
                                第五步:根据得到的新的补码,计算出反码。(10000001)
                                第六步:根据第五步得到的反码,计算出原码(11111110),然后转成十进制。
                        */
                System.out.println(b);

                byte b1 = 10;
                byte b2 = 20;
                byte b3 = b1 + b2;        //如果是变量相加,会先提升数据类型,然后在运算。
                byte b4 = 10 + 118; //如果是常量相加,会直接运算,然后看得到的结果是否在左边的数据类型所能描述的范围内,如果在,就不报错,如果不在就报错,因为Java有常量优化机制。

                字符和字符串参与运算:
                        字符串参与运算,会得到一个新的字符串。
                                实例: sop(5 + 5 + "hello" + 5 + 5);                //"10hello55"
                       
                        字符:0-65535(\u0000 - \uFFFF)
                                ASCII码表:
                                        'a' 97
                                        'A'        65
                                        '0'        48
                        字符能存中文吗?
                                可以,因为Java用的Unicode编码,Unicode编码规定占两个字节,一个中文也是两个字节,所以可以。
                       
运算符:
        算术运算符
                +,-,*,/,%,++,--
                注意事项:
                        1、+有三个作用:表示加法,表示正数,可用作字符串的连接符
                        2、整数和整数相除,得到的结果肯定是整数,如果想得到小数,把其中任意一个数据转成浮点型即可。
                                10/3 = 3;   10.0/3   10/3.0  10.0/3.0
                        3、%取余操作得到的结果只跟左边的数据的符号有关。
                                3%5   5%5  10%3

                ++,--的用法:(此处以++为例)
                        单独使用:
                                前加和后加没有区别,都是自身加1.
                        参与运算:
                                前加:先自身+1,然后用得到的新值再参与运算。
                                后加:先以原值来运算,完了以后再自身+1.
                        注意:++,--隐含了 强制类型转换。

                        练习题:
                                1、
                                        int a = 10;
                                        int b = 10;
                                        int c = 10;
                                        a = b++;        //a=10,b=11,c=10
                                        c = --a;        //a=9,b=11,c=9
                                        b = ++a;        //a=10,b=10,c=9
                                        a = c--;        //a=9,b=10,c=8

                                2、
                                        int x = 4;
                                        int y = (x++) + (++x) + (x*10)
                                        //  y =   4   +   6   + (6*10)
                           //x的值的变化:5       6       6

                                3、
                                        byte b = 10;
                                        b++;
                                        b = b + 1;

                                        int x = 4;
                                        int a = 3;
                                        int b = 5;
                                        int y = x++ + ++x +  --a + a*b++ +..
                                        问y=?


        赋值运算符
        比较(关系)运算符

        逻辑运算符
        位运算符
        三元(目)运算符

       


作者: mm2015    时间: 2015-12-6 16:35
总结不错




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