1.JAVA支持的变量类型:

  • 类变量:独立于方法之外的变量,使用Static修饰;
  • 局部变量:方法中的变量;
  • 实例变量:独立于方法之外的变量,但是没有使用Static修饰;
  • 局部变量是在栈上分配的,局部变量没有默认值,所以在创建的时候必须要初始化;
  • 实例变量具有默认值在初始化实例的时候,实例变量的值便会同步被初始化。
  • 修饰符通常放在类,变量,方法的最前面。

2.访问控制修饰符

  • default:缺省类型,在同一包内可见,不实用任何修饰符;
  • private:在同一类内可见,不能修饰类;
  • public:对所有类都可见;
  • protected:在同一包内的所有类和子类可见。不能修饰类;
  • 父类中声明为 public 的方法在子类中也必须为 public。
  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
  • 父类中声明为 private 的方法,不能够被继承。

3.非访问修饰符

  • static:用来修饰类方法和类变量。
  • final:用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
  • abstract:用来创建抽象类和抽象方法。
  • synchronized 和 volatile 修饰符,主要用于线程的编程。
  • abstract,抽象类,声明抽象类的唯一目的是为了将来对该类进行扩展,抽象类可以不包含抽象方法,但是包含抽象方法的类必须为抽象类。
  • synchronized 关键字声明的方法同一时间只能被一个线程访问。
  • volatile :volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值

4.对象类型

  • String:定义为字符串的常量,不能被修改;
  • StringBuffer和StringBuilder定义字符串的变量,可以被多次修改并且公用同一块内存空间,但是StringBuilder不是线程安全的,他的访问速度比StringBuffer快很多,不能同歩访问。

5.方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
    }
  • 方法重载:方法名相同,但是包含的参数不相同,调用的时候,编译器会根据参数来决定具体使用哪个方法,这就是方法重载;
  • 构造方法和他所在的类的名称相同;
  • finalize方法:在对象被垃圾回收机制析构之前调用,