static关键字
static 可以修饰属性、方法、代码块、内部类。
static修饰属性:
package com.demo4; /** * @Auther:liu * @Date:-14:24:35 * @Description:IntelliJ IDEA * @Version:1.0 */ public class Test { int id; static int sid; //这是一个main方法:是程序的入口 public static void main(String[] args) { Test t1 = new Test(); t1.id=10; t1.sid=10; Test t2 = new Test(); t2.id=20; t2.sid=20; Test t3 = new Test(); t3.id=30; t3.sid=30; System.out.println(t1.id); System.out.println(t2.id); System.out.println(t3.id); System.out.println(t1.sid); System.out.println(t2.sid); System.out.println(t3.sid); }
}
内存分析

一般官方的推荐访问方式:类名.属性名访问

static修饰属性总结:
在类加载的时候一起加载如方法区的静态域中
先于对象存在
访问方式:对象名.属性名 类名.属性名
static修饰属性的应用场景
某些特定的数据想要在内存中共享,只有一块---》这个情况下就可以用static修饰;
package com.demo4; /** * @Auther:liu * @Date:-16:00:49 * @Description:IntelliJ IDEA * @Version:1.0 */ public class MsbStudent { int id; String name; static String school; //这是一个main方法:是程序的入口 public static void main(String[] args) { MsbStudent.school="海淀中学"; MsbStudent s1=new MsbStudent(); s1.id=1; s1.name="张三"; // s1.school="海淀中学"; MsbStudent s2=new MsbStudent(); s2.id=2; s2.name="李四"; // s2.school="海淀中学"; System.out.println(s1.school); } }
属性:
静态属性(类变量)
非静态属性:(实例变量)
static修饰方法package com.demo4;
/** * @Auther:liu * @Date:-17:11:01 * @Description:IntelliJ IDEA * @Version:1.0 */ public class Demo { int id; static int sid; public void a(){ System.out.println(id); System.out.println(sid); System.out.println("------a"); } //1.static public 都是修饰符,并列的没有先后顺序,先写谁后写谁都行 static public void b(){ //System.out.println(this.id);//4.在静态方法中不能使用this关键字 //a();//3.在静态方法中不能访问非静态方法 //System.out.println(id);//2在静态方法中不能访问非静态的属性, System.out.println(sid); System.out.println("------b"); } //这是一个main方法:是程序的入口 public static void main(String[] args) { //5 非静态的方法可以用对象名.方法名去调用 Demo d=new Demo(); d.a(); //6.静态方法可以用 对象名.方法名调用 也可以用类名.方法名(推荐) Demo.b(); d.b(); } }
浙公网安备 33010602011771号