java之static关键字

static关键字特点

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
class Person{
	String name;
	static String country;
}
class static{
 public static void main(String[] args){
	Person p1=new Person();
	p1.country="中国";
	Person p2=new Person();
	System.out.println(p2.country);    //由于country为静态所以输出p2.country的值同样为中国
	}
}
  • 可以通过类名调用
class Person{
	String name;
	static String country;
}
class static{
 public static void main(String[] args){
	Person.country="中国";    //合法
	Person.name="日本";       //不合法  
	}
}
  • 静态修饰的内容一般与类相关,类成员。
  • 共性用静态,特性不用静态

static关键字的注意事项

  • 在静态方法中是没有this关键字的。
    在内存中静态是随着类的加载而加载,也就是说在对象存在之前静态就开辟了内存空间,而this是随着对象创建而存在的,静态优先于对象存在。

  • 静态方法只能访问静态成员变量和静态成员方法,非静态方法既可以访问静态成员也可以访问非静态成员。
    静态是优先于对象存在的,存在着静态方法已经加载但是没有创建对象的情况,这种情况下的非静态成员变量和非静态成员方法都是没有加载的,所以会出现调用错误。为了避免这种调用错误就规定静态只能访问静态。

class text_static{
	int no_static=10;
	static int y_static=20;
    
    public void print1(){
    System.out.println(no_static);     //正确访问
    System.out.println(y_static);      //正确访问
    }
    static public void print2(){
    System.out.println(no_static);      //错误访问,静态不能访问非静态
    System.out.println(y_static);       //正确访问
    }
}

静态变量和成员变量的区别

  1. 所属不同
    静态变量属于类,称为类变量
    成员变量属于对象,称为对象变量

  2. 内存中位置不同
    静态变量存储于方法区的静态区
    成员变量存储于堆内存

  3. 内存中存活时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失

  4. 调用不同
    静态变量可以通过类名和对象名调用
    成员变量只能通过对象名调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值