首先我们从 static 的字面意思来说起,static的字面意思是静态,从字面意思上面我们可以联想到静止不动的状态(本人是这样子理解的)。
static作为关键词通常用作修饰,我们用 static 可以修饰属性以及方法。
先放一段修饰属性的代码:
class two {
static int age=19;
}
class ches{
public static void main(String[] args) {
System.out.println(two.age);
}
}
可以看出来使用 static 修饰的属性,在测试类中不用调用 two 类就可以直接通过 two 类来使用到,
这是因为被 static 修饰的属性已经被存放到共享区里面了。简单的说就是没节操了,并且他攀上了他本身类的大腿,与其同生共死(two类在他就在),并且在测试类中可以直接通过类来调用
在放一段修饰方法的代码:
class two {
static int age=19;
public static void print() {
System.out.println("修饰方法");
}
}
class ches{
public static void main(String[] args) {
two.print();
}
}
跟上面的同理,也是可以直接通过类来调用
在给放一段代码
class two {
static int age=19;
public static void print() {
System.out.println("修饰方法");
}
}
class ches{
public static void main(String[] args) {
two t=new two();
t=null;
t.print();
System.out.println(t.age);
}
}
这是经过 static 修饰的方法与属性被放到共享区最鲜明的表示,我们可以看到把 two 类的地址存放到 t 中,然后把 t 赋值为空,按照规则来说已经调用不到 two 类中的任何方法与属性了,但是用static 修饰后就可以调用了
在放一段静态代码块语句:
class two {
static {
age=19;
System.out.println("静态代码块");
}
static int age;
public static void print() {
System.out.println("修饰方法");
}
}
class ches{
public static void main(String[] args) {
two t=new two();
t.print();
System.out.println(t.age);
}
}
其作用是给静态属性赋值且只会执行一次(在代码载入的时候执行,之后不再执行).
总结:被 static 修饰的属性以及方法在测试类中可直接通过类名来调用,且被static修饰后讲被放进共享区,与类同生共死。
注意:被 static 修饰的方法中如在测试类中被类名直接调用的话,其方法内的属性不能存在未被 static 修饰的属性,不然会报错。
扩展: static 通常与 final 一起用,表示这是最后的一个值,不可被更改。
这段时间一直在巩固基础,写也是总结一天所学重点。
笔记用