static关键字
由static修饰的变量,常量和方法分别被称作静态方法,静态变量和静态方法,又被称作类的静态成员。成员方法包括实例方法和静态方法,成员变量包括实例变量和实例方法。
这里要强调一下:
1.static被翻译为“静态的”;
2.所有static关键字修饰的都是和类相关的,类级别的。
3.所有static修饰的,都是采用“类名.”的方式访问。
当然”类名.”也是可以省略的。
4.static修饰的变量:静态变量
5.static修饰的方法:静态方法
什么时候变量声明为实例的,什么时候用static声明为静态的?
如果这个类型的所有对象的某个属性值都是一样的,
不建议定义为实例变量,浪费内存空间。建议定义为类级别特征,
定义为静态变量,在方法区中只保留一份,节省内存开销。
一个对象一份的是实例变量。
所有对象一份的是静态变量。、
static的三点主要作用:
1.定义静态变量:
例如://定义一个类:中国人
class Chinese{
//身份证号
//每一个人的身份证号不同,所以身份证号应该是实例变量,一个对象一份。以下到name之间的成员变量类似
String idCard;
String name;
//对于“中国人”这个类来说,国籍都是“中国”,不会随着对象的改变而改变。
//显然国籍不是对象级别的特征,所以就用static。
//重点五颗星:加static的变量叫做静态变量
//静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了。
//静态变量存储在方法区
static String country="中国";//在加载Chinese类的时候,发现Chinese类中有一个静态变量,此时会给该静态变量初始化。
//叫做Chinese类的静态属性,就是“中国”
}
2.定义静态方法:
基本格式为:
【修饰符】static【返回值类型】【方法名】
{
方法体;
}
3.定义静态代码块:
例子如下:
1.使用static关键字可以定义:静态代码块
2.什么是静态代码块,语法是什么?
static{
java 语句;
java 语句;
}
3.static静态代码块在什么时候执行呢?
类加载时执行,并且只执行一次。
静态代码块有这样的特征/特点。
4.注意:静态代码块在类加载时执行,并且在main方法执行前执行。
5.静态代码块一般是按照自上而下的顺序去执行。
6.静态代码块有啥作用?
第一:静态代码块不是那么常用。(不是每一个类中都要写的东西。)
第二:静态代码块这种语法机制实际上是sun公司给我们JAVA程序员的一个特殊时刻/时机。
这个时机叫:类加载时机。
具体业务:
项目经理说了:大家注意了,所有我们编写的程序中,只要是类加载了,请记录一下累加的日志信息(在什么时候
,那个类加载到了JVM当中了)。
思考:这些记录日志的代码写到哪里呢?
写到静态代码块当中。
*/
public class StaticTest06 {
static {
System.out.println("A");
}
//一个类中可以编写多个静态代码块
static {
System.out.println("B");
}
//入口
public static void main(String[] args) {
System.out.println("Hello World");
}
//编写一个静态代码块
static {
System.out.println("C");
}
}
/*
输出结果:
A
B
C
Hello World
*/