java全局变量
1.java全局变量
1.1 概述
Java中的全局变量通常是指定义在类级别上的变量,也称为类变量或静态变量。它们与对象实例无关,而是与类相关联的变量。这意味着无论创建多少个对象,类变量的值都是相同的。类变量可以在整个类中使用,并且可以通过类名直接访问。
要定义一个类变量,需要在变量声明之前添加关键字“static”。例如:
public class MyClass {
static int globalVariable = 10;
}
在上面的示例中,globalVariable是一个类变量,它被定义为一个整数,并初始化为10。该变量可以通过类名访问,如下所示:
MyClass.globalVariable = 20;
类变量可以在类中的任何地方使用,并且对于所有对象都是相同的。这使得它们成为在整个类中共享数据的有用工具。
1.2 特点
Java的全局变量,也称为成员变量或类变量,是在类中定义的变量,可以被类的所有方法和对象访问。以下是Java全局变量的特点:
1.生命周期:全局变量在类定义的生命周期内存在,即在对象创建前就已经存在,直到程序结束或类被卸载时才被销毁。
2.默认值:如果没有给全局变量赋初值,则它们将默认初始化为0或null,具体取决于变量的类型。
3.可见性:全局变量可以在类的所有方法中访问,包括静态和非静态方法。
4.作用域:全局变量的作用域是整个类,可以在类的任何方法中使用。
5.静态性:可以使用static关键字将全局变量声明为静态变量,这样它们将成为类变量,而不是对象变量。静态变量只有一个副本,被类的所有对象所共享,因此它们可以在不创建对象的情况下访问。
6.可变性:全局变量可以是可变的或不可变的,这取决于它们的数据类型。如果全局变量是一个对象,则可以更改该对象的状态,即使变量本身是final类型。
总之,全局变量是Java中非常重要的一种数据类型,它们可以让变量在类的范围内存在,并且可以在整个类中使用。因此,它们可以被用来存储对整个类有意义的数据,或者作为类的状态的标志。
1.3 案例
以下是一个使用全局变量的Java示例:
在这个例子中,我们声明了一个名为 globalVariable 的静态全局变量,它的值为 10。我们然后在 main 方法中访问这个全局变量,并将其值打印出来。
接下来,我们调用 modifyGlobalVariable 方法来修改全局变量的值。在这个方法中,我们将 globalVariable 的值改为 20。
最后,我们再次访问 globalVariable 来检查它的值是否已被修改,并将其值打印出来。
注意,在 Java 中,静态全局变量必须使用 static 关键字进行声明,以便在其他静态方法中访问它。
1.4 java全局变量的存储区域
●Java中的全局变量(即静态变量)存储在Java虚拟机(JVM)的方法区中。方法区是一种在JVM中用于存储类信息、常量、静态变量等数据的内存区域。在JVM启动时,方法区被分配,其大小可以根据需要进行调整。
●由于方法区是在JVM中共享的,因此所有实例都可以访问相同的全局变量。因此,全局变量也称为类变量,因为它们与整个类相关联,而不是与任何特定实例相关联。全局变量在类被加载时初始化,并且可以通过类名来访问,而不需要创建类的实例。
2.局部变量
2.1 概述
局部变量是在定义形参、方法或代码块内部的变量,该变量只在当前方法、代码块中有效。
2.2特点
局部变量具有如下特点:
●局部变量声明在方法、构造方法或者代码块、形参中;
●局部变量在方法、构造方法、或者语句块被执行时创建,当它们执行完成后,局部变量就会被销毁;
●访问修饰符不能添加在局部变量上;
●局部变量只在声明它的方法、构造方法或者代码块、形参中可见;
●局部变量是在栈上分配的;
●局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
2.3 案例
在下面的案例中,给大家定义了几个局部变量供大家参考。
2.4 java局部变量的存储区域
●Java 中的局部变量存储在栈(stack)内存中。栈是一种后进先出的数据结构,用于存储方法调用时的局部变量、方法参数和返回值等数据。当一个方法被调用时,会为该方法在栈上分配一块内存空间,用于存储该方法的局部变量和方法参数。当方法执行完毕后,该方法的栈帧就会被销毁,该方法的局部变量和方法参数也就随之被释放。因此,局部变量的生命周期与方法的生命周期相同,只在方法内部有效。
3.总结
至此,最后给大家总结下局部变量和成员变量的区别,大家一定多上手练一练哈,这样才能加深印象:
1. 相同点:
1.定义变量的格式相同;
2.先声明后使用;
3.变量都有对应的作用域。
2. 不同点:
两者声明的位置及作用范围不同,如下表所示:
成员变量 直接定义在类中,根据修饰符的不同,可以在当前类或其他类中有效。
局部变量 定义在方法的形参、方法内部、代码块内部的变量。只在当前方法及代码块内部有效。
相关推荐HOT
更多>>xml解析器
SAX解析器:基于事件驱动的解析器,逐行读取XML文件并触发相应的事件,适用于处理大型XML文件,但需要手动编写事件处理器来处理XML文件中的数据...详情>>
2023-03-21 16:03:51java全局变量
如果全局变量是一个对象,则可以更改该对象的状态,即使变量本身是final类型。当一个方法被调用时,会为该方法在栈上分配一块内存空间,用于存...详情>>
2023-03-17 10:01:40带你手把手解决Java常见Bug
刚开始学习Java语言的小伙伴, 很可能被各种各样的程序bug搞得焦头烂额, 甚至被劝退。别怕,小编将手把手带你了解Java中的异常体系, 如何识别Bug...详情>>
2023-03-13 16:05:00JavaScript 内的 this 指向
在 javascript 语言中, 有一个奇奇怪怪的 "关键字" 叫做 this详情>>
2023-03-07 15:21:00