• Java基础语法 第2节 Java语言基本语法


    一、标识符和关键字

      1.标识符  

      1)java中标识符用来为程序的白能量、常量、方法、类、接口和包名命名,标识符由字母、数字、下划线、美元符号组成,且第一个字符不能是数字;
      2)标志符命名规则:见名知意原则和驼峰命名法;

       2.关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(单词),关键字中所有字母都为小写

       3.Java中的名称命名规范

               1)包名:多单词组成时,所有字母都小写:xxxyyyzzz

               2)类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

               3)变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

               4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

    二、注释和标签

    1. 单行注释:// ,多行注释:/*...*/
    2. 文档注释:/**
                  *文档注释(以@为前缀)
                  */
    3. @author:作者名,@version:版本,@parameter:参数及其意义,@since:最早使用该方法、类的JDK版本,@return:返回值,@throws:异常类机器抛出条件

    三、变量和数据类型

      1.进制数

    十进制(D

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    二进制(B

    0000

    0001

    0010

    0011

    0100

    0101

    0110

    0111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    八进制(O

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    十六进制(H

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

      注:八进制必须以0开头,例:0123;十六进制必须以0X开头,例:0X25

      2.各进制数转换

        1)其他类型---->十进制:各位数字分别乘以各自基数(二进制:2,八进制:8,十六进制:16)的(N-1)次方,并相加求和,其中N是数字位数(按权相加法

          例如:(1001)2=(9)10:1×23+0×22+0×21+1×20=9;(11)8=(9)10:1×81+1×80=9;(25)16=(37)10:2×161+5×160=37;

        2)十进制--->其他类型:整数部分(除基取余法↑),小数部分(乘基取余法↓),再拼接 

        3)二进制---->八进制:←整数部分.小数部分→,即整数部分向左每三位转换成二进制数,位数不够则补0;小数部分向右每三位转换成二进制数,位数不够则补0

        4)八进制---->二进制:与二进制-转八进制相反

        5)二进制----->十六进制:←整数部分.小数部分→,即整数部分向左每四位转换成二进制数,位数不够则补0;小数部分向右每四位转换成二进制数,位数不够则补0

        6)十六进制----->二进制:与二进制转十六进制相反

        7)八进制<----->十六进制:八进制<--->二进制<------>十六进制

                

            

      3.数据类型:

      

      3. 默认值:数值变量:0;字符变量:‘’;布尔变量:false;引用数据类型:null;' ':换行;' ':Tab键;' ':回车

      4. 不同数据类型之间的转换(自动转换:如下图;强制转换:int a = (int)45.3)

      

            注:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。如下图,底数2,0或1表示正或负

       

      5.变量:

        1)常量:程序执行过程中值不能被改变的量,通常用大写字母表示

        2)变量:程序执行过程中值能被改变的量

        3)定义变量:[访问修饰符]变量类型   变量名 [= 初始值]final 数据类型  常量名称 [=初始值]

        4)当定义的final变量属于成员变量时,必须定义时赋初始值

        5)变量的有效范围:

          ◊成员变量:类体中定义,整个类中有效

            实例变量:int x = 5;

            静态变量(类变量):有效范围内可以”跨类“,甚至达到整个程序之内。使用方法:1.本类中直接存取;2.其他类中以"类名.静态变量"调用

          ◊局部变量:方法体中定义,只在当前代码块有效({变量作用范围}),包括方法的参数。局部变量的使用高于成员变量,若同名则成员变量展示隐藏

    三、运算符与表达式

      1. 算术运算符

      

      ◊算数运算符的注意问题:

       1)取余(模):余数正负与”%左边“的数保持一致。例:-1%5 = -1(商0),1%-5 = 1

       2)“+”除字符串相加功能外,还能把非字符串转换成字符串。例:System.out.println("5+5="+5+5); //打印结果是"5+5=10"

       3)++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果不同

      

      

      2.赋值运算符

       

      3. 关系运算符
      

      4. 逻辑运算符

      

      注:a&&b若a为false则不会判断条件b,a||b若a为true则不会判断条件b,

      6. 位运算符

    运算符 名称 举例 运算规则 结果
    & “与”、“位与” 5&4 如果两个数的二进制,相同位的数都是1,则该位结果是1,否则是0

    5的二进制是  0000 0000 0000 0101,4的二进制是  0000 0000 0000 0100,则结果是 0000 0000 0000 0100  转为十进制是4

    | “或”、“位或” 5 | 4 如果两个数的二进制,相同位的数有一个是1,则该位结果是1,否则是0 结果是  0000 0000 0000 0101  转为十进制是5
    ^ “异或、“位异或” 5 ^ 4 如果两个数的二进制,相同位的数只有一个是1,则该位结果是1,否则是0 结果是        0000 0000 0000 0001 转为十进制是1 
    ~ “非”、“位非” ~5 属于一元操作符,只对一个操作数进行操作,(其他按位操作符是二元操作符)。按位“非”生成与输入位相反的值,——若输入0,则输出1,若输入1,则输出0

    5的二进制是  0000 0000 0000 0101,则~5是 1111 1111 1111 1010  转为十进制是 -6

    >> 右移位 5>>2 按照操作符右侧指定的位数将操作符左边的操作数向右移。“有符号”右移位操作符使用“符号扩展”;若符号位正,则在高位插入0;若符号位负。则在高位插入1
    5的二进制是   0000 0000 0000 0101
    右移两位  0000 0000 0000 0001
    << 左移位 5<<2 按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)
    5的二进制是   0000 0000 0000 0101
    左移两位  0000 0000 0001 0100
    >>> “无符号”右移位 5>>>2 使用“零扩展”;无论正负,都在高位插入0
    5的二进制是   0000 0000 0000 0101
    无符号右移两位  0000 0000 0000 0001
      负数的二进制转化,计算机计算是用的补码 -5

    1、首先取出这个数的原码的二进制

    2、然后再求出反码

    3、最后求出补码

    -5的原码是              1000 0000 0000 0101

    求出反码的是            1111 1111 1111 1010

    求出补码是               1111 1111 1111 1011

      注:移位操作符只可用来处理整数类型;   

      7. 三元运算符

            语法形式:布尔表达式 ? 表达式1 :表达式2

    四、数组:用于存储一组同一数据类型数据的容器

      1. 一维数组

        定义:数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2……}  或   数据类型[ ] 数组名 = {元素1,元素2……}

      2. 二维数组:二维数组的每一个元素是一个一维数组

        定义:数据类型[ ][ ] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];

              数据类型[ ][ ] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][ ];

           数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};

      3.数组在内存中的存储过程

        内存:栈内存、堆内存、方法区、本地方法栈(和其他语言交互)、寄存器(汇编)

        栈内存:可以用于存储变量,栈内存对存入其中的变量不会自动赋值,变量在使用完成之后会立即移出栈内存释放空间

        堆内存:用于存储对象的,堆内存对于存入其中的元素会自动的赋予初始值(byte/short/int:0,long:0L;float:0.0f,double:0.0,char:‘u0000’,boolean:false),引用数据类型的默认值都是null,对象使用完成之后不会立即移出堆内存,而是在不定的某个时刻被回收

     

      4.数组应用

      1)常用方法

    •  Arrays.fill(数组名,值):将数组中每个元素赋予相同的值。
    • Arrays.asList(数组):将数组转化为集合(set,list)。

      String s[] = {"wyy", "wzz", "wxx"};
      List<String> list = new ArrayList<>(Arrays.asList(s));
      list.add("whh");
      System.out.println("ArrayList是否包含:" + list.contains("whh"));
      Set<String> set = new HashSet<>(Arrays.asList(s));
      System.out.println("集合set是否包含:" + set.contains("wyy"));
    • Arrays.toString(数组).contains(xxx):数组是否包含某个元素

    • ArrayUtils.addAll(array, array2)连接两个数组

    • arr.join( ", "):根据分隔符拼接数组元素

    • ArrayUtils.reverse(array):反转数组

    • Arrays.equals(score1,score2):比较两个数组是否相等
    • Arrays.fill(array,value):数组填充

    • binarySearch(Object[] a,int fromIndex,int toIndex,Object key):在指定的范围内查找某一元素,在进行数组查询之前,必须对数组进行排序(可以使用 sort() 方法),如果 key 包含在数组中,则返回搜索值的索引;否则返回 -1 或“-插入点”

      public static void main(String[] args)
      {
          double[] score={99.5,100,98,97.5,100,95,85.5,100};
          Arrays.sort(score);
          int index1=Arrays.binarySearch(score,100);
          int index2=Arrays.binarySearch(score,60);
          System.out.println("查找到 100 的位置是:"+index1);
          System.out.println("查找到 60 的位置是:"+index2);
      }
    • Arrays.copyOf(dataType[] srcArray,int length):默认从源数组的第一个元素(索引值为 0)开始复制,目标数组的长度将为 length。如果 length 大于 srcArray.length,则目标数组中采用默认值填充;如果 length 小于 srcArray.length,则复制到第 length 个元素(索引值为 length-1)即止。若目标数组如果已经存在,将会被重构。

    • Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex):其中,srcArray 表示源数组;startIndex 表示开始复制的起始索引,目标数组中将包含起始索引对应的元素,若目标数组如果已经存在,将会被重构。

    • System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length):方法位于 java.lang.System 类中,srcArray 表示源数组;srcIndex 表示源数组中的起始索引;destArray 表示目标数组;destIndex 表示目标数组中的起始索引;length 表示要复制的数组长度。目标数组必须已经存在,且不会被重构,相当于替换目标数组中的部分元素。

    • array_name.clone():clone() 方法的返回值是 Object 类型,要使用强制类型转换为适当的类型。例:int[] targetArray=(int[])sourceArray.clone();目标数组如果已经存在,将会被重构。

    • Arrays.sort(数组) :
      1. 导入 java.util.Arrays 包。
      2. 使用 Armys.sort(数组名) 语法对数组进行排序,排序规则是从小到大,即升序。

      2)数组元素排序

    • 冒泡排序:在双层循环中实现,其中外层循环控制排序轮数,总循环次数为要排序数组的长度减 1。而内层循环主要用于对比相邻元素的大小,以确定是否交换位置,对比和交换次数依排序轮数而减少。
      public voidarrSort(score){  //score是要排序的数组
      System.out.println("通过冒泡排序方法对数组进行排序:");
      for(int i=0;i<score.length-1;i++)
      {
          //比较相邻两个元素,较大的数往后冒泡
          for (int j=0;j<score.length-1-i;j++)
          {
              if(score[j]>score[j+1])
              {
                  double temp=score[j+1];    //把第一个元素值保存到临时变量中
                  score[j+1]=score[j];    //把第二个元素值转移到第一个元素变量中
                  score[j]=temp;    //把临时变量(第一个元素的原值)保存到第二个元素中
              }
              System.out.print(score[j]+ " ");    //对排序后的数组元素进行输出
          }
          System.out.print("【");
          for(int j=score.length-1-i;j<score.length;j++)
          {
              System.out.print(score[j]+" ");
          }
          System.out.println("】");
      }
      }
    • 选择排序:每一趟从待排序的数据元素中选出最大(或最小)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完
      int[] number={13,15,24,99,4,1};
      String end="
      ";
      int index;
      for(int i=1;i<number.length;i++)
      {
          index=0;
          for(int j=1;j<=number.length-i;j++)
          {
              if(number[j]>number[index])
              {
                  index=j;    //查找最大值
              }
          }
          end=number[index]+" "+end;    //定位已排好的数组元素
          int temp=number[number.length-i];
          number[number.length-1]=number[index];
          number[index]=temp;
          System.out.print("【");
          for(int j=0;j<number.length-i;j++)
          {
              System.out.print(number[j]+" ");
          }
          System.out.print("】"+end);
      }

    五、流程控制语句(if,switch,for,while,do...while)

      

      2. 循环语句

      

      3.return 语句:用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。

      4.break 语句:有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。

      5.continue 语句:是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。

      注:continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。

       6.标签功能:跳出外层循环

    标签名:循环体{      
          break 标签名;    
        }
    Loop:for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(j==4){
         break Loop; //此处也可以用continue:跳过外层本次循环,执行外层下一次循环       
            }
        }
    }        

     

     

     

  • 相关阅读:
    笔记-迎难而上之Java基础进阶4
    笔记-迎难而上之Java基础进阶3
    笔记-迎难而上之Java基础进阶1
    7天学完Java基础之7/7
    Java学习笔记(3)--- 内部类,基本数据类型
    C++ 基础语法 快速复习笔记(3)---重载函数,多态,虚函数
    C++ 基础语法 快速复习笔记---面对对象编程(2)
    C++ 基础语法 快速复习笔记(1)
    堆与栈(heap and stack)在c/c++的应用(概念)
    Python爬虫入门教程 5-100 27270图片爬取
  • 原文地址:https://www.cnblogs.com/yutianbao/p/10454187.html
Copyright © 2020-2023  润新知