Java中的变量主要有以下几种:
1、局部变量
(局部变量的声明和初始化都是在方法中,方法结束后,变量就会自动销毁)
(访问修饰符不能作用于局部变量) 
(局部变量存在与方法、构造方法、语句块中,执行完后会被销毁)
(局部变量没有默认值,必须经过初始化才能使用)
(局部变量存储在栈中)
2、类变量(静态变量)(static修饰的【类】变量)
(静态域)
(成员变量有默认值:数值型为0;布尔型为false;引用类型为null)
3、成员变量(非静态变量)
(存储在堆中的对象里面)
(成员变量有默认值:数值型为0;布尔型为false;引用类型为null)
(成员变量可以在声明时指定,也可以在构造方法中指定)

访问修饰符:public、 default、 protected、 private

创建对象:声明、实例化、初始化

源文件如果有package语句,那么package语句应该在源文件的第一行
package语句
import语句

先使用javac命令编译java文件,然后使用java命令运行字节码文件。如: javac Test.java ; java Test

如果java类没有显示声明构造器,那么这个java类会拥有一个默认无参构造器;如果java类中显示声明了构造器,那么默认的无参构造器消失。

native 表示用非java代码实现

八种基本数据类型:byte short int long float double boolean char
(Byte.SIZE Byte.MIN_VALUE Byte.MAX_VALUE Character.SIZE Character.MAX_VALUE Character.MIN_VALUE)

引用类型:
1、引用类型变量一旦声明后就不能再改变了。
2、对象和数组都是引用类型
3、引用类型变量的默认值都是null

Java常量:
1、final double PI = 3.1415926
2、const 和 final 用法类似,不常用

Java支持的转义字符:
1、 \n \t \" \' \\

Java 内存分配:
1、堆(存放new出来的对象及它的成员变量、数组)(在堆上new一个新的对象或创建一个数组后,还会在相应的栈上存储该对象或数组的引用)
(堆上的数组或对象对应的代码块执行完后,不会被释放。只有当对象或数组没有被引用时,才变为垃圾,需要在不确定的时间后被垃圾回收期收走)
(堆中存放new出来的对象 + 数组)
2、栈(执行方法时会在栈上分配一块区域)
(方法中的引用变量在栈上分配内存,在堆上生成相应的对象或数组)
(栈中存放基本数据类型的局部变量数据 + 对象的引用,不会存放变量的内容)
3、常量池(存放常量)
4、静态区(存放对象中用static修饰的静态成员)
5、寄存器(我们在程序中无法控制)
6、参考网址:

final:
1、final修饰的引用变量 只会导致引用变量的值不改变,但引用变量指向的对象的内容可以改变。

String :
1、不可变

DateFormat:
    import java.util.*;
    import java.text.*;
    Date now = new Date();
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(format.format(now));

StringBuffer和StringBuilder比较:
1、都能够对字符串进行修改,而不会产生多余的字符串
2、StringBuilder不是线程安全的,效率上会快一些;StringBuffer是线程安全的,效率上会慢一些。

正则表达式匹配:
1、使用Pattern类和Matcher类
2、示例

String line = "good 122 str .. 2828282 good str";
        String pattern = "(.*)(\d+)";
        Pattern p = Pattern.compile(pattern);
        Matcher m = r.matcher(line);
        if(m.find()) {
            System.out.println("" + m.group(0));
            System.out.println("" + m.group(1));
        } else {
            System.out.println("no matcher");
        }

异常类:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException

class InnerClass implements One {
    static {
        System.out.println("InnerClass load ......");
    }

    public InnerClass() {
        System.out.println("调用了调用了掉无参wucan调用了掉无参无参gouzao");
    }

    public InnerClass(Integer a) {
        System.out.println(a);

    }

    public Integer count = 26;
    public static String temp = "ookkk";

    public static void kan(Integer a, String kkk) {
        System.out.println(kkk);
    }

    protected Integer compute() {
        return 1;
    }
}interface One {
    String a = "good";
}

Class:
1、代码示例

Class<boolean> c = boolean.class;
        String name = c.getSimpleName();
        System.out.println(name);   // 输出"boolean"        //类反射
        //java.lang.Class
        Integer modifiersDesInt = c.getModifiers();
        System.out.println(modifiersDesInt);
        Class superClass = c.getSuperClass();
        System.out.println(superClass.getSimpleName());
        Class[] interfaces = c.getInterfaces();  //返回所有实现的接口的Class对象
        System.out.println(interfaces[0].getSimpleName());        /*
        *   两种 declared
        */
        //字段反射
        //java.lang.reflect.Field
        Field[] allFields = c.getFields();      //返回所有的变量(成员变量+类变量)(自己声明的+父类声明的)
        Field field = c.getField("temp");
        Field[] someFields = c.getDeclaredFields();  //返回所有自己声明的变量
        Field otherField = c.getDeclaredField("temp");        //方法反射
        //java.lang.reflect.Method
        Method[] methods = c.getMethods();
        for(Method method : methods) {
            System.out.println(method.getName());
            System.out.println(method.getModifiers());
            Parameter[] params = method.getParameters();
            for(Parameter param : params) {
                System.out.println(param.getName());
                System.out.println(param.getType().getSimpleName());     //获取的type仍为 Class 对象
            }
        }        /*
        *   两种 declared
        */
        //构造方法反射
        //构造函数不能继承
        //java.lang.reflect.Constructor
        Constructor[] constructors = c.getConstructors();   //获取所有的构造函数(自己的+父类的)
        constructors = c.getDeclaredConstructors();    //获取自己声明的构造函数
        for(Constructor constructor : constructors) {
            System.out.println(constructor.getName());
            Parameter[] params = constructor.getParameters();
            for(Parameter param : params) {
                System.out.println(param.getName());
                System.out.println(param.getType().getSimpleName());
                System.out.println();
            }
        }        //使用反射动态创建类的对象
        Class<InnerClass> c = InnerClass.class;
        try {
            InnerClass temp = c.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //使用类对象创建示例对象(构造函数)
        Class<InnerClass> c = InnerClass.class;
        try {
            Constructor<InnerClass> cons = c.getConstructor(int.class);
            InnerClass temp = cons.newInstance(26);
        } catch (Exception e) {
            e.printStackTrace();
        }        //使用反射调用方法
        try {
            Class<InnerClass> c = InnerClass.class;
            Method kan = c.getMethod("kan", Integer.class, String.class);
            kan.invoke(c, 26, "good");
        } catch (Exception e) {
            e.printStackTrace();
        }

复习:
1、enum用法; 

Java:https://www.w3cschool.cn/java/java-variable-types.html