Java基本语法

Java基本语法

1. Java 注释 与 Java Doc

1.1 Java 注释

  1. 单行注释 //

    //这是单行注释
    
  2. 多行注释 / /

    /*
    	这是多行注释
    */
    
  3. 文档注释/ /

    /**
     * @author Ther   作者
     * @version 1.0   版本信息
     * @since 11     指明需要最早使用的jdk版本
     */
    public class Doc {
        String name;
        /**
         * 
         * @param name              //参数名
         * @return                  //返回值情况
         * @throws Exception        //异常抛出情况
         */
        public String test(String name) throws Exception{
            return name;
        }
    }
    

    文档注释中的参数信息

    1. @author Ther 作者
    2. @version 1.0 版本信息
    3. @since 11 指明需要最早使用的jdk版本
    4. @param name //参数名
    5. @return //返回值情况、
    6. @throws Exception //异常抛出情况

1.2 Java Doc

Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。也就是说,只要在编写程序时以一套特定的标签注释,在程序编写完成后,通过 Javadoc 就形成了程序的 API 帮助文档。

Dos页面生成java doc操作

D:\Java\code>javadoc -encoding utf-8 -charset utf-8 Doc.java
正在加载源文件Doc.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 1.8.0_221
正在构建所有程序包和类的树...
正在生成.\Doc.html...
正在生成.\package-frame.html...
正在生成.\package-summary.html...
正在生成.\package-tree.html...
正在生成.\constant-values.html...
正在构建所有程序包和类的索引...
正在生成.\overview-tree.html...
正在生成.\index-all.html...
正在生成.\deprecated-list.html...
正在构建所有类的索引...
正在生成.\allclasses-frame.html...
正在生成.\allclasses-noframe.html...
正在生成.\index.html...
正在生成.\help-doc.html...

在IDEA中生成Java doc

  • Tools --> Generate JavaDoc

生成的javadoc在当前的文件下的Doc.html

在这里插入图片描述


2.Java关键字

2.1 Java关键字

关键字的定义和特点

  • 定义:被java语言赋予了特殊含义,用作专门用途的字符串(单词)

  • 特点:关键字中所有字母都为小写

  • 用于数据类型

    • 用于数据类型的关键字有 boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof
  • 用于语句。

    • 用于语句的关键字有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super
  • 用于修饰

    • 用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile
  • 用于方法、类、接口、包和异常。

    • 用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws
  • 还有些关键字

    • cat、 future、 generic、innerr、 operator、 outer、rest、var等都是Java保留的没有意义的关键字。

2.2 保留字(可能会在以后应用到关键字里)

  • byValue、cast、future、inner、operator、outer、rest、var、goto、const


3 标识符

3.1 规则:

  1. 由26个英文大小写,0-9,_或者$组成

  2. 数字不可以开头

  3. 不可单独使用关键字和保留字

  4. 区分大小写,长度无限制

  5. 标识符不能包含空格

3.2 java中的名称命名规范

  • 包名:多单词组成时所有字母都小写
  • 类名、接口名多单词组成时,所有单词的首字母大写
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
  • 常量名所有字母都大写。多单词时 每个单词用下划线连接

4. 变量

4.1 概述

定义:

数据类型 变量名 = 变量的值;(int i = 1;)

作用范围 :{} 内作用域

4.2 变量的分类

4.2.1基本数据类型
  1. 数值型

    1. 整数类型(byte,short,int,long)
      • byte 1字节 = 8bit -128~127
      • short 2字节 -2(15)~2(15)-1
      • int 4字节 -2(31)~2(31)-1
      • long 8字节 -2(63)~2(63)-1(注:long赋值时 long a = 2l;)
    2. 浮点类型(float,double)默认double类型
      • 单精度float 7位有效数字 (float a = 12.1f/F)
      • 双精度double 16位 (double d = 12.1)
  2. 字符型(char)

    char a1 = 'i';
    char b1 = '%';
    char c1 = '\n'//换行
    char d1 = '\'' "'"
    
  3. 布尔型(boolean)

    boolean a = true;
    boolean b = false;
    
4.2.2 引用数据类型 (都可以用null作为初始化的值)
  1. 类(class) "String字符串"

    String str = "hello world";
    String str2 = "he"+"llo "+"world";
    System.out.print(str);
    
  2. 接口(interface)

  3. 数组([])

4.2.3 数据类型转换

