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方法:在对象被垃圾回收机制析构之前调用,