static修饰成员变量表示该成员变量只在内存中只存储 一份,可以被共享访问、修改
格式
package com.itheima.d1_static; import javax.jws.soap.SOAPBinding; public class StaticFieldDemo1 { public static void main(String[] args) { //1.类名.静态成员变量 System.out.println(User.onlineNumber); //2.构造对象调用 User user=new User(); user.onlineNumber++; System.out.println(user.onlineNumber); } }
package com.itheima.d1_static; public class User { /* 注意:static修饰静态变量,静态成员变量,只在内存中存一份,可以被共享 */ public static int onlineNumber=161; }
static跟实例变量的区别
package com.itheima.d1_static; public class User { /* 注意:static修饰静态变量,静态成员变量,只在内存中存一份,可以被共享 */ public static int onlineNumber=161; /** * 实例成员变量,无static修饰,属于每个对象的,必须用对象名访问 */ private String name; private int age; public static void main(String[] args) { //1.类名.静态成员变量 System.out.println(User.onlineNumber); //2.构造对象调用 // User u =new User(); //u.onlineNumber++; //System.out.println(u.onlineNumber); //对象名.实例成员变量 User u =new User(); u.name="张三"; u.age=21; System.out.println(u.name); System.out.println(u.age); u.onlineNumber++; System.out.println(u.onlineNumber); System.out.println(User.onlineNumber);//推荐方式 //注意:同一个类中静态成员变量的访问可以省略类名 System.out.println(onlineNumber); } }
静态成员方法
package com.itheima.d1_static; public class Student { /** * 实例成员变量:无static修饰,属于对象 */ private String name; /** * 静态成员方法:有static修饰,归属于类,可以被共享 */ public static int getMax(int age1,int age2){ return age1>age2?age1:age2; } public static void main(String[] args) { //1.类名.静态成员方法名 System.out.println(Student.getMax(13, 3)); //注意:同一个类中,访问静态方法,类名可以省略不写 System.out.println(getMax(18, 59)); } }
package com.itheima.d1_static; public class Student { /** * 实例成员变量:无static修饰,属于对象 */ private String name; /** * 静态成员方法:有static修饰,归属于类,可以被共享 */ public static int getMax(int age1,int age2){ return age1>age2?age1:age2; } public void study(){ System.out.println(name+"在好好学习"); } public static void main(String[] args) { //1.类名.静态成员方法名 System.out.println(Student.getMax(13, 3)); //注意:同一个类中,访问静态方法,类名可以省略不写 System.out.println(getMax(18, 59)); //study();报错 //对象.实例方法 Student s =new Student(); s.name="张三"; s.study(); } }
总结:static使用类名或对象(不推荐)
实例对象或方法只能使用对象
static注意事项
1.静态方法只能访问静态成员,不能直接访问实例成员2.实例方法可以访问静态成员,也可以访问实例成员3.静态方法中不可以出现this关键字package com.itheima.d1_static; public class Test3 { /** * 静态成员 */ public static int onlineNumber=10; public static void test2(){ System.out.println("===2==="); } /** * 实例成员 */ private String name; public void run(){ System.out.println(name+"跑的快"); } //3.静态方法中不可以出现this关键字 public static void test3(){ // System.out.println(this); } //2.实例方法可以访问静态成员,也可以访问实例成员 public void go(){ System.out.println(Test3.onlineNumber); System.out.println(onlineNumber); test2(); System.out.println(name); run(); } //1.静态方法只能访问静态成员,不能直接访问实例成员 public static void test(){ System.out.println(Test3.onlineNumber); System.out.println(onlineNumber); test2(); //System.out.println(name);//不能直接访问实例成员 //run();//不能直接访问实例成员 } public static void main(String[] args) { //目标:理解static 访问相关的语法 } }