静态
- 静态变量,也叫类变量,可以通过对象.静态变量 访问不推荐使用
public class Test01 {
public static void main(String[] args) {
//1.访问静态变量
//类名.变量名
Student.name = "张三";
//2.访问实例变量
//对象名.变量名
Student s1 = new Student();
s1.age = 20;
//不推荐用 对象.静态变量 这种形式访问
//System.out.println(s1.name + " " + s1.age);
System.out.println(Student.name + " " + s1.age);
Student s2 = new Student();
System.out.println(s2.name);
}
}
1.类方法:static修饰的方法,可以被类名调用,是因为它是随着类的加载而加载的;
所以类名直接就可以找到static修饰的方法
2.实例方法:非static修饰的方法,需要创建对象后才能调用,是因为实例方法中可能会访问实例变量,而实例变量需要创建对象后才存在。
所以实例方法,必须创建对象后才能调用。
public class Student {
double score;
//静态方法,也叫类方法,需要通过 类名.方法名 去调用
public static void printHello(){
System.out.println("Hello...");
System.out.println("Hello...");
}
//成员方法,也叫实例方法,需要通过 对象.方法名 去调用
public void say(){
System.out.println("say" + score);
}
public void m1(){
System.out.println("m1..........");
this.say();
say(); //省略了this而已
}
}
3.工具类是static用得最频繁的场景
public class MyUtil {
//不允许外部通过构造器造对象
private MyUtil(){}
//工具类方法 都是静态的
public static String generateValidateCode(int length){
String data = "0123456789";
String code = "";
Random r = new Random();
for (int i = 0; i < length; i++) {
//每次获取一个随机下标对应的数字
int index = r.nextInt(data.length());
char c = data.charAt(index);
code += c;
}
return code;
}
}
- 静态代码块,随着类的加载而执行,而且只执行一次,在静态属性之后执行
- 实例代码块每次创建对象之前都会执行一次
public class Student {
static String name = "张三";
static String school = "家里蹲";
static {
//在静态属性之后执行
System.out.println("静态代码块执行了~~~~");
school = "家里蹲";
}
}
public class Test06 {
public static void main(String[] args) {
System.out.println(Student.name);
System.out.println(Student.school);
Student s1 = new Student();
Student s2 = new Student();
Student s3 = new Student();
}
}
控制台输入的内容为: