一、static
1. static的使用
public class StaticTest {
public static void main(String[] args) {
CStudent stu1 = new CStudent(18,"小六");
CStudent stu2 = new CStudent(20,"小牛");
System.out.println(stu1);//18的小六,from Chinese
System.out.println(stu2);//20的小牛,from Chinese
}
}
class CStudent {
private int age;
private String name;
private static String address = "Chinese"; //一样的地方,用static修饰
//构造方法
public CStudent() {
}
public CStudent(int age,String name) {
this.age = age;
this.name = name;
}
//get、set方法
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//tostring方法
public String toString() {
return getAge() + "的"+getName() + ",from " + CStudent.address;
}
}
使用static关键字修饰变量:
- 当类中所产生的对象的属性都拥有相同的值,这样的变量我们需要用static修饰,减少代码量,节省空间。
- 因为它是类级别的,我们使用类名.变量名来访问,如 CStudent.address。
- 静态变量存在于方法区内存中,在类加载的时候就存在了,先赋值,main()方法后执行。
2. 静态代码块
类完整的内容: 成员属性/静态属性 + 成员方法/静态方法 + 构造方法
public class StaticTest {
报错:Cannot make a static reference to the non-static field i,无法从静态上下文中引用非静态变量 i
private int i = 100;
静态代码块:
static {
System.out.println(i);
Java语句;
}
}
成员属性只有当构造方法执行的时候才会第一次被赋值。构造方法只有在main方法执行之后,才会被执行。main方法压栈是在类加载完成之后才压栈。
public class StaticTest
{
private int i = 100;