77_初识Java_static_学习
1、static修饰属性-静态属性或类变量
(1)、在类加载的时候一起加载入方法区中的静态域中
(2)、先于对象存在
(3)、访问方式:
对象名.属性名
类型.属性名 --- 推荐用这种
2、static修饰方法-静态方法
(1)、在类加载的时候一起加载入方法区中的静态域中
(2)、先于对象存在
(3)、访问方式:
对象名.方法名
类型.方法名 --- 推荐用这种
(4)、静态方法中不能访问非静态的属性
(5)、静态方法中不能访问非静态方法
(6)、静态方法中不能使用this
1、static修饰属性被所有对象共享
public class LearnStatic01 {
int id;
static int sid;
//程序的入口
public static void main(String[] args) {
LearnStatic01 s1=new LearnStatic01();
s1.id=1;
s1.sid=1;
LearnStatic01 s2=new LearnStatic01();
s2.id=2;
s2.sid=2;
LearnStatic01 s3=new LearnStatic01();
s3.id=3;
s3.sid=3;
System.out.println(s1.id);
System.out.println(s2.id);
System.out.println(s3.id);
System.out.println(s1.sid);
System.out.println(s2.sid);
System.out.println(s3.sid);
}
}
- 测试代码运行
2、尝试画内存图理解
3、static修饰的方法-静态方法
public class LearnStatic02 {
int id;
static int sid;
public void a(){
System.out.println(id);
System.out.println(sid);
System.out.println("========aaaa");
}
//public与static都是修饰符,没有先后之分
public static void b(){
//System.out.println(id);//静态方法中不能访问非静态的属性
//System.out.println(this.id);//静态方法中不能使用this
System.out.println(sid);
//a();静态方法中不能访问非静态方法
System.out.println("========bbbb");
}
//程序的入口
public static void main(String[] args) {
LearnStatic02 s=new LearnStatic02();
s.a();
s.b();
LearnStatic02.b();//静态方法可以用 类名.方法名 偶用
}
}