0

0

java静态变量是什么

青灯夜游

青灯夜游

发布时间:2021-05-08 12:01:04

|

23495人浏览过

|

来源于php中文网

原创

在java中,静态变量指的是被static修饰的类的变量;静态变量被所有类实例对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化。

java静态变量是什么

本教程操作环境:windows7系统、java8版、DELL G3电脑。

1. JVM运行时数据区域

这里写图片描述

  • Java堆存放几乎所有的对象实例,被所有线程共享
  • 方法区(永久代)与Java堆一样,是各个线程共享的内存区域,它用于存储已经被虚拟机加载类的类信息、常量、静态变量(static variable)等

2. static变量

被static修饰的类的变量,也称为静态变量。非静态变量也称为实例变量 

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

立即学习Java免费学习笔记(深入)”;

  • 静态变量被所有类实例对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化。
  • 实例变量是实例对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个实例对象拥有的副本互不影响
public class MyStatic {
    // 静态变量
    private static int index = 0;

    // 实例变量
    private int count = 0;

    public void inc() {
        index++;
        count++;
    }

    public String  get() {
        return "静态变量index = " + index + ",  实例变量count = " + count;
    }
}
/**
 * index是静态变量
 * count是实例变量
 * */
public class StaticVariableTest {

    public static void main(String[] args) {
        MyStatic myStatic1 = new MyStatic();
        MyStatic myStatic2 = new MyStatic();
        MyStatic myStatic3 = new MyStatic();

        myStatic1.inc();
        System.out.println("myStatic1的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get() + "\n");

        myStatic2.inc();
        System.out.println("myStatic2的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get() + "\n");

        myStatic3.inc();
        System.out.println("myStatic3的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get());
    }
}

运行结果: 

这里写图片描述

可以看出:

企业建站系统2.0
企业建站系统2.0

系统是针对于企业用户量身打造的一款简单的程序,只要你懂一点html语言你就可以轻轻松松的创建一个自己的企业官网,品牌官网、为了更好的让各位开发者可以简单的制作自己满意的模板,我们官网论坛提供了模板变量(模板标签)可以让大家轻松制作自己的企业官网。 更新说明:修复专题页面添加产品不显示问题 功能列表:1.设置中心2.分类栏目3.关于我们4.联系我们5.招聘中心6.留言方式7.支持伪静态8.支持生成静

下载
  • 静态变量index是多个对象实例共享的
  • 实例对象count是多个对象实例私有的
myStatic1的index、count增加1:
myStatic1的静态变量index = 1,  实例变量count = 1
myStatic2的静态变量index = 1,  实例变量count = 0
myStatic3的静态变量index = 1,  实例变量count = 0

myStatic2的index、count增加1:
myStatic1的静态变量index = 2,  实例变量count = 1
myStatic2的静态变量index = 2,  实例变量count = 1
myStatic3的静态变量index = 2,  实例变量count = 0

myStatic3的index、count增加1:
myStatic1的静态变量index = 3,  实例变量count = 1
myStatic2的静态变量index = 3,  实例变量count = 1
myStatic3的静态变量index = 3,  实例变量count = 1

这里写图片描述

3. static变量误区

3.1 static不能作用于局部变量

  • C/C++中static是可以作用域局部变量的
  • Java中static是不允许用来修饰局部变量。
    不要问为什么,这是Java语法的规定。
    这里写图片描述

3.2 this可以访问静态变量

静态变量虽然独立于对象,但是不代表不可以通过对象实例去访问,所有的静态方法和静态变量都可以通过对象实例访问(只要访问权限足够)。
this表示当前对象实例,而static静态变量被所有对象所共享,所以可以通过this访问静态变量

public class StaticVariable {
    public static int index = 1;

    public static void main(String[] args) {
        StaticVariable staticVariable = new StaticVariable();
        staticVariable.get();
    }

    private void get() {
        int index = 2;
        System.out.println(this.index);
    }
}

运行结果: 

这里写图片描述

3.3 static不会改变类成员的访问权限

Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字

public class MyStatic {
    public static int index1 = 1;

    // 静态变量
    private static int index2 = 0;
}

public class StaticVariableTest {

    public static void main(String[] args) {
        System.out.println(MyStatic.index1);
        System.out.println(MyStatic.index2);
    }
}

这里写图片描述

相关视频教程推荐:Java视频教程

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

842

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

740

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

400

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

C# 教程
C# 教程

共94课时 | 7.3万人学习

Java 教程
Java 教程

共578课时 | 49.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号