你的位置:首页 > 软件开发 > Java > static关键字之内存分析

static关键字之内存分析

发布时间:2016-10-12 00:00:04
通常情况下,Java把内存分为栈内存、堆内存和方法区,栈内存用来存放一些基本类型的变量和数组(数组也是一种引用类型)及对象的引用变量,而堆内存主要是来放置对象的,即我们在程序中new出来的对象。static,意味为静态的,用static修饰的变量和方法,实际上是给这些变量和方法指 ...

static关键字之内存分析

通常情况下,Java内存分为栈内存、堆内存和方法区,栈内存用来存放一些基本类型的变量和数组(数组也是一种引用类型)及对象的引用变量,而堆内存主要是来放置对象的,即我们在程序中new出来的对象。static,意味为静态的,用static修饰的变量和方法,实际上是给这些变量和方法指定了在内存中的”位置“(这个位置也叫静态区、方法区、数据区和共享区)。既然在内存中指定了位置,那么他们的 “大小”似乎就是固定的了,有了位置和大小的特征,在栈中或堆中开辟空间那就是非常的方便了。对于静态的东西,JVM在加载类时,就在內存中开辟了这些静态变量的空间(内存空间),即编译时就为这些成员变量的实例分配了空间。

下面我们来看一段代码

 1 package demo; 2  3 public class StaticDemo { 4   public static void main(String[] args) { 5     Visitor visitor1 = new Visitor(); 6     System.out.println("count : " + visitor1.count);// 1 7     System.out.println("visitCount : " + Visitor.visitCount);// 1 8  9     Visitor visitor2 = new Visitor();10     System.out.println("count : " + visitor2.count);// 111     System.out.println("visitCount : " + Visitor.visitCount);// 212 13     Visitor visitor3 = new Visitor();14     visitor3.count = 5;15     visitor3.visitCount = 0; // 归016     System.out.println("count : " + visitor1.count);// 117     System.out.println("count : " + visitor2.count);// 118     System.out.println("count : " + visitor3.count);// 519     System.out.println("visitCount : " + visitor1.visitCount);// 020     System.out.println("visitCount : " + visitor2.visitCount);// 021     System.out.println("visitCount : " + visitor3.visitCount);// 022   }23 }24 25 class Visitor {26   int count;27   static int visitCount;28 29   public Visitor() {30     count++;31     visitCount++;32   }33 }

原标题:static关键字之内存分析

关键词:内存

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。