zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java中static关键字

JAVA 关键字 static
2023-09-11 14:20:02 时间

Java中的 static 关键字主要是用来做内存管理的

static 可以分为四种

static 可以修饰:

  1. 变量(所谓 class variable)
  2. 方法(所谓 class method)
  3. 代码块(所谓 block)
  4. 内部类(所谓 nested class)

凡是被 static 修饰的这四种元素,都属于class的元素,即类的,而不是类的实例的。

1) 静态变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。
两者的区别是: 
 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 
 对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 

什么时候该用 static 来修饰变量呢?该变量被该类的所有实例所共享
静态变量在类被加载的时候初始化,且仅分配一次内存

一个变量静态的栗子:

package com.zlp.Demo;
/**
 * 静态变量
 * 
 */
public class Student8 {
	
	int stuNo;
	String userName;
	String passWord;
	static String university = "whdx";

	public Student8(int stuNo, String userName, String passWord) {
		this.stuNo = stuNo;
		this.userName = userName;
		this.passWord = passWord;
	}

	public void display() {
		System.out.println(stuNo + "\t" + userName +"\t"+passWord+ "\t" + university);
	}

	public static void main(String args[]) {
		
		Student8 s1 = new Student8(001, "Karan","123");
		Student8 s2 = new Student8(002, "Aryan","456");
		Student8 s3 = new Student8(002, "Aryan","456");
		s1.display();
		s2.display();
		s3.display();
	}

}