前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术分享|static(静态)关键字的特点和用法

技术分享|static(静态)关键字的特点和用法

原创
作者头像
用户8639654
修改于 2021-07-26 03:34:34
修改于 2021-07-26 03:34:34
5200
举报
文章被收录于专栏:云计算运维云计算运维

考虑篇幅问题,Java基础系列的「关键字static与final」部分将分两次进行梳理,本次主要总结「static关键字」。

面试时也经常被问到「static关键字」的相关问题,如「谈谈对static关键字的理解?static有哪几种用法?静态内部类与普通内部类有什么区别?Java中变量的初始化顺序是怎样的?」,接下来,为大家分享static(静态)关键字的特点和用法,建议重点关注。

一、静态:static

用法:是一个修饰符,用于修饰成员(成员变量,成员函数)

Class Person

{

String country="cn";

}

/*每实例化一个Person对象,每个对象在堆内存中都有一个country

而加上static以后,就只在内存总存在一个静态的country被其他的对象直接调用,可以节省内存空间。

当成员被静态修饰以后,除了可以被对象调用外,还可以直接被类名调用。*/

特有内容随着对象存储

比如person类,每个中国人都有自己的名字,而国籍都是一样的中国,所以contry可以定义为static而name不用。

二、tatic特点

1、随着类的加载而加载

也就是说:静态会随着类的消失而消失,说明他的生命周期最长

2、优先于对象存在

3、被所有对象所共享

4、可以直接被类名调用

三、int age(成员变量)实例变量和static int age(静态成员变量)类变量的区别

1、存放为着

实例变量是随着对象的创建而存在堆内存中

类变量随着类的加载而存在于方法区中

2、生命周期

实例变量随着对象的消失而消失

类变量生命周期最长,随着类的消失而消失

四、静态使用注意事项

1、静态方法只能访问静态成员

2、静态方法中不可以定义this,super关键字

因为静态优先于对象存在,所以静态方法中不可以出现this

3、主函数是静态的

五、静态的好处和坏处

好处:对对象的数据进行单独空间的存储,节省空间,没有必要每个对象中的存储一份

可以直接被类名调用(Person.country)

坏处:生命周期过长。

访问出现局限性。(只能访问静态)

六、什么时候使用静态呢?

要从两个方面入手,因为静态修饰的内容有成员变量和成员方法(函数)

什么时候定义静态变量(类变量)呢?

当对象中出现共享数据时,该数据被静态所修饰

对象中的特有数据要定义成非静态存在于堆内存中。

什么时候定义静态函数呢?

当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态的。

七、静态的应用

每一个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装以便复用。把成员方法都定义成static的直接用类名调用。一个类中会有一个默认的构造函数,这个构造函数的权限和所属的类一致。。

静态代码块格式:

static

{

静态代码块中的执行语句;

}

//特点:随着类的加载而执行,只执行一次。用于给类进行初始化。

如下例子:

Class Static Code

{

static

{

System,out.println("a");

}

}

加载顺序静态代码块-->构造代码块-->构造函数

对象的初始化过程

Personp=new Person("zhangsan",20);

1、因为new用到了Person.class。所以会先找到Person.class文件并加载到内存中。

2、执行该类中的static代码块(静态代码块),如果有的话,给Person.class类进行初始化

3、在堆内存中开辟空间,非配内存地址

4、在堆内存中建立对象的特有属性,并进行默认初始化

5、对属性进行显示初始化

6、对对象进行构造代码块初始化

7、对对象进行对应的构造函数初始化

8、将内存地址付给栈内存中的p变量

