static关键字:
一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类,所以凡是本类的对象都可以共享一份。
一旦使用static修饰成员方法,那么这就成为了静态方法,静态方法不属于对象而是属于类的。
如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。
对于静态方法来说,可以通过对象名调用,也可以直接通过类名称来调用。
无论是成员变量还是成员方法,如果有了static,都推荐使用类名称来调用。
静态变量:类名称.静态变量。
静态方法:类名称.静态方法()
对于本类中的静态方法,可以省略类名称。
public class Test {
public static void main(String[] args) {
eat();
}
public static void eat() {
System.out.println("吃饭饭");
}
}
注意事项:
1.静态不能直接访问非静态。
原因:因为在内存中是先有的静态方法,后有的非静态内容。
先人不知道后人,但是后人知道先人。
2.静态方法中不能用this
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。
静态代码块的格式:
public class 类名称{
static{
//静态代码块执行}
}
特点:当第一次用到本类时,静态代码块执行唯一的一次。
静态内容是优先于非静态,所以静态代码块比构造方法先执行。
用途:静态内容总是优先于非静态,用来一次性地对静态成员变量进行赋值。
public class Person {
static {
System.out.println("静态代码块执行!");
}
public Person() {
System.out.println("构造方法执行!");
}
}
public class Demo {
public static void main(String[] args) {
Person one = new Person();//静态代码块执行!构造方法执行!
Person two = new Person();//静态代码块执行!构造方法执行!构造方法执行!
}