java static关键字详解

static 可以修饰 属性,方法,代码块,内部类

  1. 静态变量的特点
    (1) 定义静态变量,静态变量无需生成对象就可以调用,可以使用类名和对象两种调用方式。
    (2)由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。
    ( 3)任何一个对象修改静态变量的值,那么所有的该类的对象的静态成员变量的值都改变。

类变量 ,实例变量内存解析
java static关键字详解_第1张图片

2.静态函数的特点
(1)随着类的加载而加载,静态函数无需生成对象就可被调用
(2)静态函数不能直接调用非静态的成员变量
(3)不能使用this,super关键字
3.静态代码块
(1)静态代码块在装载类的时候就被执行,主要为静态成员变量赋初值

静态变量和成员变量的区别

(1)所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
(2)内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
(3)内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
(4)调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用

如何判定属性和方法应该使用static关键字:

关于属性

属性是可以被多个对象所共享的,不会随着对象的不同而不同的。
类中的常量也常常声明为static

关于方法

操作静态属性的方法,通常设置为static的
工具类中的方法,习惯上声明为static的。 比如:Math、Arrays、Collections

使用举例:

举例一:Arrays、Math、Collections等工具类
举例二: 单例模式

你可能感兴趣的:(java基础知识)