(1)基本数据类型转换

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。
    (char,byte,short) --> (int) --> (long) --> (float) --> (double)

  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据,然后再进行计算。

  • byte,short,char之间不会进行互相转换,都转换成int。

  • 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。

    String str1 = 1 + 3 + 5 + "a" + 2 + 6; //输出9a26
    

(2) 强制类型转换

  • 自动类型转换的逆过程,将容量大的数据类型转换为容量小的类型。使用时要加上强制转换符“ () ”,但可能造成精度降低或溢出。

  • 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类 则可以实现把字符串转换成基本类型。

     String a = "123"; int i = Integer.parseInt(a);
    
    • boolean类型不可以转换为其他数据类型。

5.运算符

5.1 运算符的分类

  1. 算术运算符

    +,-,*,/(整数之间相除保留整数部分) ,%,++,–,(字符串连接"+")

  2. 赋值运算符

    "=", “+=”,"-=","*=","/=","%="(自动强制类型转换为当前类型)

  3. 比较运算符

    “==” “!=” “<” “>” “<=” “>=”
    比较运算符的结果都是boolean类型,true or false

  4. 逻辑运算符

    • & – 逻辑与
    • | – 逻辑或
    • – 逻辑非
    • && – 短路与
    • || – 短路或
    • ^ – 逻辑异或(a^b表示其中肯定有一个条件成立,一个不成立)
    • "&“和”&&"的区别:
      “&”:左边无论真假,右边都进行运算;
      “&&”:左边真,右边参加运算。左边假,右边不进行运算。
    • "|“和”||"的区别同理
      “||”:左边为真,右边不进行运算
  5. 位运算符 (直接对二进制进行计算)

    • << 左移 3<<2 = 12 -> 3 * 22=12(m<<n -> m * 2n)
    • >> 右移 3>>1 = 1 -> 3/2=1 (m>>n -> m * 2-n)
    • >>> 无符号右移
    • | 或运算 6 | 3 = 7
    • ^ 异或运算 6 ^ 3 = 5
    • ~ 反码 ~6 = -7
  6. 三元运算符

    格式:
    (条件表达式)?表达式1: 表达式2;
    如果条件为真执行1,否则执行2.

5.2 运算符的优先级

运算符的优先级


6. 程序流程控制

6.1 顺序结构

合法的向前引用

6.2 分支结构

  1. if语句

  2. if - else语句

  3. switch语句

    switch(变量){case 常量1:语句1;break;······default:语句;break;}
    

