对于局部变量,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String s = new String(“william”);会把其对象存储在堆,而把这个对象的引用(指针)存储在栈。 再如 String s1 = new String(“william”); String s2 = s1; s1和s2同为这个字符串对象的实例,但是对象只有一个,存储在堆,而这两个引...
对于static全局变量,它们存储在JVM的方法区(Method Area)中。方法区是JVM用来存储类信息、常量池、静态变量等数据的区域。 输出结果 一旦JVM加载了字节码文件,并解释执行其中的代码,程序将按照编写的逻辑进行执行。在程序执行的过程中,我们可以通过访问static全局变量来获取或修改其值。 下面是一个示例,展示了如何访问...
如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中。这些对象(除非它们是类之类的内部对象)不会存储在PermGen空间中。 例: static int i = 1; //the value 1 is stored in the PermGen section static Object o = new SomeObject(); //the reference(pointer/memor...
一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将 static int n; //定义...
4.static 内部类 public 1. 在Java 中还支持用 static 修饰的内部类,称为静态内部类。静态成员内部类的特点主要是它本身是类相关的内部类,所以它可以不依赖于外部类实例而被实例化。静态内部类不能访问其外部类的实例成员(包括普通的成员变量和方法),只能访问外部类的类成员(包括静态成员变量和静态方法)。即使是...