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
猜你喜欢
- 本文实例讲述了Java循环队列原理与用法。分享给大家供大家参考,具体如下:在正式进行循环队列学习之前,我们先来看看在顺序队列中删除队首元素出
- 老生常谈的配置 但是还是需要说明一下EurekaApplication @EnableEurekaServer指定为server端
- 一、demo简介1.效果展示如下图,我截了三个瞬间,但其实这是一个连续的动画,就是这个大圆不停地吞下小圆。2.这个动画可以拆分为两部分,首先
- like模糊查询特殊字符报错转义处理方案1 <if test="projectName!
- 在开发中,用到springboot项目,当打包后部署运行时,出现了这个问题,网上搜了好多,又是加META-INF配置,又是加啥的,感觉spr
- 刚接触了一个微服务架构的项目,了解到了启动方式,记录一下1、找到workspace.xml2.打开workspace.xml,找到其中的配置
- 如下所示:import org.apache.commons.lang.StringUtils; public class Test {
- ##创建测试类 新建Java工程创建测试类如下代码:(创建文件验证定时器是否执行)package makeFile;import java.
- 定义:/** * @author Administrator * @project: TestOne * @package: PACKAGE
- 1.封装分页Page类package com.framework.common.page.impl;import java.io.Seria
- Java有一种特殊线程,守护线程,这种线程优先级特别低,只有在同一程序中的其他线程不执行时才会执行。由于守护线程拥有这些特性,所以,一般用为
- 一、需求分析:1、输入一个数组-----------------------------------------》程序要接收一组输入的数组,
- 很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的。今天来简单地模仿一下,还自
- 前言RefreshIndicator是Flutter里常见的下拉刷新组件,使用是比较方便的。但由于产品兄弟对其固定的刷新样式很是不满,而且代
- /** * 三角数字: * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,... *
- 开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格
- 一.为什么要用线程池先来看个简单的例子1.直接new Thread的情况:public static void main(String[]
- final关键字的作用final关键字可以用来修饰引用、方法和类。1.final关键字修饰类当用final关键字修饰一个类后,这个类不能被继
- 通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置<TextView android:layout_widt
- ApplicationContext简述ApplicationContext代表IOC容器,在SpringIOC容器中读取Bean配置创建B