6.3 循环结构

  1. for循环

  2. while循环

  3. do-while循环

  4. 增强for循环 for each

    public static void main(String[] args) {        int i = 0;        String[] str = {"hello","world","!"};        for (i = 0; i <= 2; i++) {            //循环执行语句            System.out.println(str[i]);        }        i = 0;        while (i <= 2){            //循环执行语句            System.out.println(str[i]);            i++;        }        i = 0;        do {            //循环执行语句            System.out.println(str[i]);            i++;        }while (i <= 2);        for (String s:             str) {            System.out.println(s);        }    }
    

6.4 特殊语句控制

  1. berak语句:终止当前所在的循环
  2. continue语句:用于跳过某个循环的一次执行
  3. return:直接结束整个方法。

7.数组

7.1 声明数组

数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标(index,或称索引)就可以访问数组中的每一个值。

  • 数组的声明
    • **int [] a;**表示声明了数组变量a,并没有将a初始化为一个真正的数组。应该使用new操作符创建数组。
    • **int [] a = new int[100]; 或者var a = new int [100];**表示初始化了一个可以存储100个整数的数组;
    • 在Java中数组长度不要求是常量:new int [n];会创建一个长度为n的数组;
    • 数组的长度不可变,如果程序运行中需要经常扩展数组的大小,就应该使用另一种数据结构——数组列表(array list)。
    • 创建数组对象并同时提供初始值的写法:int[] a = {1,2,3,4,5,6,7};(可以不使用new,甚至不用指定长度)最后一个值后面允许有逗号,如果你要不断为数组增加值,这会很方便
  • 在java中允许有长度为0的数组,如果数组作为方法的结果,就可能会用到。(长度为0的数组与null不相同)。

7.2 访问数组元素

  • 一个数组的下标是从0开始的。

  • 数字数组的元素初始化为0,boolean数组的元素初始化为false。对象数组元素初始化为null,表示这些元素还没有存放任何对象。(null和“”(字符串空串)不相同)。

  • array.length方法用来获取数组中元素的个数。

    for(int i = 0;i < a.length;i++)    System.out.println(a[i]);
    
  • 如果访问的索引大于数组中的元素个数,则会引发数组越界异常。

7.3 for each循环

Java中的for each循环结构,可以用来依次处理数组(或者其他元素集合)中的每一个元素,而不用考虑指定的下标值。

  • 语句格式:
    for (variable : collection) statement
//例如: for(int element : a)	System.out.println(element); //等同于:for(int i = 0;i < a.length;i++)    System.out.println(a[i]);

此外还有一种更简单的方法来遍历数组调用**Arrays.toString(a)**这种方法返回数组元素的字符串,这些元素在中括号内,并用逗号分隔。

  • for each循环语句的循环变量将会遍历数组中的每个元素,而不是下标值。

7.4数组拷贝

在Java中,允许将一个数组变量拷贝到另一个数组变量。这时,两个变量将引用同一个数组;

int[] a = b;a[2] = 2;//此时b[2] 也等于2;
  • Arrays.copyOf()方法。如果希望将一个数组的所有值都拷贝到一个新的数组中去,则会用到这个方法。
    int[] copyA = Arrays.copyOf(A , A.length);第二个参数是数组的长度,这个方法也可用来增加数组的大小。
    如果长度小于原始数组,则只会拷贝前面的元素。如果长度大于原始数组后面的元素则会被赋值为相应的默认值。

7.5 命令行参数

每个Java应用程序都有一个带String args[]参数的main方法。这个参数表示main方法接收一个字符串数组,也就是命令行上指定的参数。

例如在一个hello.class的可执行文件,在命令行执行java hello hello world !args[0]是”hello“。

7.6 数组排序

  • 对数值型数组进行排序,可以使用Arrays.sort()方法,这个方法使用了优化的快速排序(QuickSort)算法

    //例如int [a] = new int [100];a = {1,2,3,......};System.out.println(Arrays.sort(a));//输出排序后的数组a。
    

7.7 java.util.Arrays类

  • static String toString(type[]a)
    返回包含 a 中数据元素的字符串, 这些数据元素被放在括号内, 并用逗号分隔。
    数组元素类型type可以为 int、long、short、 char、 byte、boolean、float 或 double 的数组。
  • static type copyOf(type[]a, int length)
  • static type copyOfRange(type[]a , int start, int end)
    返回与 a 类型相同的一个数组, 其长度为 length 或者 end-start, 数组元素为 a 的值。参数的类型可以为 int、 long、 short、 char、 byte、boolean、 float 或 double 的数组。
    start:起始下标(包含这个值)
    **end:**终止下标(不包含这个值)。这个值可能大于 a.length。 在这种情况下,结果会填充 0 或 false。
  • static void sort(type [] a)
    采用优化的快速排序算法对数组进行排序。
    参数:a的类型为 int、long、short、char、byte、boolean、float 或 double 的数组。
  • static int binarySearch(type[]a , type v);
  • static int binarySearch(type[]a, int start, int end, type v)
    采用二分搜索算法查找值 v。如果查找成功, 则返回相应的下标值; 否则, 返回一个负数值 r, -r-1 是为保持 a 有序 v 应插入的位置。
    参数:a的类型可以为 int、 long、 short、 char、 byte、 boolean 、 float 或 double 的有序数组。
    start :起始下标(包含这个值)。
    end :终止下标(不包含这个值)。
    v : 同 a 的数据元素类型相同的值。
  • static void fill(type[]a , type v)
    将数组的所有数据元素值设置为 v。
    参数:a的类型可以为 int、 long、short、 char、byte、boolean、float 或 double 的数组。
    v : 与 a 数据元素类型相同的一个值。
  • static boolean equals(type[]a, type[]b)
    如果两个数组大小相同, 并且下标相同的元素都对应相等, 返回 true。
    参数:a、 b的类型可以为 int、long、short、char、byte、boolean、float 或 double 的两个数组。

7.8 多维数组

多维数组使用多个下标访问数组元素

  • 二维数组

    • 二维数组的声明:int [][]a;
    • 初始化:a = new int a [10][10];
    • 还可以和一维数组一样,不用调用new的初始化
  • for each循环语句处理二维数组时,需要两个for each嵌套使用。

  • 要想快速的打印一个二维数组的元素列表,可以调用:**Arrays.deepToString()**方法。

  • 二维数组的内部存储原理:

img

7.9 不规则数组

Java的数组在底层和其他语言有所不同,Java实际上没有多维数组,只有一维数组。多维数组可以被解释为:“数组中的数组“。所以就可以有数组中的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值