静态不能直接访问非静态
成员方法可以访问静态,但是静态不能访问非静态
在内存中是先有静态再有非静态
一旦使用了static修饰成员方法,那么这就成为了静态方法
静态方法不属于对象,而是属于类
静态方法中不能使用this
如果没有static关键字,那么必须首先创建方法,然后通过方法才能使用
例子
public static void main(String[] args) {
MyClass obj = new MyClass();//首先创建对象才能使用没有static关键字的内容
obj.method();
此时method是一个普通的成员方法
public void method(){
System.out.println("这是一个普通的成员方法");
}
public static void methodStatic(){
System.out.println("这是一个静态方法");
}
而有了static关键字,那么就不需要创建方法,能够直接使用
例子:
MyClass.methodStatic();
直接通过类名称调用
public void method(){
System.out.println("这是一个普通的成员方法");
}
public static void methodStatic(){
System.out.println("这是一个静态方法");
}
在一个类中,如果某个变量使用了static修饰,那么这个类中所有的这个变量都是一个值
public class Student {
private int id;
private String name;
private int age;
static String room;//room用的static修饰的
}
此时这个学生类中所有的room’都是一样的。
静态代码块的格式:
public class {
static{
}
}
当第一次用到本类时,静态代码执行惟一的一次,而且静态代码总是优先于非静态,先执行静态
静态代码的典型用途:用来一次性的对成员变量进行赋值