黑马程序员_JAVA之路2——标识符、进制、变量、运算符、if和switch语句

来源:互联网 发布:汽车软件哪个好 编辑:程序博客网 时间:2024/05/16 06:35
------- android培训、java培训、期待与您交流! ----------


1  Java语言基础组成:关键字、标识符、注释、常量变量、运算符、语句、函数、数组
    a  标识符:在程序中自定义的一些名称。
        组成:由26个字母大小写,数字0-9,_和$组成。
        规则:数字不可以开头,不可以使用关键字,严格区分大小写。
        注意:main不是关键字,但可以被JVM所识别的特殊字符。
    b  java中的名称规范:
        包名:多单词组成时所有字母都小写。
        类名接口名:多单词组成时,所有单词的首字母大写。
        变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
        常量名:所有字母都大写,多单词时每个单词用下划线连接。

2  常量分类
        整数常量:所有整数
                二进制:0和1,满2进1
                十进制:0-9,满10进1
                八进制:0-7,满8进1,用0开头
                十六进制:0-9,A-F,满16进1,用0x开头表示
        小数常量:所有小数
        布尔型常量:只有两个值true和false
        字符常量:将一个数字字母或者符号用单引号‘ ’标识
        字符串常量:将一个或者多个字符用双引号“ "标识
        null常量:只有一个数值就是null

3  进制
        特点:进制越大,表现形式越短。
        进制转换:
                十进制--二进制:对十进制数进行除2运算,从右向左依次写余数(余数0也写)
                二进制--十进制:二进制乘以2的过程,从右向左依次乘以2的次幂(0次幂、1次幂、二次幂等),结果相加。(110=0*2(0)+1*2(1)+1*2(2))
0      0      1      1      0      1      0      1=32+16+4+1
128  64    32    16    8      4      2      1
        另外:八个二进制构成一个字节,一个字节最大能表示255
                二进制--十六进制:四个进制位就是一个十六进制位
                        十进制   :90
                        二进制   :0101 1010
                        十六进制:5       A             =0x5A
                二进制--八进制:三个进制位就是一个八进制位
                         十进制   :90
                         二进制   :01 011 010
                         八进制   :1   3      2          =0132
                十进制--十六进制:
                        方法一:十进制转为二进制再转为十六进制
                        方法二:十进制数除以16的余数从右向左依次写
                十进制--八进制:
                        方法一:十进制转为二进制再转为八进制
                        方法二:十进制数除以8的余数从右向左依次写
                十六进制--十进制:十六进制数从个位、十位、百位依次乘以16的0、    1、2次幂的结果相加。
                八进制--十进制:八进制数从个位、十位、百位依次乘以8的0、1、2次幂的结果相加。

4  负数的二进制表现形式:正数的二进制取反加1
        6=110   整数占用4个字节,即32位二进制
        6=00000000 00000000 00000000 00000110(只不过110前面的0省去不写)
 取反    11111111 11111111 11111111 11111001
 加1   +00000000 00000000 00000000 00000001
  -6   = 11111111 11111111 11111111 11111010
规律:负数的二进制最高位是1    正数的二进制最高位是0

5  变量,就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。通过明确数据类型、变量名和数据来完成。java语言是强类型语言,对于每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
        变量定义格式: 数据类型   变量名 = 变量值       
        注意:控制变量值要在数据类型范围之内。
        例如:int x=4;
                    byte y=8;
                    short s=8777;
                    long l=234234;
                    float f=2.3f;
                    double d=3.369;
                    char ch='3';
                    char ch1=' ';
                    boolean b=true;
        基本数据类型
                数值型
                        整数类型:byte(8个二进制  )   short(16个二进制)   int(32个二进制)   long
                        浮点类型:float (单精度,四个八位二进制) double(双精度,八个八位二进制,精度更高)
                字符型char
                布尔型boolean
        引用数据类型
                类class
                接口interface
                数组[]
        整数默认:int   小说默认:double
6   强制类型转换
        表达式数据类型自动提升
            所有的byte  short char的值都将被提升为int型
            如果一个操作数是long型,计算结果就是long型
            如果一个操作时是float型,计算结果就是float型
            如果一个操作数是double型,计算结果就是double型
        注意:byte b=3;
                    b=b+2;       //有问题,因为b是byte类型,整数2默认是int类型,b+2是int类型。正确方式:b=(byte)(b+2);//强制转换数据类型

                    System.out.println('a');//结果——a,打印字符a
                     System.out.println('a'+1);//结果——98,表达式中,a提升数据类型为int,对应编码表里数值97,表达式结果为98,所以打印98
                     System.out.println((char)('a'+1));//结果——b,表达式结果98强制转换为char类型,对应编码表b,因此打印b。

