校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > final/static/volatile(后序会删除)
题目

static关键词的作用和使用场景

解答


首先要明确static这个“静态”其实是一种“全局和共享”的含义,属于Class本身,而不属于实例对象。也就是说不管是static方法还是static变量,只能通过(如下方Dog类)Dog.desc来调用, 不能使用smallDog.desc调用。因为不属于对象,也就不能用this.desc调用。

class Dog{
static desc = "good dog";
}
Dog smallDog = new Dog();

使用场景主要有三种:

1.修饰变量
2.修饰方法
3.静态块

1 static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。

2 static 方法
静态方法中一般用来操作静态变量,不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量

3 static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次

C 7条回复 评论
墨石

老师讲得真好,通俗易懂

发表于 2023-08-17 22:00:00
0 0
真吾

有一次就是需要用static修饰变量,就是用类来调用

发表于 2020-11-17 11:55:46
0 0
熙果果

 static 修饰的方法是静态方法,静态方法不依赖于对象,不需要将类实例化便可以调用

发表于 2020-11-17 10:53:40
0 0
喜东东

static 修饰的成员称为静态成员,它属于整个类所有,而不是某个对象,可以使用类名直接访问,也可以使用对象名进行访问

发表于 2020-11-17 10:52:00
0 0
provencesl

明白了这道题的关键之处  

发表于 2018-08-24 19:23:37
0 0
三清山扫地僧

这个题好!!!

发表于 2018-08-24 19:23:20
2 0
provencesl :

明白了这道题的关键之处

发表于 2018-08-24 19:22:53
回复
provencesl :@provencesl  明白了这道题的关键之处
发表于 2018-08-24 19:23:20
回复
陈鹏宇

明白了static关键字的作用!

发表于 2018-08-17 19:47:55
0 4