栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

static关键字的用法([java]static关键字的四种用法)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

static关键字的用法([java]static关键字的四种用法)

1 从JVM的角度

方法区是所有线程共享的内存区域,它用于存储已被Java虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

package com.zs.entity;

public class People {
    // 静态变量
    static String firstName;
    // 成员变量
    String lastName;
    // 成员方法
    public void showName_1() {
        System.out.println(firstName + lastName);
    }

    // 静态方法:
    public static void showName_2() {
        // Non-static field 'lastName' cannot be referenced from a static context ? 这里给出原因:
        // 类变量是在准备阶段完成内存分配与初始化的,而实例变量是在(下一个阶段)初始化阶段
        System.out.println(firstName + lastName);
    }

    // 静态方法
    public static void showName_3() {
        System.out.println(firstName);
    }

    public static void main(String[] args) {
        People people_1 = new People();
        People.firstName = "zhao-";
        people_1.lastName = "instance";
        people_1.showName_1(); // zhao-instance

        People.showName_3(); // zhao- 这里:类直接访问静态方法

        People people_2 = new People();
        people_2.showName_1(); // zhao-null 这里引出一个问题:对象的实例变量(people_1.lastName = "instance";)是对象私有的,不能被其他实例对象共有。

    }
}

特点:

1、static是一个修饰符,用于修饰成员:(成员变量,成员函数) ;static修饰的成员变量称之为静态变量或类变量。
2、static修饰的成员被所有的对象共享。
3、static优先于对象存在,因为static的成员随着类的加载就已经存在。
4、static修饰的成员多了一种调用方式,可以直接被类名所调用,(类名.静态成员)。
5、static修饰的数据是共享数据,对象中的存储的是特有的数据。

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

1、生命周期的不同:
成员变量随着对象的创建而存在随着对象的回收而释放;
静态变量随着类的加载而存在随着类的消失而消失。
2、调用方式不同:
成员变量只能被对象调用。
静态变量可以被对象调用,也可以用类名调用。推荐用类名调用
3、别名不同:
成员变量也称为实例变量。
静态变量称为类变量。
4、数据存储位置不同:
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号