如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用。而不是用static创建的方法。这种方法称为对象方法(实例方法),需要创建对象后才能使用。
package lesson; public class TestDemo {
public static void methon1(){
System.out.println("类方法");
}
public void methon2(){
System.out.print("实例方法");
} public static void main(String[] args){
TestDemo.methon1();
TestDemo.methon2();
}
}
如果在类,方法外,使用static创建的变量。这种变量称为类变量,类变量属于这个类,可以在本类中的任何类方法里面直接引用。而非static关键字声明的变量为成员变量,这种变量属于这个类的对象。可以在实例方法中引用。
package lesson; public class TestDemo {
static int no1=10;
int no2=20;
public static void main(String[] args){
System.out.println(no1);
System.out.println(no2);
}
}
在类的加载时(第一次调用类),类的成员变量会进行初始化,引用数据类型会默认初始化为null,int和long类型变量初始化为0,float和double的变量会初始化为0.0
类在加载时,除了初始化变量,还会调用类的静态块和动态快
静态块:使用static关键字修饰,static{}。有多个静态块会顺序执行
动态快:动态快不需要任何关键字修饰,直接使用花括号包含。有多个动态快会顺序执行
类在初始化时,静态块只会在第一次加载时执行一次,而动态快在每次使用此类都会执行。
package lesson; public class TestDemo {
static{
System.out.println("静态块");
} {
System.out.println("动态快");
} public static void main(String[] args){
TestDemo test = new TestDemo();
TestDemo test1 = new TestDemo(); }
}
当调用静态方法时,是不会加载动态快的
package lesson; public class TestDemo {
static{
System.out.println("静态块");
} {
System.out.println("动态快");
}
public static void Hello(){
System.out.println("Hello");
} public static void main(String[] args){
TestDemo.Hello(); }
}