关键字static
static是静态修饰符,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。
在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员或者定义的方法,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员或者方法,但是有种情况例外,就是该成员或方法是用static修饰的。
例如:
package cn.itheima.day02;
import java.sql.Date;
public class StaticTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a1 = new A();
A a2 = new A();
a1.i = 20;//只更改a1.i的值
//不能写出a.j,因为j不是静态变量
System.out.println(a1.i);//运行结果:20
System.out.println(a2.i);//运行结果:20,a.1的值改变了,a.2的值也跟着改变
//就是说a1.i与a1.i是同一个i
a1.f();
a1.g();//g方法只能通过对象访问
A.f();//f方法可以直接通过类调用
}
}
class A{
//若是在某个属性前面加上static,则这个属性则不再属于某个对象的属性,属于共用属性
//new 出对象后,不为该属性分配空间
//当一个属性前面有static时,那么它属于类而非对象,也就是说它和类同时存在
public static int i =10;
public static int j=1;
public static void f(){
System.out.println(new java.util.Date());
}
public void g(){
System.out.println("haha");
}
}