JavaSE学习
static
public class Student {
private static int age;
private double year;
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.year);
System.out.println(s1.age);
//System.out.println(Student.year);
System.out.println(Student.age);
}
}
age为静态变量,year为非静态变量
s1.year和s1.age是通过对象来调用age和year
而Student.age是通过类来调用age
一般静态变量都用类名来调用
静态变量可以被类中的所有实例共享
非静态变量不可以用类调用,只可以通过实例调用。
学习多线程的时候会进一步学习。
方法与属性同理
public class Student {
private static int age;
private double year;
public static void main(String[] args) {
go();
Student.go();
new Student().run();
}
public void run(){
go();
}
public static void go(){
}
}
静态方法go可以直接被调用,也可以在非静态方法中被调用;非静态方法必须先new一个实例才可以被调用。
静态代码块
public class person{
{
//代码块(匿名代码块)
}
static{
//静态代码块
}
}
静态代码块,代码块和构造器的先后顺序
public class Main {
//第二:可以用来赋初始值
{
System.out.println("代码块");
}
//第一:只执行一次
static{
System.out.println("静态代码块");
}
//第三
public Main() {
System.out.println("构造器");
}
public static void main(String[] args) {
Main m1 = new Main();
System.out.println("========================");
Main m2 = new Main();
}
}
运行结果
当一个类被final定义后,就无法有子类,相当于断子绝孙