static能干嘛 class Person { String name; int age; String country; public Person () {} public Person (String name,int age) { this .name = name; this .age = age; } public Person (String name,int age,String country) { this .name = name; this .age = age; this .country = country; } public void show () { System.out.println("姓名:" +name+",年龄:" +age+",国籍:" +country); } } class PersonDemo { public static void main (String[] args) { Person p1 = new Person("邓丽君" ,16 ,"中国" ); p1.show(); Person p2 = new Person("杨幂" ,22 ,"中国" ); p2.show(); Person p3 = new Person("凤姐" ,20 ,"中国" ); p3.show(); } }
如果是这样呢?
使用static
I修饰成员变量 class Person { String name; int age; static String country; public Person () {} public Person (String name,int age) { this .name = name; this .age = age; } public Person (String name,int age,String country) { this .name = name; this .age = age; this .country = country; } public void show () { System.out.println("姓名:" +name+",年龄:" +age+",国籍:" +country); } } class PersonDemo { public static void main (String[] args) { Person p1 = new Person("邓丽君" ,16 ,"中国" ); p1.show(); Person p2 = new Person("杨幂" ,22 ); p2.show(); Person p3 = new Person("凤姐" ,20 ); p3.show(); } }
发现命名没有给后面两个变量赋值中国
,缺依然有值输出,引入了static
后就可以省事儿多了
static
让数据访问更方便可以直接通过类名
访问
class Outer { private int num = 10 ; private static int num2 = 100 ; public static class Inner { static int num3 = 1000 ; public void show () { System.out.println(num2); } public static void show2 () { System.out.println(num2); } } } class DemoTest { public static void mai Outer.Inner oi = new Outer.Inner(); oi.show(); Outer.Inner.show2(); System.out.println(Outer.Inner.num3); } }
static特点 那么static
的特点是啥
它可以修饰成员变量,还可以修饰成员方法
随着类的加载而加载
优先于对象存在
被类的所有对象共享
可以通过类名调用
其实它本身也可以通过对象名调用。
推荐使用类名调用。(就是为了让外界通过类名访问,一种暴露行为
)
注意事项
在静态方法中是没有this关键字的
静态是随着类的加载而加载,this是随着对象的创建而存在。
静态比对象先存在。
静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可是是静态的成员方法,也可以是非静态的成员方法。