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

本文详细介绍了Java中static关键字的四种用途:修饰变量、方法、代码块及静态导包,并解释了它们之间的区别。

      前两天在知乎上看到,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);
    }
}

 

 

 

转载于:https://my.oschina.net/wenbo123/blog/1613965

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值