基本语法

 关键字:特定含义的单词。组成关键字字母全部小写。goto和const作为保留关键字。

 

 

 

 

 

 

 

 

 

标识符:由英文和数字和$,_字符组成。不能数字开头,不可以是关键字。用于给包,类,接口,方法,变量,常量命名。

            建议写法:包:全部小写。单级:hello。多级:section.hello。

         类和接口:一个单词:每个单词首字母大写。多个单词:每个单词首字母大写。Name,TypeName

         方法和变量:一个单词:单词首字母小写。多个单词:第二个单词开始每个单词首字母大写。name,typeName

         常量:一个单词:全部大写。多个单词:每个字母大写并用下划线隔开。NAME,TYPE_NAME

 

 注释: 将自己的思想通过注释写出来,在通过代码表现

    单行注释:// 

    多行注释:/*   */

    文档注释:/**   */ (被javadoc解释生成一个说明书)

 

 常量:字面值常量:字符串常量("abc"),整数常量(1),小数常量(1.2),字符常量('a'),布尔常量(ture,false),空常量(NULL)。

          1. java对于整数常量有四种表达形式二进制(0b),八进制(0),十进制(默认数据),十六进制(0x)。

            常用转换:

                  其他进制转十进制:位权展开法:系数*基数^权次幂。十进制转其他进制:除基取余,直到商为零,余数反转。

                  (系数:就是每一个位上的数值。基数:x进制的基数就是x。权:对每一个位上的数据)

            快速转换:

                  十进制和二进制:BCD码:8421码时BCD的一种,将每一位二进制使用固定数值表示,将其相加就可以得到二进制对应的十进制数。 

                  二进制转十六进制:4位组合。

                  二进制转八进制:3位组合。

          2. 原码:最高位为符号位,其余为数值位。符号位为0表示正,符号位1表示负。

           反码:正数的反码与原码相同。负数的反码是对其原码逐位取反,符号位不变。

           补码: 正数的补码与原码相同。负数的补码是其反码加一。(计算机内部存储采用补码)

 

 变量:变量本质是内存中的一块区域,使用变量名访问该区域。 定义变量(为变量申请空间),初始化变量(给对应空间赋值),Java中必须初始化变量才可以使用。

 

数据类型:

 

      Java默认整数是int类型,定义long类型的变量要在字面常量后面加L。默认浮点数是double类型,定义一个float类型的变量要在字面常量后面加F。

                 long l_var = 123L;                                                                                     float f_var = 1.23F;

       boolean类型不能进行强制类型转换。

      Java没有无符号类型的数据,全部都是有符号类型的数据。

      字符串类型与其他类型做加法是+被重载为字符串连接符,字符相加是做数值加法。

              "hello" + 'a' + 1 --> "helloa1"

              'a' + 1 + "hello" --> "98hello"

      Java语言char类型占用两个字符,可以表示中文。Java语言采用Unicode编码。

      

 默认类型转换:byte,short,char( 整型提升) ----> int ----> long ----> float ----> double (float占用四个字节但是其表示数字范围大于long类型的变量)

        byte b1 = 0,b2 = 1,b3; b3 = b1 +  b2; // error。当byte,short,char类型的变量进行运算时,不相互转换,会单独提升到默认类型int再运算。

        b1 = 3 + 4;  // ok 预处理器先将常量计算出来,查看结果是否在byte范围内,在的话就不报错。

        b1 = 130; // 打印结果 -126。00000000 0000000 0000000 10000010(截断) --> 10000010(补码) -->100000001(反码) ---> 11111110(原码)。

        b1 = (byte)130; //打印结果-126 。   0  --> 1 --> 127 --> -128 --> -1 --> 0。范围是循环 。 

 

浮点数的存储:

      17.625在内存中的存储:
        首先要把17.625换算成二进制:10001.101 ( 整数部分,除以2,直到商为0,余数反转。小数部分,乘以2,直到乘位0,进位顺序取。)
        在将10001.101右移,直到小数点前只剩1位:1.0001101 * 2^4 因为右移动了四位
            底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
            指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
            符号部分是整数,所以是0
        存储格式是:01000001 10001101 00000000 00000000

      float存储规则:

        一个浮点数有2部分组成:底数m和指数e    

          底数部分: 使用二进制数来表示此浮点数的实际值。(实际是占用24bit的一个值,但是最高位始终为1)
          指数部分: 占用8bit的二进制数,可表示数值范围为0-255。(指数可正可负,此处算出的次方必须减去127才是真正的指数)

        float格式:
          SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
          S表示浮点数正负
          E指数加上127后的值得二进制数据
          M底数

 

运算符:

      算术运算符:+ - * / % ++ -- +

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

      关系运算符:==  != < > <= >=

      逻辑运算符:& | ^  ! && ||

      位运算符:<< >> >>> & |  ^ ~

      三目运算符:() ? : ;

      short s = 1; s = s + 1;  //  error  1是int类型字面常量  

      short s = 1; s += 1;    //   ok       +=包含了强制类型转换。等价于 s = (short)(s + 1);

      比较运算符,逻辑操作符表达式返回ture或则false。

      当 & 左操作符和右操作符为逻辑表达式时做的是逻辑运算。当左操作数和右操作数为数值时做的是位运算。

      ^ 异或.某一个数据被同一个数据异或两次的结果是其本身a ^ b ^ b = a. 交换两个变量的值: a = a ^ b; b = a ^ b; a = a ^ b;  

                                                 a = a + b; b =  a - b;  a = a - b;

                                               b = (a + b)  - (a =   b);

      << 空位补零,被移除的高位丢弃.

      >> 高位是0,右移后,高位补0  . 高位是1 ,右移后, 高位补1.

      >>> 最高位不论是0还是1,都以0补齐.

 

键盘数据录入:

      a. 导包。格式:import java.util.Scanner;

      b. 创建录入对象。格式:Scanner sc = new Scanner(System.in);

      c. 通过对象获取数据。格式:int x = sc.nextInt();

       

 流程控制语句:顺序结构

       选择结构:

            if(关系表达式1) {  }  // 关系表达式是带有关系运算符和逻辑运算符的boolean表达式

            else if(关系表达式2){  }

            else if(关系表达式3){  }

            else{ }

 

            switch(表达式)    // 表达式取值:byte,short,int,char,枚举(JDK5),String(JDK7)

            {

              case 值1:语句1;break;  // 值只能是常量,值1和值2不可相同

              case 值2:语句2;break;

              default:语句n;break;// default不一定要放在最后

            }

        循环结构:

             for(初始化语句;条件判断语句;控制条件语句)  // 条件判断语句是boolean表达式

             { 循环体语句; }

 

            while(条件判断语句)  // 条件判断语句是boolean表达式

            { 循环体语句; }

 

            do

            {

              循环体语句;

            }while(条件判断语句);   // boolean表达式

        跳转控制语句:

            break:跳转单层循环:break;          // 跳出最近的一个循环。

                 跳出多层循环:格式:tag: 语句;

                          break tag; // 跳转到tag语句。

            continue:不执行本次循环,执行下一次循环

                 不执行本次循环,执行想要的循环:格式: tag: 语句;

                                    continue tag;  // 从tag语句开始执行循环

            return: 在return语句处直接返回函数。

 

wc:for(int x=0; x<3; x++)  // 给循环加一个标签,方便跳转
 {
    nc:for(int y=0; y<4; y++)  // 
    {
      if(y == 2) 
      {
        break wc;
      }        
    }
}    

 

posted @ 2019-06-30 18:55  张不源  Views(332)  Comments(0Edit  收藏  举报