static

本文详细介绍了Java中的static关键字,包括其概念、特点、访问特点以及静态变量和静态方法。static关键字使得成员变量和方法在类加载时即存在,被所有对象共享。静态变量可以直接通过类名访问,而静态方法只能访问静态成员。此外,还探讨了静态常量的使用,强调了静态成员的内存管理和生命周期。
摘要由CSDN通过智能技术生成
4.6 static (应用)
static 的概念
static 关键字是静态的意思,可以修饰【成员方法】,【成员变量】
static 修饰的特点
1. 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件
2. 可以通过类名调用当然,也可以通过对象名调用 【推荐使用类名调用】
(比如有类mm两个对象,a和b,有一个静态变量demo)

4.7 static 访问特点(掌握)
static的访问特点
非静态的成员方法
能访问静态的成员变量
能访问非静态的成员变量
能访问静态的成员方法
能访问非静态的成员方法
静态的成员方法
能访问静态的成员变量
能访问静态的成员方法
总结成一句话就是:
静态成员方法只能访问静态成员
mm.demo=10;
a.demo=10;
b.demo=10;
调用以上三句任意一句,最终所有对象的demo都为10

static 的特点:

  1. 随着类的加载而被加载;

  2. 优先于对象存在;

  3. 被所有对象共享;

  4. 被 static 所修饰的变量或者方法会储存在数据共享区;

  5. 被 static 修饰后的成员变量只有一份。

静态变量

被 static 修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。静态变量可以直接通过类名.静态变量名称调用,虽然也能通过对象来访问静态变量和方法,但为了可读性,方便分辨静态变量,应该通过类名来调用。

例子:

 
  
  1. public class Person{
    static int a = 10;
    
    public static void main(String[] args) {
    System.out.print(Person.a);
    
    }
    }
    执行结果:
    
    
    10

静态变量和实例变量的区别:

  1. 生命周期的不同; 成员变量随着对象的创建而存在随着对象的回收而释放,静态变量随着类的加载而存在随着类的消失而消失。

  2. 调用方式不同; 成员变量只能被对象调用,静态变量可以被对象调用,也可以用类名调用。(推荐用类名调用)

  3. 数据存储位置不同; 成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据,静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

  4. 内存中的数量不同。 每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。静态变量由于不属于任何实例对象,是属于类的,所以在内存中只会有一份,在类的加载过程中,JVM 为静态变量分配一次内存空间。

静态方法

被 static 修饰的成员方法叫做静态方法,也叫做类方法,静态方法可以直接通过类名.静态方法名称调用(同样也可以用对象.方法的方式),不属于对象的。

 
  
  1. public class Person{
    public static void sleep (){
    System.out.print("我要睡觉了");
    }
    
    public static void main(String[] args) {
    System.out.print(Person.sleep());
    
    }
    }
    执行结果:
    
    
    我要睡觉了

要注意的是静态的可以访问静态的,但是不能访问非静态的成员属性和方法,这很好理解,因为 static 修饰的方法是属于类的,如果去直接使用对象的成员变量,它会不知所措(不知该使用哪一个对象的属性)。

静态常量

在 Java 中,final 表示不变,所以用它修饰的量表示常量,例如:

 
  
  1. final double pi = 3.1415;

在 Java 中,常量一般会用 static 进行修饰,变成静态变量的,这是为什么呢?

在创建类的多个对象时,用 static 修饰的常量在内存中只有一份拷贝。不用 static 修饰,则每创建一个对象会拷贝一份到内存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值