static关键字
关键字
被程序语言赋予特殊含义的单词,一般都小写,起修饰作用
static 被称为静态的,可以用来修饰类的属性、方法、代码块、内部类
特点
1.随着类的加载而加载 :创建的成员变量与类一块加载在方法块或元空间中,不随对象的创建而复制
2.优先于对象存在 :对象需要创建才能使用,静态修饰的成员变量方法不用创建对象就可以使用(见tset_1)
3.修饰的成员,被所有对象所共享
4.可不创建对象,直接被类调用 静态变量内存中只有一份,可以直接通过 类名.变量名(方法名) 直接调用 例如: Car.name
package com.ff.javaoop.lei2;
public class Chinese {
/* static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。
1.随着类的加载而加载 :与类一块加载在方法块或元空间中,不随对象的创建而复制
2.优先于对象存在:对象需要创建才能使用,静态修饰的成员变量方法不用创建对象就可以使用(见tset_1)
3.修饰的成员,被所有对象所共享
4.可不创建对象,直接被类调用 Chinese.country
*/
String name;
int age;
String id;
static String country="中国"; //static修饰成员变量
/*
非静态方法变量可以包含成员变量和静态变量
静态方法中变量也只能是静态的,不能包含成员变量
*/
static int piao=15; //定义静态的成员变量
public static void Maipiao(){
piao=piao-1;
System.out.println("卖票一张 剩余"+piao);
//System.out.println(name); //改部分不正确,因为name为非静态的成员变量,在加载此静态方法时,未创建对象并对name赋值,name不存在
}
}
测试类
package com.ff.javaoop.lei2;
public class test_Chinese {
public static void main(String[] args) {
System.out.println(Chinese.country); //tese_1 static静态类修饰的成员变量优先于对象存在,即对象没有创建时也可以调用
Chinese ls=new Chinese();
ls.name="李四";
ls.age=19;
ls.id="中国";
System.out.println(ls.name+" "+Chinese.country+" "+ls.age+" "+ls.id);
Chinese zs=new Chinese();
zs.name="张三";
zs.age=20;
zs.id="中国";
System.out.println(ls.name+" "+Chinese.country+" "+ls.age+" "+ls.id);
Chinese.Maipiao(); //静态方法的测试 类名.变量名 直接访问
Chinese.Maipiao();
Chinese.Maipiao();
}
}
运行结果
中国
李四 中国 19 中国
李四 中国 19 中国
卖票一张 剩余14
卖票一张 剩余13
卖票一张 剩余12