1.static 修饰的静态属性,静态块。
static修饰的属性为全局变量,即该属性不属于某个对象,可通过类名或对象名调用该属性。在类被加载时static修饰的属性会优先于普通属性加载,且只加载一次。
class Book{
public Book(String msg) {
System.out.println(msg);
}
}
public class Person {
int a=10;//普通属性
static int b=10;//静态属性
Book b1=new Book("book1:");//普通对象
static Book b2=new Book("book2:");//静态属性
static void heat() {
System.out.println("heat:");
}
public Person(String msg) {
//静态方法
System.out.println(msg);
}
public static void main(String[] args) {
Person p1=new Person("p1");
System.out.println("p1.a:"+p1.a+" p1.b"+p1.b);
p1.a=20;
p1.b=20;
Person p2=new Person("p2");
System.out.println("p2.a"+p2.a+" p2.b"+p2.b);
}
}
输出结果:
book2:
book1:p1
p1.a:10 p1.b10
book1:
p2
p2.a10 p2.b20
2.static修饰的静态方法
static修饰的静态方法可通过类名直接调用,也可以通过类名调用。
注意:1.没有创建对象直接通过类名调用静态方法时,static属性会被加载,但是普通属性不会被加载。
2.静态方法不可使用普通属性,在静态方法内可定义普通属性。
3.静态方法内可以调用静态方法,但是不可调用普通方法。(普通方法可调用静态方法)
4.静态方法中不可以使用this关键字。
class Book{
public Book(String msg) {
System.out.println(msg);
}
}
public class Person {
int a=10;//普通属性
static int b=10;//静态属性
Book b1=new Book("book1:");//普通对象
static Book b2=new Book("book2:");//静态属性
static void heat() {
int a=5;
System.out.println("heat:"+"Static方法中的a:"+a);
}
public Person(String msg) {
//静态方法
System.out.println(msg);
}
public static void main(String[] args) {
Person.heat();
Person.heat();
Person.heat();
}
}
输出结果:
book2:
heat:Static方法中的a:5
heat:Static方法中的a:5
heat:Static方法中的a:5