作为一名开发人员,技术是立身的根本,是拴马桩的尊严

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java中的final和static关键字详解
当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。
崩天的勾玉
2021/12/20
1.8K0
java_static、final、super、this关键字的使用
它可以修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象。
咕咕星
2020/08/19
4140
java_static、final、super、this关键字的使用
Java:关于Static静态关键字的那些小事
前言 在Java中,静态 Static关键字使用十分常见 本文全面 & 详细解析静态 Static关键字,希望你们会喜欢 目录 1. 定义 一种 表示静态属性的 关键字 / 修饰符 2. 作用 共用、
Carson.Ho
2019/02/22
4550
常见的java面试的基础问题(一) | 看看你会的有多少?
面向对象思想:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对象,强调具备功能的对象;
谭庆波
2018/08/10
2810
Java中static、final关键字【详解】
静态成员变量(被static修饰,属于类、加载一次、内存中只有一份)。直接用 类名 访问即可,因为类只有一个,所以静态成员变量在内存区域中也只有一份,所有的对象都可以共享该变量。
寻求出路的程序媛
2024/03/25
5590
Java中static、final关键字【详解】
Static关键字的使用
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。
一只胡说八道的猴子
2020/09/27
4380
Static关键字的使用
JDK1.9-static关键字
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/03
3050
static关键字详解
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
共饮一杯无
2022/11/28
4110
static关键字详解
Java基础--static关键字
不管是平时阅读源代码,还是笔试、面试中,static关键字还是经常被问道,这篇文章主要来重新复习一下该关键字。
河岸飞流
2019/08/08
5040
Java基础--static关键字
Java系列:关于关键字this和static
在C语言中,我们经常会遇到指针,也常常被指针所困扰,毕竟它经常惹程序员头疼。那么在Java中我们便方便多了,只是因为有了this.
小Bob来啦
2022/01/17
2280
Java系列:关于关键字this和static
Java的static关键字 非常常用的操作
在Java中,将static列为一个关键字,用来修饰类层次的成员,被所有对象共享。
Designer 小郑
2023/08/01
1670
Java的static关键字 非常常用的操作
Java基础:static的理解(含义、用法及静态修饰的优先顺序)
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。我们经常见到static,例如每个main方法都会被标记为static修饰符,下面我们先来了解一下static关键字及其用法。
鲲志说
2025/04/07
1870
Java基础:static的理解(含义、用法及静态修饰的优先顺序)
详解static关键字在Java中的各种适应场景,这个很重要!
静态(static)关键字在Java的众多关键字中举足轻重!也是很多大厂面试官特别喜欢问的面试高频知识点,今天我们就一起学习,梳理,重温一下这个关键吧,之所以用重温修饰是因为在过往的文章中早已提到了static,无论是变量中还是方法中甚至于类中,static都是不可或缺的!
JavaBuild
2024/05/27
950
详解static关键字在Java中的各种适应场景,这个很重要!
【IT领域新生必看】Java中的Static关键字详解:小白也能轻松掌握的神奇用法
在Java编程中,static关键字是一个非常重要的概念。它可以用于变量、方法、代码块以及嵌套类,提供了在内存管理和代码结构上的独特优势。对于初学者来说,理解并正确使用static关键字是掌握Java编程的重要一步。本篇文章将详细介绍static关键字的用法及其应用场景,帮助你全面理解这一关键概念。
E绵绵
2024/07/12
3220
浅谈java中static关键字修饰的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。
用户7886150
2021/01/31
3970
一篇文章带你了解Java中的static关键字和静态变量、静态方法
前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)、手把手教你用Java打造一款简单故事书(下篇)、手把手教你用Java打造一款简单考试系统(上篇)、手把手教你用Java打造一款简单考试系统(下篇)、手把手带你用Java打造一款对对碰游戏(上篇)、手把手带你用Java打造一款对对碰游戏(下篇)、手把手带你用Java实现点灯游戏(上篇)、手把手带你用Java实现点灯游戏(下篇),接下来的几篇文章是关于Java基础的,希望对大家的学习有帮助,欢迎大家在讨论区留言。
Java进阶者
2021/01/22
5920
第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
Java基础面向对象-静态,单例模式,继承详情知识点。静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承。
达达前端
2019/07/03
4140
第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
【Java探索之旅】静态关键字static与代码块的奥秘
假设现在有5名同学,他们的性别、年龄可能各不一样,但是上课的教室一样的,你会怎么去定义这个类呢?这里面有一个共同点,教室是一样的,你如果把教室设置成对象的成员变量,那么每new一个对象,都会包含这个成员变量,造成空间上的浪费和不必要的麻烦。我们的本意是想要共享,而不是每个对象都存一份。
屿小夏
2024/05/06
1100
Java中的static关键字浅析
static可以节省大量的冗余空间,堆区的String country指向数据区的首地址,类似于栈区指向于堆区。
用户7073689
2020/03/18
7160
Java基础(十):关键字static、代码块、关键字final
冬天vs不冷
2025/01/21
1390
Java基础(十):关键字static、代码块、关键字final
推荐阅读
相关推荐
Java中的final和static关键字详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档