static的作用
- 静态修饰类的方法
- 静态修饰类的属性
- 构成静态代码
- 构成静态内部类
- 构成静态导包
静态修饰类方法
static方法一般称作静态方法,由于静态方法不依赖任何对象就能进行访问,因此对于静态方法来说,是没有this的,因为它不依赖任何对象。
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是具备依赖具体的对象才能被调用
但是在非静态成员方法中可以访问静态方法/变量的
静态方法不依赖任何对象,独立于对象存在的
静态方法不能访问非静态成员变量和非静态成员方法
非静态成员方法可以访问静态成员方法/变量
class CM{
private static String str1 = "static";
private String str2 = "nonstatic";
public CM(){
}
public void print1(){
System.out.println(str1);
System.out.println(str2);
print2();
}
public static void print2(){
System.out.println(str1);
System.out.println(str2);
print1();
}
}
public class LYQ {
public static void main(String[] args) {
CM.print2();
CM.print1();
}
}
因此,如果说想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static。我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了。因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
静态修饰方法
class CM{
public static int a = 1;
public int b = 1;
public CM(){
}
}
public class LYQ {
public static void main(String[] args) {
CM cm1 = new CM();
CM cm2 = new CM();
cm1.a++;
cm1.b++;
System.out.println(cm2.b);
System.out.println(cm2.a);
}
}
被static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的
而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。
静态变量是属于类的
非静态变量是属于对象的
静态代码块
很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。