# JAVA类的静态变量存储位置
在Java中,静态变量是属于类的变量,而不是属于实例的变量。它在内存中只有一份拷贝,被所有该类的实例所共享。在本文中,我们将探讨Java中静态变量的存储位置,并通过代码示例来说明。
## 静态变量的定义和使用
静态变量可以通过在类中使用`static`关键字来定义。下面是一个简单的示例:
```java
public class MyClass {            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-03 05:38:12
                            
                                264阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java静态变量存储位置解析
## 引言
在Java中,静态变量是类级别的变量,它们在类加载时被初始化,不依赖于任何实例对象。静态变量在类中只有一份存储空间,可以被所有实例对象共享。本文将介绍Java静态变量的存储位置以及相关的知识点。
## 流程图
下面是整个流程的概览图,展示了从源代码编写到最终静态变量存储的过程。
```
编写源代码 --> 编译源代码 --> 类加载过程 --            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-06 06:27:41
                            
                                91阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                 static声明的有三种:1.静态变量,2,静态方法。3.静态类  1.静态变量:静态变量相当于c中的全局变量按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。 两者的区别是:     &nbs            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-15 10:17:55
                            
                                51阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.  
2. 
 栈 
:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)  
3. 
 堆 
:存放所有new出来的对象。  
4.  
静态域 
:存放静态成员(static定义的)  
5            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-29 21:36:10
                            
                                1333阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            区别:“==” 比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。(引用类型)如果两个对象的引用相同时(指向同一对象时),“==”操作符返回true,否则返回flase。注:如果有对内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)感兴趣的可以去看看这篇博客,里面写的很详细。对我还在学基础的人来说帮助很大,理解了很多内容,还有待消化。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-23 10:10:49
                            
                                42阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Java内存分配中的栈   在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。   当在一段代码块定义一个变量时,Java就在栈中 为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。   Java内存分配中的堆            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-14 19:02:43
                            
                                50阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java全局变量和静态变量存储位置
