`
xuyuanshuaaa
  • 浏览: 394896 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java static静态变量

阅读更多
共享静态变量存储空间

我们知道类中的静态变量(Static Variable)在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,因此在某些时候为了节省系统内存开销、共享资源,将类中的一些变量声明为静态变量,通过下面的例子,你可以发现合理应用静态变量带来的好处:
public class WeekB{

      static class Data {

             private int week;

             private String name;

             Data(int i, String s) {

                   month = i;

                   name = s;

             }

      }

      static Data weeks[] = {

             new Data(1, "Monday"),

             new Data(2, "Tuesay"),

             new Data(3, "Wednesday"),

             new Data(4, "Thursday"),

             new Data(5, "Friday"),

             new Data(6, "Saturday")

             new Data(7, "Sunday")

      };

      public static void main(String args[]) {

             final int N = 200000;

             WeekB weekinstance;

             for (int i = 1; i <= N; i++){

                   weekinstance = new WeekB ();

             }

     }

}    

请注意在类WeekB中,在Data weeks[]之前添加了static关键字,将该对象变量声明为静态的,因此当你创建200 000个WeekB对象时系统中只保存着该对象的一份拷贝,而且该类的所有对象实例共享这份拷贝,这无疑节约了大量的不必要的内存开销,同时实现了要完成的系统功能。

那么是不是我们应该尽量地多使用静态变量呢?其实不是这样的,因为静态变量生命周期较长,而且不易被系统回收,因此如果不能合理地使用静态变量,就会适得其反,造成大量的内存浪费,所谓过犹不及。因此,建议在具备下列全部条件的情况下,尽量使用静态变量:

(1)变量所包含的对象体积较大,占用内存较多。

(2)变量所包含的对象生命周期较长。

(3)变量所包含的对象数据稳定。

(4)该类的对象实例有对该变量所包含的对象的共享需求。

如果变量不具备上述特点建议你不要轻易地使用静态变量,以免弄巧成拙。
分享到:
评论

相关推荐

    JAVAStatic静态变量.doc

    Java中的`static`关键字是用来声明静态变量或静态方法的,它是面向对象编程中非常关键的一个概念。静态变量属于类,而不是类的实例,这意味着它们在内存中只有一份拷贝,所有的类实例共享这个相同的变量。当我们声明...

    static静态变量使用@Value注入方式.md

    ### static静态变量使用@Value注入方式 #### 一、引言 在Java开发中,特别是基于Spring框架的应用程序中,开发者经常会遇到需要为类中的成员变量注入外部配置值的情况。Spring框架提供了多种注入机制,其中`@Value...

    Java中static静态变量的初始化完全解析

    Java中的静态变量(static变量)是在类加载时初始化的,而不是在对象创建时。静态变量属于类,而不属于任何特定的对象,因此它们是共享的,所有类实例都可以访问。了解静态变量的初始化顺序对于理解和避免潜在的编程...

    static 静态变量加载

    statilocal java 静态变量和静态块加载顺序,静态变量和同名静态变量块加载的顺序。

    Java中static变量作用和用法步骤

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。  被static修饰的成员变量和成员方法独立于该类的任何对象。也是说,它不...

    Java中static静态变量.pdf

    在Java编程语言中,`static`关键字是用来声明静态变量和静态方法的,这些成员属于类本身,而不属于类的任何实例。静态变量,也被称为类变量,是存储在内存的类区域,而实例变量则是存储在堆内存中,每个对象实例都有...

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    Java中的Static块与静态方法

    System.out.println("静态变量值: " + staticVar); } } ``` 在这个例子中,当程序启动时,首先会执行静态块,将`staticVar`初始化为10,然后在`main`方法中调用静态方法`staticMethod`。这清晰地展示了静态块和...

    Java static静态初始快

    当我们讨论“Java static静态初始化块”时,我们关注的是如何在类加载时执行特定的初始化代码。 首先,让我们理解`static`关键字的基本概念。`static`在Java中用于声明类变量或静态方法,这些变量和方法不需要创建...

    Java中static变量作用和用法详解

    当你在类中声明一个静态变量时,Java虚拟机(JVM)在类加载时就会为它分配内存,因此,你可以通过类名直接访问静态变量,无需创建类的实例。例如: ```java public class MyClass { static int count = 0; } ...

    Java中静态(static)变量、方法与实例变量、方法的规范-附件资源

    Java中静态(static)变量、方法与实例变量、方法的规范-附件资源

    java中的static变量,方法,代码块

    `static`变量,亦称为静态变量或类变量,与实例变量相对。其最显著的特点在于,无论创建多少个该类的实例,`static`变量在内存中仅存在一份拷贝,这意味着所有实例共享同一份变量值。这不仅节约了内存资源,还便于...

    Java static(静态变量)和私有化功能与用法分析

    Java static(静态变量)和私有化功能与用法分析 Java 中的 static(静态变量)和私有化功能是两个非常重要的概念,它们在编程中扮演着关键的角色。下面我们将深入探讨 Java static(静态变量)和私有化功能的相关...

    java-静态变量方法块

    例如,在类`EX3_1`中定义的`private static int sa`就是一个静态变量,无论创建多少个`EX3_1`的实例,`sa`的值都是一样的。在单例模式中,静态变量常用于确保类只有一个实例存在。 静态代码块是一段在类加载时执行...

    springboot 使用yml配置文件给静态变量赋值教程

    由于我们有一个静态工具类`ClickHouseUtil`,其中的方法依赖于静态变量,所以我们不能直接使用`@Value`注解为静态变量赋值。Spring框架不允许在静态字段上直接注入值,因为它不支持实例化静态对象。 为了解决这个...

    Java中static变量的几个优缺点

    Java中static变量的几个优缺点 简单介绍static

    Java static修饰成员变量

    但当成员变量前加上`static`关键字,这个变量就称为静态变量,或者叫类变量。静态变量不会为每个对象实例创建副本,而是所有实例共享同一份存储空间。这意味着,无论创建多少个对象,静态变量都只有一个实例,所有...

    静态变量的导入以及集合的运用

    在Java中,可以通过`import static`语句来直接导入一个类中的静态成员(包括静态变量和静态方法)。这种方式可以避免重复输入类名,使得代码更加简洁易读。例如,在给定的代码片段中: ```java import static java....

    售票员大战.zip(Java运用静态变量多人销售票数进行分类)

    Java之静态变量是编程中的一个重要概念,特别是在多线程环境下处理共享数据时。在Java中,静态变量属于类,而不是类的实例。这意味着无论创建了多少个对象,静态变量都只有一份拷贝,所有对象都能访问它。这个特性...

Global site tag (gtag.js) - Google Analytics