您的位置:首页 > 编程语言 > Java开发

Java基础研究系列之-static关键字你不知道的东西

2018-01-27 00:00 351 查看
前两天在知乎上看到,static关键字可以用于导包,用Java也有两年了,这个特性竟然不知道,于是乎整理了一些资料对static关键字的所有用法归纳下:

1.static修饰变量

类的成员变量可以分为两种,一种是被static修饰的叫做静态变量或者类变量,一种是不被static修饰的叫做实例变量。两者之间的区别:

静态变量(类变量):

静态变量在内存中只有一个拷贝,JVM只会给其分配一次内存,静态变量在类初始化加载过程中会完成静态变量内存分配。静态变量在JVM内存中存储于方法区中。

实例变量:

实例变量每次创建一个类实例就会给实例变量分配一次内存,实例变量存在JVM的堆中。

还有种变量叫做局部变量,局部变量一般是方法中存储的变量,这种变量储存与JVM栈中,仅方法私有,随方法栈入栈出栈。

2.static修饰方法

static可以用于修饰类的方法,这种方法称为静态方法,静态方法属于类的,不需要实例化就可以使用,通常用于工具类中,可以直接通过类目.方法名来调用,静态方法在类的初始化过程中就分配内存,实例方法在实例化时才会分类内存。

3.static修饰代码块

static可以修饰静态代码块,被static修饰的静态代码块会在类初始化过程中被执行且只会被执行一次。说到这里就会有关于代码执行顺序的问题,Java中代码执行顺序是按照下列顺序执行:

静态块,main(),构造块,构造方法

具体的是:

父类静态代码块->子类静态代码块->main方法的代码->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法->顺序执行代码(包括普通代码块、同步代码块)

4.static静态导包

static静态导包的使用方法为import static [包名]

这样导入的包可以直接使用里面的静态变量或者静态方法,无需用类目.的方式去使用。例如:

import static java.lang.System.out;
import static java.lang.Integer.*;

/**
* Created by wenbo.shen on 2017/12/10.
*/
public class Main {

public static void main(String[] args) {
out.println(MAX_VALUE);
out.println(100);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  static Java