文章目录:
  1. 基础知识
  2. 类概要
    1. 变量
    2. 构造方法
    3. 对象
  3. 变量
    1. 类型的默认值
    2. 引用类型
    3. 常量
    4. 自动类型转换
  4. 修饰符
    1. 访问控制修饰符
    2. 非访问修饰符
      1. static修饰符
      2. final修饰符
      3. abstract修饰符
  5. Scanner类
参考:黑马程序员(Bilibili) and 菜鸟教程

基础知识

  1. 所有的Java程序都从入口public static void main(String[] args)进入,字段分别为访问修饰符、关键子、返回类型、方法名、(输入变量)。
  2. 文件名要与public class的类名相同。
  3. 命令行运行方法:

    javac HelloWorld.java //编译为class文件
    java HelloWorld //运行class文件
  4. 注释:单行注释//,多行注释/*注释*/
  5. 变量类型:
    变量类型

    类概要

    变量

    类中可以包含以下三种变量类型:

  6. 局部变量:方法、构造方法、各种语句块(循环/判断等)中的变量,只存在于各自方法/块中;
  7. 成员变量:直接定义在类中的变量,这种变量会在创建对象时实例化,可以被访问(取决于自身访问修饰符);
  8. 类变量:也声明在类中,方法体之外,但必须为static类型。

    构造方法

    构造方法的名称必须与类同名,一个类可以有多个构造方法(重载规则),若没有构造方法则Java编译器会有默认的无参数构造方法。
    Example:

    public class People{
     String name;
     int age;
     public People(){
     }
     public People(String name){
         this.name = name; //若
     }
     public void gun(){
         // do nothing
     }
    }

    对象

    创建对象会有以下的步骤:声明对象名称和类型,使用关键词new来实例化一个对象,使用new时会调用构造函数初始化对象。
    Like:People ALH = new People("ikun")
    访问变量和方法,类似于C结构体,使用对象名.变量名/方法名使用:

    ALH.age = 91;
    ALH.gun();

变量

基础的变量类型知识见“基础知识”。

类型的默认值

某个作业的要求,一般都是0或者0相关数值,若无数值则是null(如类)。

数据类型默认值
int0
long0L
short0
char'\u0000'
byte0
float0.0f
double0.0d
booleanfalse
引用类型(类、接口、数组)null

引用类型

Java里面的对象和数组储存时是引用数据类型,只有在new之后才会创建新的内存空间,所以如果不调用new直接复制对象/数组,复制的其实只是地址。
其默认值都为null。

常量

Java里面的常量使用final关键字来修饰。
字面量也是常量,如数字100、0114(0开头为8进制)、0x514(0x开头为16进制);而字符串字面量也是常量,使用方法如"Beihang is the best university"

自动类型转换

byte,short,char—> int —> long—> float —> double  // 从低到高

修饰符

分为以下两类:

访问控制修饰符

可以对类、变量、方法、构造方法进行约束,有以下关键词:

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
publicYYYYY
protectedYYYY/NN
defaultYYYNN
privateYNNNN

注意:
protected 需要从以下两个点来分析说明:

非访问修饰符

static修饰符

就是对于一个类共有的变量,无论一个类建了多少个对象,static修饰的变量只会储存一份。
static一般修饰变量,同时也可以写在类中的方法里,只用在返回变量用static修饰的情形,用来表示返回的值是static xxx类型。

final修饰符

对于变量:
类似于const,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。final 修饰符通常和 static 修饰符一起使用来创建类常量。
对于方法:
父类中的 final 方法可以被子类继承,但是不能被子类重写
声明 final 方法的主要目的是防止该方法的内容被修改。
对于类:
final 类不能被继承,没有类能够继承 final 类的任何特性。

abstract修饰符

对于类:
abstract表示抽象的类,即类不能被实例化,就光用来调用里面的方法,变量类型为private,比如可以对一个普通类专门写一个抽象类,用来表示类中的方法。
对于方法:
抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。抽象方法不能被声明成 final 和 static。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
意思就是父类先把函数名写好了,里面什么也不放,等着子类继承之后再重写。非常的规范非常的抽象a。

其他修饰符关于线程等内容,主播看不懂一点...

Scanner类

java中用来输入的类。
首先进行读入操作之前先要对类实例化,创建对应的对象,构造方法里面应该写(System.in)

Scanner s = new Scanner(System.in);

常用的读取和判断是否读完的方法(From菜鸟教程):

基本输入方法
boolean hasNext()检查是否有下一个标记(以空格分隔)
String next()读取下一个标记(字符串)
boolean hasNextLine()检查是否有下一行
String nextLine()读取下一行内容
类型检查方法
boolean hasNextInt()检查下一个标记是否为整数
boolean hasNextDouble()检查下一个标记是否为双精度浮点数
boolean hasNextBoolean()检查下一个标记是否为布尔值
类型读取方法
int nextInt()读取下一个整数
double nextDouble()读取下一个双精度浮点数
boolean nextBoolean()读取下一个布尔值
long nextLong()读取下一个长整数
float nextFloat()读取下一个单精度浮点数
short nextShort()读取下一个短整数
byte nextByte()读取下一个字节

比如这样使用:

Scanner s = new Scanner(System.in);
int i;
if(s.hasNextInt()){
    i = s.nextInt();
}