掌握Java中static关键字的基础,深入其内存工作机制

发表时间: 2018-11-22 16:12


static的原理和用途

static内存原理

结论:

因为所有非静态成员变量都保存到堆内存的对象空间中,而所有的非静态函数里面都有隐藏的this关键字,this关键字都要保存调用它的对象的引用地址,所以说,静态函数和静态成员变量不能直接通过类来调用,必须通过某个对象调用;

而静态成员变量直接保存在方法区的静态区域,和对象无关。静态函数里面也没有this ,所以静态函数和静态成员变量都可以直接通过类名调用;

static使用场景

例子:使用类模拟圆形;并提供获取圆形面积的功能;

结论:圆形的半径都是每个圆形自己独立所有的,互不影响,所以应该使用非静态成员变量表示;

而圆周率是所有圆形都一样的,所以应该使用静态成员变量保存,可以节省内存;