JAVA基础

1、Java注释

  • 单行注释

    // 注释内容
    
  • 多行注释

    /*
     多行
     注释
     内容
    */
    
  • 文档注释

/**
 * 文档注释
 * @author 作者名
 * @version 版本号
 * @since 指明需要最早使用的jdk版本
 * @param 参数名
 * @return 返回值情况
 * @throws 异常抛出情况
 */

生成文档doc命令:javadoc -encoding UTF-8 -charset UTF-8 Demo.java

2、Java关键字

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

3、Java标识符

  • 所有标识符以字母、$、或者下划线(_)开头
  • 首字母之后可以使用字母、$、下划线或数字任意字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感的
  • 可以使用中文命名,但是一般不推荐,也不推荐拼音,很Low

4、Java数据类型

基本类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15 - 1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0
  • 例子:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L
  • 例子: long a = 100000L,Long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;

  • 浮点数的默认类型为 double 类型;

  • double类型同样不能表示精确的值,如货币;

  • 默认值是 0.0d

  • 例子:

    double   d1  = 7D ;
    double   d2  = 7.; 
    double   d3  =  8.0; 
    double   d4  =  8.D; 
    double   d5  =  12.9867; 
    

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false
  • 例子:boolean one = true。

char:

  • char类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(即为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = 'A';。

引用类型

类、数组、接口,默认值都是null。

5、变量命名规范

  • 所有的变量名、方法名、类名:要见名知意;
  • 变量名:首字母小写和驼峰原则;
  • 常量名:字母全大写且多个单词下划线间隔;
  • 类名:首字母大写和驼峰原则;
  • 方法名:首字母小写和驼峰原则。

6、运算符

  • 算术运算符:+, -, *, /, %, ++, --
  • 赋值运算符:=
  • 关系运算符:>, <, >=, <=, ==, !=, instanceof
  • 逻辑运算符:&&, ||, !
  • 位运算符:&, |, ^, ~, >>, <<, >>>
  • 三元运算符:? :
  • 扩展赋值运算符:+=, -=, *=, /=

7、Java流程控制

顺序结构:

  • 基本算法结构,按照代码从上到下,从左到右的顺序执行;

选择结构:

  • if 结构

    // if单选择结构:
    if(布尔条件){
        // 执行代码
    }
    
    // if双选择结构:
    if(布尔条件){
       // 执行代码1 
    }else{
       // 执行代码2
    }
    
    // if多选择结构:
    if(布尔条件1){
       // 执行代码1 
    }else if(布尔条件2){
       // 执行代码2
    }else{
       // 执行代码3
    }
    
    // if嵌套结构:
    if(布尔条件){
        if(子布尔条件){
           // 执行代码1 
        }else{
           // 执行代码2
        }
    }
    
    // 如果执行代码只有一行,则可以大括号可省略不写
    if(a == 1)
        System.out.print(a);
    else if(a == 2)
        System.out.print(b);
    
  • switch 多选择结构

    /*
     expression变量类型支持 byte,short,int,char,Java7开始支持String类型
    */
    switch(expression){
        case value1:
            // 执行代码1
            break; // 跳出switch代码块,可选,如果不写,则继续执行下面的选项中代码
        case value2:
            // 执行代码2
            break; // 跳出switch代码块,可选,如果不写,则继续执行下面的选项中代码
         ...
        default: // 上面选项都不满足,默认执行下面代码
            // 执行代码3
            
    }
    
  • 循环结构:

    • for 循环

      for(初始化; 布尔表达式; 更新){
         // 循环体 
      }
      
      /* 增强for循环,jdk5新增 */
      for(对象 变量名 : 对象的集合){
         // 循环体 
      }
      
    • while 循环

      /* 布尔表达式不为false,则循环体一直执行 */
      while(布尔表达式){
          // 循环体
      }
      
    • do while 循环

      /* 布尔表达式不为false,则循环体至少会执行一次 */
      do{
          // 循环体
      } while(布尔表达式);
      

break 和 continue 关键字:

  • break:break可以用在循环结构和switch选择结构代码中,用于强行退出当前循环,或选择结构;
  • continue :continue 用于循环体中,用于跳过本次循环,继续进入下次循环。

8、Java方法

​ 方法是语句的集合,用于解决一类问题或执行一个功能。方法包含于类或对象中,可以在其他地方被引用。

​ 方法设计时,最好遵从原子性,即一个方法只完成一个功能,这样有利于维护和扩展。

/* 方法定义 */
修饰符 返回值类型 方法名(形式参数){
    // 方法体   
}

/* 有返回值,且返回值类型为int,方法最后一行需要返回return,例 */
public int add(int a, int b){
    return a+b;
}

/* 无返回值,用void关键字表示,方法最后无需写return,例 */
public void add(int a, int b){
    System.out.print(a+b);
}

/* 静态方法使用修饰符static,例 */
public static int add(int a, int b){
    return a+b;
}

方法重载

​ 一个类中,两个方法,方法名相同,但方法参数列表不同(个数不同、或参数类型不同、参数排列顺序不同等),则这两个构成重载。

public void add(int a, int b){
    // ...
}
public void add(int a, int b, int c){
    // ...
}
public void add(String a, String b){
    // ...
}

可变参数

​ jdk1.5开始,Java支持传递同类型的可变个数参数给一个方法。一个方法中只能指定一个可变参数,且它必须位于方法的最后一个参数。

/* 
 定义:数据类型... 参数名
 例:int... numbers
*/
public int add(int... numbers){
    int sum = 0;
    for(int i = 0; i < numbers.length; i++){
        sum += numbers[i];
    }
    return sum;
}

递归方法

​ 递归就是方法自己调用自己,利用递归可以用简单的语句解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来解决。

递归结构包含两个部分:

  • 递归头:什么时候不再继续调用方法自身。如果没有头,将陷入死循环。
  • 递归体:什么时候需要调用方法自身。
/* 阶乘算法 */
public static int factorial(int n){
    if(n == 1)
        return 1; // 递归头
    else 
        return n * factorial(n-1); // 递归体
}

9、数组

​ 数组就是相同类型的数据的有序集合,其中集合中的每一个数据称之为数组元素,每个数组元素可以通过一个下标来访问它。

特点:

  • 数组一旦创建,其长度不可变;
  • 数组中的元素必须是相同的类型;
  • 数组下标是从0开始,下标合法区间 [ 0, length-1 ],, 超出区间会报数组下标越界的异常 ArrayIndexOutOfBoundsException。
/* 数组可以通过三种方式定义,下面以int类型数组为例 */
int[] arr1 = new int[3]; // 方式一:需要申明数组长度,此处设了3
arr1[0] = 1; // 下标0赋值
arr1[1] = 10; // 下标1赋值
arr1[2] = 23; // 下标2赋值

int[] arr2 = {1, 10, 23}; // 方式二:直接定义数组元素
int[] arr3 = new int[]{1, 10, 23}; // 方式三:无需申明长度,直接定义数组元素

// 获取数组长度,使用length属性
int arrLength = arr1.length;

// 遍历数组
for(int i = 0; i < arr2.length; i++){
    System.out.println(arr2[i]);
}

多维数组

​ 多维数组可以看成是数组的数组,即数组的每个元素也是个数组。

以二维数组为例:

int[][] arr1 = new int[3][3];
int[][] arr2 = {{1, 2, 3},{4, 5, 6},{7. 8. 9}};
posted @ 2021-05-03 10:37  金盛年华  阅读(70)  评论(0编辑  收藏  举报