在Java程序中,全局变量和静态变量是两种常见的变量类型。它们在内存中的存储位置有所不同,了解它们的区别对于编写高效的Java程序非常重要。
## Java全局变量
全局变量是指定义在类中,但在任何方法之外的变量。它们在类的整个生命周期内都是可见的,并且可以在类的任何方法中使用。全局变量通常用于在整个类中存储共享的数据。
```java
public            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-27 07:00:49
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            @在学C路上的所见所闻很多大佬解释得很清楚,我不生产水,我只是大自然的搬运工!!哈哈哈,回归正题,请看(1)C中Static的三种用法static 修饰局部变量static 修饰局部变量时,该变量称为静态局部变量,静态局部变量的存储空间在静态存储区,与函数的堆栈区不在同一个区域,因此函数运行完毕后静态局部变量不会被释放。静态局部变量只赋一次初值。下次使用静态局部变量的时候直接使用上次保存下来的值而            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-28 21:43:36
                            
                                49阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            静态变量(Static Variables)和静态方法(Static Methods)是与类本身有关系的而不是与类的实例对象有关系的东西。下面来解释上面这句话的意思静态变量:静态变量是在类级别上定义的变量,静态变量通常用关键字 static 来声明,并在类的任何方法之外进行初始化,这意味着它们在类加载时就会被初始化,并且只会初始化一次。这与实例变量不同,实例变量需要在对象实例化时才会进行初始化。静            
                
         
            
            
            
            final、finally、finalizeWHAT?final、finnally都是java语言的关键字,finnalize是方法,和java垃圾回收机制(JVM回收对象)有关WHY?1、final定义的变量、方法、类都会有一定的特性。final修饰的类不可以被继承final修饰的方法不可以被重写,可以被重载final修饰的变量,表示不可变(引用不可变,引用的值可以变) stati            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-21 13:32:44
                            
                                87阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在C语言中,全局变量和静态变量的存储位置因其性质和初始化状态而有所不同。我们通常会用nm命令来查看这些变量在编译后的可执行文件中的位置。以下是关于全局变量和静态变量存储区域的详细解释以及如何使用nm命令来查找它们的信息。全局变量和静态变量的数据区全局变量(Global Variables)已初始化的全局变量:存储在数据段(.data)。未初始化的全局变量:存储在未初始化数据段(.bss)。静态变量            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2024-06-23 16:50:06
                            
                                1343阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            静态方法或者静态变量 可以通过 类名.静态方法名 或者 类名.静态变量名 进行直接访问。静态变量static变量又叫类变量 是同一个类中所有的对象所共享的,在加载时就生成了定义语法:                访问修            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-15 10:10:41
                            
                                99阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            类.方法()调用,没有创建对象在调用,因为当一个方法是static时,就是一个静态方法,静态方法可以直接通过类名调用。public static void cry(){}类变量也叫静态变量/静态变量,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。静态变量(static),会被该类创建的对象共享。不管static            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-25 12:34:17
                            
                                72阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Static(静态) 1.概念 关键字—修饰符 变量、方法、代码块、内部类 2.修饰变量(静态变量) 静态变量随着类加载(方法区的静态常量池)而加载到 方法区的静态区,静态区会对存储的静态变量进行系统 默认初始值的赋值。静态变量与类同级,也叫类变量, 可以通过类名.静态变量也可以通过创建对象调用。静态 变量所在的类创建的所有对象都拥有唯一一个静态变量 所在区域的地址值,所有的对象共享这个静态变量            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-26 12:23:24
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言之前的文章里有总结过java的单例怎么写,具体链接 java中的7种单例模式。 经常听到,类的static变量在类加载时就会初始化,于是有了常说的两种单例模式的对比:饿汉式和静态内部类模式。通常的说法是,两种都是支持线程安全的(关于怎么个安全法请看我上面的链接),饿汉式不被推荐是因为会提前初始化,占用一部分内存。 那我们就用代码说话。验证根据jvm加载class文件的过程,先是讲class文件            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-05 22:19:26
                            
                                58阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            java中的内存分配前言 昨天去面试 被问到,我说1.7之后静态变量在堆内存中,面试官很明显的提出了质疑 静态变量在堆中,这个疑问和诧异的表情,下意识的让我感觉我说错了,我随即改口到在方法区,前面我叙述了在1.7之后 方法区被取代改成了元空间,面试当时也忘的差不多了,回来做记录,下面先看1.6 1.7 1.8 内存运行时分配图(感谢划船一哥的图) 在此建议各位面试官,要了解清楚再来面试别人 不要误            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-25 12:05:18
                            
                                38阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            程序运行时6个不同地方可以存储数据:1、寄存器(register):这是最快的存储区——处理器内部。但是寄存器数量及其有限,所以寄存器由编译器根据需求进行分配,你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。2、堆栈(stack):位于通用的RAM中,但通过它的“堆栈指针”可以从处理器哪里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-19 17:47:25
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            静态变量 和 静态方法(使用static修饰)静态变量 保存在 方法区的静态区(共享区)静态变量 是共享的区间静态变量 是如何调用 ?1.可以使用对象来调用2.推荐 使用类名来调用为什么静态变量 要使用类名去调用 ?只要加载了.class文件 就加载了静态变量 这时还没有对象产生静态变量(属于类 也叫类变量) 和 非静态变量(属于对象 对象变量) 的区别1.调用方式不同静态变量: 对象或类名去调用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-19 01:23:52
                            
                                111阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            作用域-如何在Java中创建静态局部变量?我读过Java与C / C ++不同,它不支持static局部变量。 现在,如果我想用局部变量编码一个函数,其值应在函数调用之间保持不变,我该怎么做?我应该使用实例变量吗?gameover asked 2020-01-28T19:36:36Z7个解决方案33 votes您可以有一个静态的类变量,该变量将在该类的所有实例中保留。 如果那是你想要的。 如果不是            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-01 14:16:54
                            
                                24阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java中的类的静态变量
在Java编程中,类的静态变量是一种独特的变量类型,其特性和用途对于理解类的结构及其行为至关重要。静态变量属于类本身,而非类的某个实例。也就是说,无论创建多少个类的实例,静态变量只有一份存储。这种特性使得静态变量在整个应用程序中共享,适合用于存储一些全局的、常常需要访问的属性。
### 什么是静态变量?
静态变量的定义使用关键字`static`。在类中定义静态变