关于Java中static关键字的用法以及从内存角度解析

在Java中,static可以用来修饰成员变量和成员方法。

修饰成员变量,称为静态成员方法

修饰静态方法,称为静态成员方法

搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分布是怎样的,这样的话,理解起来会事半功倍的。

代码测试如下:

public class Person {
    static String firstName;
    String lastName;

    public void showName(){
        System.out.println(firstName+lastName);
    }

   public static void viewName(){
      System.out.println(firstName);
  }

}
public static void main(String[] args) {
    Person p =new Person();
    //p.firstName="张";
    Person.firstName = "张";
    p.lastName="三";
    p.showName();
    Person p2 =new Person();
    //p2.firstName="王";
    Person.firstName="王";
    p2.lastName="隔壁";
    p2.showName();
}

运行结果:

张三       王隔壁

在内存的结果分析如下:

静态成员变量加载在方法区,声明一次,即可被所有类对象所使用

非静态成员变量加载在堆内存,是每个对象内部维护的独立变量,互相之间没有影响

具体测试如下:

用法一:Static修饰成员变量

(1)修饰成员变量,叫做静态成员变量

作用:静态成员变量被当前所有类对象所共享

内存:存储在方法区内

调用:A:类名.静态成员变量     推荐使用

B:对象.静态成员变量      不正规

public static void main(String[] args) {
    Person p =new Person();
    //p.firstName="张";
    Person.firstName = "张";
    p.lastName="三";
    p.showName();
    Person p2 =new Person();
    //p2.firstName="王";
    Person.firstName="王";
    p2.lastName="隔壁";
    p2.showName();
}
运行结果:
张三       王隔壁

(2)修饰成员方法,叫做静态成员方法

作用:静态成员方法中只能直接的使用静态成员方法和调用其他静态成员方法

调用:A:类名.静态方法   推荐使用

B:对象.静态方法     不正规

public static void main(String[] args) {
    Person p =new Person();
    //p.firstName="张";
    Person.firstName = "张";
    p.lastName="三";
    p.showName();
    Person p2 =new Person();
    //p2.firstName="王";
    Person.firstName="王";
    p2.lastName="隔壁";
    Person.viewName();
}
运行结果:
张三
王

区别:非static修饰的成员变量和成员方法

(1)非static修饰的成员变量      也称实例变量

作用:是每个对象内部维护的独立变量,互相之间没有影响

内存:存储在堆内存中

调用:对象.成员变量          唯一方式

(2)非static修饰的成员方法      也称实例方法

作用:方法中可以使用静态和非静态的成员方法和成员变量

调用:对象.成员方法

(0)

相关推荐

  • Java中的static关键字和new关键字作用介绍

    一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...

  • java中static关键字

    static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3.s ...

  • Java中static关键字的使用

    static关键字 static表示"静态"的意思,可以用来修饰成员变量和成员方法,static的主要作用在于创建独立于具体对象的域变量或者方法. 简单理解: 被static关键字 ...

  • Java 中的关键字

    Java 中有多少个关键字,有大小写之分吗? Java 中有 48 个关键字在使用 + 两个保留关键字未使用,共 50 个关键字. Java 关键字全部都由是小写组成. Java 中保留关键字分别是哪 ...

  • Java中this关键字的使用

    一,表示类中属性 1,没有使用this的情况   class Person{ // 定义Person类 private String name ; // 姓名 private int age ; // ...

  • 从零开始学Java(十三)Java中this关键字的使用

    ✔上一篇Java零基础系列文章我们说到了Java封装,今天这篇文章的主要目标是带大家

  • java中final关键字的作用

    final关键字可以用于三个地方.用于修饰类.类属性和类方法. 被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写): 对于被final关键字修饰的类属性而言 ...

  • java中BigDecimal加减乘除基本用法

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数. 在实际应用中,需要对更大或者更小的数进 ...

  • java中的关键字

    static 静态的 定义在类里面的带有static的变量叫做类变量 ​他不属于类里面的任何一个对象,他属于这个类,可以用: 类名字.该变量 任何一个对象名.该变量 ​来调用改变它,这个变量只有一份, ...

  • Java中this关键字的详解

    在java的学习中,当接触到类这一章的时候,就会避免不了的接触到this关键字. 首先,this关键字指向的是当前对象的引用 作用: this.属性名称 指的是访问类中的成员变量,用来区分成员变量和局 ...