Java基础学习笔记

之前搞了一个Go语言学习笔记,但是吃饭还是得靠Java啊。

Hello,World!

public class A1_Hello{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

定义数据类型

float a1 = 35.35f;
double b1 = 12.34;
char ch1 = 'a';

数组

// 一维数组
int[] a1 = new int[10];
int[] a2 = {1,2,4,5};               // 静态初始化
int[] a3 = new int[]{1,2,4,5};      // 动态初始化
// 二维数组
int[][] a4 = new int[4][];
int[][] a5 = {{1,2,3},{3,4,5}};

输入

import java.util.Scanner;

// 定义扫描器
Scanner s = new Scanner(System.in);
s1 = s.next();      // 接收字符串
s1 = s.nextLine();  // 接收下一行
s.nextInt();        // 接收并转为int型数据
s.nextFloat();      // 接受并转为Float型数据

// 关闭
s.close();

小细节

// 命令行传参数
public static void main(String[] arg)

// java arg1 arg2,接下来就 arg[0] arg[1]


// 可变参数传递,必须在最后一位,也只能有一个可变参数
public static void test(int... x)

// 参数传递,对于int,double是值传递,对于class是引用传递

面向对象

单继承,也只有单继承

public class Son extends Father { }

Super关键字的使用

  1. 子类默认调用父类的构造器
  2. 有参构造器会覆盖无参构造器
  3. super和this构造器必须为第一行

方法的重写:

  1. 重载是单个对象中,重写是多个子类和父类
  2. 静态方法不会被重写,非静态方法才会被重写
  3. 修饰符可以增大,但是不能缩小
  4. 抛出的异常可以缩小但是不能增大

三类方法不能被重写:

  1. static
  2. final
  3. private

多态注意事项:

  1. 多态是方法的多态,不是属性的多态
  2. 多态存在子类和父类之间 (ClassCastException 对象转换错误)

A instanceof B

判断A是不是B的实例化如果没有父子关系,直接报错

抽象类:

  1. 抽象类可以有普通方法,也可以有抽象方法
  2. 有抽象方法必须是抽象类
  3. 抽象类不能被实例化,可以被继承

接口

  1. 定义的常量都是public static final
  2. 定义的方法默认都是public abstract

异常

超类
Throwable
    -> Error
    -> Exception
        -> IOException
        -> RunTimeException

主动抛出异常
throw new Exception();

方法抛出异常
public void test() throws Throwable

自定义异常
class My_Exception extends Exception