社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
static:java 的一个关键字。中文意思:静态的。
了解static,首先提出几个问题:
static 的内存空间在哪?何时分配?如何访问?哪些属性可以使用static?
一、修饰成员变量
1:静态修饰成员变量:静态成员变量。
特点:
==静态成员变量的内存在方法区中。==被所有的该类的对象所共享使用。不在堆中,不在对象中。
当我们第一次使用一个类的时候,jvm会使用类加载器将该类进行类加载,类加载被分成了三步(装载(将class字节码装载到方法区)、链接、类的初始化(给类的静态成员变量分配内存,并执行默认初始化,如果有显式的赋值,还要执行赋值的操作))。
静态成员变量是不依赖于任何对象的,依赖于所在的类,所以java对静态成员提供了另外一种直接访问的方式,通过类名来直接访问: 类名.静态成员。
2:哪些属性可以作为静态成员变量定义。
如果需要所有的对象共享的数据,就可以定义为静态的,只希望变量具有一块内存区域的,也可以定义为静态的。
static变量是依赖于所在的类,不依赖于对象,所以也称为类变量,非static 修饰的 叫实例变量。
二、修饰成员方法
1、:static 修饰方法:静态成员方法。
特点:静态方法不依赖于某一个对象,依赖于类,类加载之后,就可以调用了,不需要创建对象就可以直接调用、直接使用类名调用即可(本类直接写方法名就可以直接用了,连类名都不用写)。
2、static 的使用:
(1)作为工具方法,方便调用。一般可以声明成静态方法。
例:封装成自定义的工具类,其他类想使用该方法时,直接(类.方法名)
public class Util {
/**
* @param min 随机数最小值
* @param max 随机数最大值
* @return 随机数
*/
public static int getRandomNumber(int min, int max) {
return (int) (Math.random() * (max - min) + min);
}
}
测试类
public class Test {
public static void main(String[] args) {
int s = Util.getRandomNumber(10, 20);//直接用类.方法名
System.out.println(s);
}
}
(2)用于访问本类的其他的静态成员变量(在该静态方法中)。
例:MAX静态变量报错。
详细通过上文的讲解,答案不言而喻。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!