一、static:静态的
- static可以用来修饰:属性、方法、代码块、内部类
- 使用static修饰属性:静态变量(类变量)
静态变量随着类的加载而加载,早于对象的创建
由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。
| 类变量 | 实例变量 |
类 | yes | no |
对象 | yes | yes |
静态属性举例:System.out;Math.PI; |
- 使用static修饰方法:静态方法
随着类的加载而加载 - static注意点:
静态方法中,只能调用静态的方法或属性
在静态方法中,不能使用this关键字和super关键字
| 静态方法 | 非静态方法 |
类 | yes | no |
对象 | yes | yes |
public static String name = "这是一个圆";
public static String getName() {
return name;
}
开发中:
- 属性用static:属性可以被多个对象所共享,不会随着对象的不同而变化。
- 方法用static:操作静态属性的方法,通常设置为static
工具类中的方法:习惯上声明为static。例如:Math、Arrays、ections
二、main()方法的使用说明:
- 1.main()方法作为程序的入口
- 2.main()方法也是一个普通的静态方法
- 3.main()方法可以作为我们与控制台交互的方式。
三、类的成员之四:代码块(初始化块)
- 1.代码块的作用:初始化类和对象
- 2.修饰只能用static
- 3.静态代码块随着类的加载而执行。只执行一次
非静态代码块随着对象的加载而执行,就执行一次非静态代码块
public static int total;
static {
total = 100;
System.out.println("in static block!");
}
{
我是代码块!
}
static
{
我也是代码块!
}
四、final:最终的
- 1.final可以用来修饰结构:类、方法、变量
- 2.final 用来修饰一个类:此类不能被继承(断子绝孙)
比如String类,System类,StringBuffer类
final class A{
}
class B extends A{
}
- 3.final 用来修饰方法:此方法不能被重写(可能有儿子但是不能重写!)
比如Object类中getClass()类
class A {
public final void print() {
System.out.println("A");
} }
class B extends A {
public void print() {
System.out.println("×××");
} }
class A {
private final String INFO = "abc";
public void print() {
} }
常量名要大写,内容不可修改
static final:全局常量
static final 用来修饰属性:全局(static类中对象共享的)常量(final)