7  运算符
        取模运算符%,也就是两数相除后的余数。
               1%5=1    7%6=1  5%5=0
                规律:左边小于右边值为左边,左边等于右边值为0,若有负数,则只看左边,左边负数则负数,左边正数则正数。
        除号/     int x=6789;
                    x=x/1000*1000;
                    System.out.println(x);//x=6000
        + 符号有三个意思:加号,数字相加;证号,表示正数;字符串连接符,将两个字符串相连接。(字符串数据和任何数据使用都是相连接,最终都会变成字符串。例如:System.out.println("5+5="+5+5);
                    运算结果为:5+5=55
    )

8  转义字符:通过\来转变后面字母或符号的含义。
            System.out.println("hello1");//ln表示打印后换行。
            System.out.println("hello2");
            打印后结果为:hello1
                                     hello2
            System.out.print("hello1");
            System.out.print("hello2");
            打印后结果为:hello1hello2
    常用转义字符
            \n:换行。linux中换行用n表示,windows中可以用\n或\r表示
            \b:退格。相当于backspace
            \r:按下回车键。
            \t:制表符,相当于tab键。
    需要注意:System.out.println("\"hello\"");//结果"hello",带双引号。
                      System.out.println("\\hello\\");//结果\hello\,带反斜杠。    
                        char ch1=‘\n’;//正确
                        char ch2=’\t‘;//正确
                        char ch3=‘你’;//正确,汉子两个字节,char  两个字节

9  逻辑运算符,用于连接boolean类型的表达式。
        & 与,两边都为真时结果才为真。(两边都运算)
        ^  异或,只有一边为真一边为假结果才为真
         !   非,TRUE为FALSE     FALSE为TRUE
         |   或,只要有一边为真,结果就为真
        &&短路,左边为假时,右边不运算。其他与&一样。
        ||短路,左边为真时,右边不运算。

10  位运算符,对二进制的运算,先转为二进制,再运算,空出的位用离空位最近的数字来补。
        <<左移,3<<2   =  12   (0011——1100),越往左移数越大
                规律:3<<n位,也就是3*2的n次幂
        >>右移,6>>2   =   1     (0110——0001),越往右移数越小
                规律:6>>n位,也就是6除以2的n次幂,取整数舍弃小数
        >>>无符号右移,无论正负,右移后空出的位都用0来补
        & 与运算,6&3=2     两边转为二进制再进行运算
                        110
                    & 011
                       ——--
                        010
        |   或运算,
        ^  异或运算,一个数异或一个数两次,结果还是那个数
        ~  反码,就是取反。~6(110)=-7

        练习:1、2*8=?  2<<3即可,用位移运算费非常高效。
                  2、不用第三方变量交换两个变量mn的值
                     一:   n=m+n;m=n-m;n=n-m;
                     二:   n=n^m; m=n^m;n=n^m;
                    
11  三元运算符,(条件表达式)表达式1表达式2;
            int x=2,y;
            y=(x>1)?100:200;
            
12  if语句
        方式一:if(条件表达式)
                        {
                                执行语句
                        }
            该种情况,{}可以不写,程序会自动执行离if最近的执行语句去执行。
        方式二:if(条件表达式)
                        {
                                执行语句
                        }
                        else
                        {
                                执行语句
                        }
            该种情况,{}可以不写。
            if else结构  简写形式:变量=(条件表达式)?表达式1:表达式2;
            三元运算符:
                    好处:可以简化if else代码
                    弊端:因为是一个运算符,所以运算完必须要有一个结果。
        方式三:if(条件表达式)
                        {
                                执行语句
                        }
                        else  if(条件表达式)
                        {
                                   执行语句
                        }
                        else if (条件表达式)
                        。。。。。。。。多重elseif

13  switch语句
            表达式值只接受byte short int char,case1234与default语句位置可以随意,但执行时从第一个case开始。若case值均不匹配,且default没有break语句,则switch不再进行判断,而直接往下执行一切可以执行的语句直到遇到break或大括号。
                    switch(条件表达式)
                    {
                    case 值1:
                    {
                            执行语句1
                            break;
                    }
                   case 值2:
                    {
                            执行语句2
                            break;
                    }
                   case 值3:
                    {
                            执行语句3
                            break;
                    }
                    default:
                    {
                            执行语句4
                            break;
                    }
            }
        注意:if 和switch语句很像,如果判断的具体数值不多,而且符合byte short int char这四种类型,虽然这两个语句都可以使用,但建议使用switch语句,因为效率稍高。其他情况如对区间判断,对boolean判断,一般用if。