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 [包名]
这样导入的包可以直接使用里面的静态变量或者静态方法,无需用类目.的方式去使用。例如:
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); } }
相关文章推荐
- Java基础系列--static关键字
- java夯实基础系列:深入理解static、final关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- Java基础系列--static微信牛牛棋牌平台出租关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- JAVA基础之static关键字方法总结
- [好程序员训练营]java基础笔记之static关键字的学习
- java基础-static关键字
- Java--static 关键字小研究
- 黑马程序员_Java基础_this,super,static,final关键字
- java基础---static关键字