static(静态)关键字
class Person{
String name; //成员变量,实例变量(实例中的变量)
//共享数据出现在对象之前
static String country="cn"; //对象的共享数据,称为静态变量,也叫类变量
public void show(){ //如果show方法加上static修饰,那show方法里就无法使用this或super
System.out.println(Person.country+":"+this.name); //(Person.) 可以省略,因为是在本类中调用
}
}
/*
static的特点:
1、static是一个修饰符,用于修饰成员
2、static修饰的成员被所有的对象所共享
3、static优先于对象存在,因为static的成员随着类的加载就已经存在
4、static修饰的成员多了一种调用方式,可以直接被类名所调用(方法:类名.静态(static)成员)
5、static修饰的数据是共享数据,对象中存储的是特有数据
成员变量和静态变量的区别
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的被回收而释放
静态变量随着类的加载而存在,随着类的消失而消失,一般情况下虚拟机结束,类就消失
2、调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,也可以被类名调用(建议用类调用,方便阅读和区分)
3、别名不同
成员变量也叫实例变量
静态变量也叫类变量
4、数据的存储位置不同
成员变量数据存储在堆内存的对象的中,所以也叫对象的特有数据
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
静态使用的注意事项:
1、静态方法只能访问静态成员(成员变量和函数)。非静态既可以访问静态,也可以访问非静态
2、静态方法中不可以使用this或者super关键字,因为静态方法没有对象,所以this没办法使用。
3、主函数是静态的
*/
class StaticDemo{
int num=4;
public static void main(String[] args){
// Person p=new Person();
// p.name="小旺";
// p.show();
// System.out.println(p.country); //static共享数据,可以直接被类访问
// System.out.println(Person.country);
// Person.show();
new StaticDemo().show(); //new StaticDemo表示:类的对象
}
public void show()
{
System.out.println(num);
}
}