Java基础之static关键字的使用讲解
作者:sky-缘 发布时间:2023-10-06 01:26:25
static关键字
在Java中,static是静态修饰关键字。用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能;被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
static关键字的作用
方便在没有创建对象的情况下来进行调用方法或者变量。被static关键字修饰的方法或者变量不需要依赖对象来进行访问,只要类被加载了,就可以通过类名去访问。
1.static修饰成员方法
static修饰的方法称为静态方法,由于静态方法不依赖任何对象就能够访问,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态成员变量和成员方法。代码示例:
从上面代码看出,在静态方法t2调用非静态成员变量age和非静态成员方法t1时,系统报错。同时在静态方法t3中调用静态方法t2,编译通过。得出结论:在静态方法中不能访问非静态成员变量和非静态成员方法,但在非静态成员方法中能够访问静态成员方法和静态成员变量。同时静态的只能访问静态的。
2.static修饰成员变量
按照是否是静态的可对类成员变量进行分类:一种是被static修饰的变量,叫做静态变量或者类变量;另一种是没有被static修饰的变量,叫实例变量。
静态变量和非静态变量的区别:
静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化。
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
3.static修饰代码块
static关键字还可用来形成静态代码块来优化程序性能,原因是它的特性:只会在类被初次加载的时候执行一次。
静态方法只能继承,不能重写
代码示例如下:
上面代码中在父类和子类中各自定义一个aa方法,在左边显示为Override标识;但在父类和子类中各自定义一个static方法test,但并没有出现Override标识,由此可知用static修饰的方法不能被重写。同时,如果子类不用static关键字修饰,继承父类时编译出错,可知静态方法只能被静态方法继承。
总结
static是一个修饰符,用来修饰成员,被修饰的成员变量称为静态变量或类变量。
static修饰的成员被所有的对象共享。
static修饰的成员能直接被类名调用,形式为:类名.静态成员。
静态的只能访问静态的。
static关键字不能改变变量和方法的访问权限。
静态成员变量虽然独立于对象,但是不代表不能通过对象去访问,所有的静态方法和静态变量都可以通过对象访问,只要访问权限足够。
static不允许用来修饰局部变量。
来源:https://blog.csdn.net/qq_44790505/article/details/119175936


猜你喜欢
- 首先,在main方法的类上添加注解:@ServletComponentScan(basePackages = "applicati
- 前言在手写sql的时候,根据参数处理查询条件.select * from staff where 1 = 1 and staff_id in
- C#实现:#region 计算字符串相似度 /// &l
- 本文实例为大家分享了java实现单链表、双向链表的相关代码,供大家参考,具体内容如下java实现单链表:package code;class
- 画廊视图(Gallery)表示,能够按水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事
- 前言MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供
- AndroidStudio打包jar最近更新androidstudio之后发现打包jar不可用了。先看下以前的方法更新后新的用法//Copy
- 引言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个 @RefreshScope,在类上才可以实现对象属性的的动态
- SpringDataJpa like查询无效这里写自定义目录标题SpringDataJpa like查询@Query(value = &qu
- 本文讲述了Android使用国内镜像在线更新SDK的方法。分享给大家供大家参考,具体如下:什么是Android SDK:SDK:(softw
- 本文实例为大家分享了javafx tableview鼠标触发更新属性,供大家参考,具体内容如下public class HoverCell
- 摘要:Java8通过Function获取字段名,解决硬编码,效果类似于mybatis-plus的LambdaQueryWrapper。本文总
- 哈希表的分离链接法原理Hash Table可以看作是一种特殊的数组。他的原理基本上跟数组相同,给他一个数据,经过自己设置的哈希函数变换得到一
- 由于一些不可控因素的影响,比如系统内存,计算机状态等,每一次在while循环中执行的次数会有一定差异大概几百次。这就导致了结果的差异。注意这
- 最近在学习springmvc,今天把springmvc 参数绑定给整理一下,也算个学习笔记吧!@RequestParam 绑定单个请求Req
- 目录问题为每个request设置超时值Http Handler给Request加上超时处理抛出正确的异常使用Handler总结HttpCli
- 一,问题采取eureka集群、客户端通过Ribbon调用服务,Ribbon端报下列异常java.net.UnknownHostExcepti
- 在spring运行时,动态的添加bean,dapeng框架在解析xml的字段时,使用到了动态注册,注册了一个实现了FactoryBean类!
- 最近用了Stream流,感觉超好用,记录一下。1、快速创建List比如我有个实体类User,User有个属性Namepublic class
- 一、什么是RestTemplate?RestTemplate 是一个HTTP客户端,在Spring Cloud的服务调用方使用它我们可以方便