Java——static关键字

本文深入解析Java中静态成员的概念,包括静态变量和静态方法的特点、使用限制及与对象的关系。阐述了静态成员如何随类加载而存在,被所有对象共享,并可直接通过类名调用。同时,强调了静态方法只能访问静态成员,且不可使用this和super关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static的存在是因为,当多个对象的某个成员都相同时,堆内存中会比较占空间;使用static,将此被“共享”的成员拿出来,单独存放在方法区。 

class Dog {
    static String name="guana";//定义静态变量name
    int age;
}
class DogDemo{
    public static void main(String[]  args){
        System.out.println(Dog.name);//静态变量可直接被类名调用(此时无对象产生)
    }
}
/*
代码运行结果:
guana
*/

static特点:

1)随类的加载而加载(随类的消失而消失,说明其生命周期最长);此特点会限制其使用(见下方注意)

2)优先于对象存在

3)被所有对象共享

4)可直接被类名调用

 

注意:

1)静态方法只能访问静态成员

     非静态方法即可访问静态,也可访问静态;// ∵静态方法在类创建时就出现,而非静态成员随对象创建而出现。类先于对象存在,∴静态方法无法访问“当时”还未存在的非静态成员。

2)静态方法中不可以定义this、super等关键字。  //同理,this指代对象,静态方法出现时,对象还未出现。

class Dog {
    String name="guana";
    int age;
    static void speak(){
        System.out.println(name);
    }
}
class DogDemo{
    public static void main(String[]  args){
       Dog D1=new Dog();
       D1.speak();
    }
}
/*
代码报错:
Error:(5, 28) java: 无法从静态上下文中引用非静态 变量 name
*/
//即 静态方法 speak()不能调用非静态成员name

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值