一、简述
1.1 static是静态修饰符
- static是静态修饰符,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。
- static修饰的成员可以通过类名加“.”进行直接访问。
- static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
- 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
- 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
1.2static 修饰符
1.2.1静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
1.2.2静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
二、应用
2.1 访问语法
static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问:
2.2 代码示例
static修饰符用来创建类方法和类变量。
代码如下:
public class InstanceCounter {
private static int numInstances = 0;
protected static int getCount() {
return numInstances;
}
private static void addInstance() {
numInstances++;
}
InstanceCounter() {
InstanceCounter.addInstance();
}
public static void main(String[] arguments) {
System.out.println("Starting with " +
InstanceCounter.getCount() + " instances");
for (int i = 0; i < 500; ++i){
new InstanceCounter();
}
System.out.println("Created " +
InstanceCounter.getCount() + " instances");
}
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/35f23b1386174d5f88633819a381c4c1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YOR5Zi75Zi7fg==,size_20,color_FFFFFF,t_70,g_se,x_16)
*其中方法getCount()获取当前计数的值。*
**运行结果**:
![在这里插入图片描述](https://img-blog.csdnimg.cn/636b8bfcf8c7452db291162a9d0d5d9b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YOR5Zi75Zi7fg==,size_20,color_FFFFFF,t_70,g_se,x_16)
# 三、总结
一旦一个方法使用static进行修饰,那么这种 静态方法,不需要创建对象,调用格式应该为:
- 类名称.静态方法名
- 如果需要使用的静态方法,就在当 前类中,那么可以省略类名称。
- 对于static关键字使用格式:
1. 定义静态的成员变量,直接在数据类型前面加上static
2. 定义静态的成员方法,直接在返回值类型前面加上static
3. 使用静态的成员变量,应该:类名称.静态成员变量
4. 使用静态的成员方法,应该:类名称.静态成员方法
|