static与final关键字

static关键字 及 static、final、static final的区别? (1)static关键字:(修饰公共属性和方法),本身是一个公共属性,不需要先实例化对象才能使用,当然也可以通过对象来调用,但是最好的做法是直接使用类名调用。 (2)定义static类型的属性虽然很方便使用,但真正设计类时,首选非static属性,只有考虑共公信息存储时才定义使用static类型属性。 (3)static方法只允许调用static属性或方法,不能调用非static属性或方法。 ... 阅读详情

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

1、修饰类:  当用final修饰一个类时,表明这个类是最终类,不能被继承。如果一个类你不想让它被继承,就可以用final进行修饰。

2、修饰方法:使用final修饰的方法不能被子类重写。(最终方法)

3、修饰变量: 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

由final修饰的变量,是常量,一旦初始化后,它的值不能被修改,即不能被重新赋值,主要是项目中应用的常量的抽取:比如URL常量、路径常量、数字常量等.不能让人轻易修改。

 

注意: 当final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。


 public static final String URL_GET = "/Api/GetMaintenanceType.html";//保养列表

————————————————————————————————>

Static关键字:  只能用于修饰成员变量和成员方法。

Static修饰的成员变量就成了类变量,随着类的加载而加载,生命周期和类一样。

Static修饰的成员方法变成了类方法,可以直接通过类名调用。和.class一样存在于方法区。

非静态的成员方法与成员变量的调用,只能通过创建对象调用。类名.方法名等;而静态的成员可以通过类名和创建对象调用(尽量用类名调用,不要创建对象)。

 

被修饰的成员有以下特点:

1)随着类的加载而加载、

2)优先于对象存在、

3)被所有对象所共享(比较节约空间)、(可以用代码证明)

4)可以直接被类名调用, Constant.BASE_URL、NetManager.getData();

 

注意事项:

1)静态方法只能访问静态的成员变量,不能访问非静态的成员变量。 为什么?因为静态成员先于对象存在,比对象先创建。当静态成员存在时,对象还没有创建。他们的生命周期不一样。但是非静态的可以访问静态的。

2)静态方法中不可用this/super关键字。为什么:this指向调用本方法的对象的引用(对象还没有创建呢)

由static修饰的成员变量、成员方法和类同时进行加载到内存,所以优先于对象存在。

 

一般在工具类中使用静态、static;

类是什么时候加载到内存的?  对象是什么时候加载到内存的?

 

内存分区图:

堆内存:  用于存储对象

栈内存:  用于存储基本类型变量区,使用完成后,所占空间会自动释放。

方法区: 
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

静态成员与非静态成员的区别:

生命周期:

静态成员随着类的加载而加载,随着类的消失而消失,生命周期长;

普通成员随着对象的存在而存在,随着对象的消失而消失。

存放位置:静态成员存在于方法区中,非静态成员存在于堆中。


static对性能的影响:

为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!  常量必须要加static关键字修饰 

static就是静态变量,声明为static的变量实质上就是全局变量,如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象!



内部类 viewHolder需要加static,下面这种写法影响性能
    class ViewHolder {
        TextView item_by_text1,item_by_text2;
    }
没有必要时请不用使用静态变量,生命周期比较长,不能被回收,占用内存。

2025最新OSM中国矢量数据保姆级下载指南(附百度网盘链接) 本文提供2025年OSM中国矢量数据的保姆级下载与使用指南。详细介绍了通过Geofabrik镜像站、QGIS插件及第三方平台获取数据的多种途径,重点解析了Shapefile格式数据的结构、WGS84坐标系特性,并指导进行格式转换与基础GIS应用,帮助用户高效合规地获取并利用这份开放地理数据资源。 阅读详情

相关推荐

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 480

static final和final static有区别吗?

没有区别 Java同时用final和static修饰一个变量的时候,并没有严格要求它们的顺序,也就是说static final和final static在使用效果上是没有区别的。 但是一般static final这个书写顺序更加让人所接受,static说明它属于类本身的,final说明它不可被修改,包括JDK源码里也是采用这个顺序。 就像声明一个整型数组可以用int[] array,也可以用int...

lrh329678260的博客 8622

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6618

java 中 声明 static final 和 final static 区别

实际上是等效的,它们都用于声明常量(constant)。在这两种情况下,变量的值在声明后不能再被修改,并且在类加载时即初始化。在语法上,它们的顺序并不影响其含义。是一个修饰符,它表示变量属于类而不是实例。当修饰符的顺序与常见的习惯一致时,代码更易读懂。的方式来声明常量,因为这符合广泛接受的 Java 编码标准。注意,在 Java 中,惯例是将。关键字之前,这是因为。

Primary_wind的专栏 1238

为ESXI Host添加v3700 FC存储

物理环境: ESXI Host version 5.1.0 Brocade SAN Switch v3700 Storage 存储和ESXI Host分别用光纤线连接在SAN交换机上 1.查询ESXI Host 的WWN号: 2. SAN交换机上查询存储的WWPN号 SAN交换机: 3.建立zone,添加到cfg文件中 brocade8Gb

haoshuwei531024的专栏 7562

【PDN仿真笔记9-使用Sigrity PowerDC进行IR Drop仿真的方法】

使用Sigrity PowerDC进行IR Drop进行仿真的方法

qq_42682826的博客 8001

final、static和static final区别和使用

final、static和static final用法 1.final关键字 final关键字修饰变量: 1.这个变量必须在构造对象时就能够初始化 2.如果是基本数据类型的变量,那么这个变量一旦初始化就不能更改,相当于一个常量 3.如果是引用数据类型的变量,则初始化后就不能更改它的引用,不过引用对象变量的值可以更改 final关键字修饰方法: 1.表明这个方法不能被子类重写,防止类修改它的含义 与static比较都不能重写但可以被子类继承调用,不同在于static可以写一个同名方法隐藏父类的方法,而fina

小白的博客 6076

告别License烦恼:手把手教你用VS Code+Cppcheck搭建免费的MISRA-C代码检查环境

本文详细介绍了如何使用VS Code和开源工具Cppcheck搭建免费的MISRA-C代码检查环境,帮助开发者规避商业工具的高额License费用。通过四步环境搭建和实战技巧,实现高效的代码静态检查,提升嵌入式开发的安全性和可靠性。

weixin_42523326的博客 248

什么是final、static和static final?

final:最终的——不可被改变的(修饰变量的) 修饰变量:不能被修改 修饰方法:不能被重写 修饰类:被final修饰的类不能被继承,可以去继承 static:静态——修饰属性,方法,代码块 static final:常量 被static final修饰的变量是常量,常量是不能被修改的,所以写静态的不如写常量

m0_63725962的博客 1730

STM32开发 -- 4G模块开发详解(1)

这部分一直再看,资料都已经整理好了,但是一直没有汇总。接下来就详细的看一下,GSM这部分是怎么实现的。

不积跬步,无以至千里 5万+

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证基本介绍划分原理留一划分交叉验证K折交叉数据下载程序设计参考资料致谢 基本介绍 在机器学习里,通常来说我们不能将全部用于数据训练模型,否则我们将没有数据集对该模型进行验证,从而评估我们的模型的预测效果。为了解决这一问题,有如下常用的方法: 第一种是最简单的,也是很容易就想到的。我们可以把整个数据集分成两部分,一部分用于训练,一部分用于验证,这也就是我们经常提到的训练集

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 6375

Java中 static、final和static final详解

static在类加载时初始化(加载)完成;:Static意为静态的,但凡被static 修饰说明属于类,不属于类的对象。:Static 可以修饰 内部类、方法、成员变量、代码块。:Static不可修饰外部类、局部变量【static 属于类的,局部变量属于其方法,并不属于类】:static 方法不能兼容this关键字【static代表类层次,this代表当前类的对象】:构造方法是静态方法吗?【不是,构造方法可以有this】:方便调用没有创建对象的方法/变量。

qq_43842093的博客 1231

风光互补制氢系统动态仿真建模与性能分析

摘要 本文针对离网型风光互补制氢系统,建立了包含光伏阵列、风力发电机、PEM电解槽、储能电池和储氢罐的完整动态数学模型。基于MATLAB/Simulink平台开发了模块化仿真框架,设计了考虑电解槽最小运行功率约束的能量管理策略。通过典型日仿真分析表明,风光互补可有效平抑单一能源的功率波动,系统整体能量效率达58.7%,电解槽负荷跟随特性良好。提出的动态仿真方法为风光制氢系统的优化设计和运行控制提供了有效工具。 关键词:风光互补制氢;PEM电解槽;动态仿真;MATLAB/Simulink;能量管理

huanghm88的专栏 76

Java 关键字—— static 与 final

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。        被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之

知秋一叶 2937

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

static和final关键字 ,static,final

static, final, springboot,springcloudalibaba,vue

QQ903275718的博客 699

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java中 final、static 关键字

一、final 关键字(最终的意思) final 修饰的类:最终的类,不能被继承 final 修饰的变量:相当于一个常量,在编译生成 .class 文件后,该变量变为常量值 final 修饰的方法:最终的方法,子类不能进行重写,但可以继承过来使用 二、static 关键字(静态的意思) static 可以用来修饰类中的成员(成员变量、成员方法),也可以用来修饰成员内部类 特点: sta...

ONESTARの博客 3289

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

final,static关键字总结

final关键字主要用在三个地方:变量,方法,类。 1.对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 2.当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。 3.使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继...

QLH的博客 365

static和final关键字

final和static往往搭配使用,效率更高,不会导致类加载(只调用类中的final+static修饰的常量时,不会导致类被加载)static 是 Java 中一个非常重要的关键字,它可以用来修饰。final 是 Java 中一个非常重要的关键字,它可以用来。final 方法不能被子类覆盖\重写(Override)。必须在声明或静态代码块中初始化;不能在构造器中初始化。当一个类被声明为 final 时,它不能被继承。final 变量一旦被初始化后就不能再修改。但注意在构造器中初始化的时候,

paishishaba的博客 2016

final 和 static 关键字

声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。// x = 2;y.a = 1;。private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。。

m0_71791722的博客 1578

static 、final关键字

一、static关键字 1.static可以修饰类、变量、方法、静态代码块 2.被static修饰的变量是对象公共的变量,当其中一个对象改变其值时,其它对象中该变量的值也会跟着改变 3.父类中被static修饰的方法不能重写,只能被继承,当父类中方法被static 修饰时,继承它的子类同名的方法必须也被static修饰 被static修饰的变量和方法可以直接被类名调用 ...

Josonli123的博客 352

final和static关键字辨析

final和static关键字辨析final关键字static关键字修饰成员变量和成员方法静态代码块static{}静态代码块与{}非静态代码块(构造代码块) final关键字 final关键字被用于修饰 变量,方法和类 final修饰的变量若为基本数据类型,值不可改变,如为引用数据类型,则引用指向不可改变。 当final修饰一个类时,final类中所有的成员方法都会被隐式的指定为final类型 ...

KevinLyz的博客 1944

static 和final 关键字的作用

基本数据类型的变量被赋值之后的数据本身就不会再发生变化,引用数据类型的变量被赋值之后,引用的对象不会再发生变化,但对象内的属性可以发生变化。可变性:当一个变量被声明为 final 时,它的值在初始化后不能被改变。方法优化:当方法被声明为 final 时,子类不能重写这个方法,这使得编译器可以进行更好的内联优化,从而提高方法调用的效率。

xweiran的博客 713

Java常用关键字final,static,this,super总结

final,static,this,super 关键字总结 final 关键字 static 关键字 this 关键字 super 关键字 参考 static 关键字详解 static 关键字主要有以下四种使用场景 修饰成员变量和成员方法(常用) 静态代码块 静态内部类 静态导包 补充内容 静态方法与非静态方法 static{}静态代码块与{}非静态代码块(构造代码块)...

LJJZJ的博客 572

static、final 关键字详解

JavaBasis0、static 关键字a、static 修饰变量 : **静态变量**b、static 修饰方法 :静态方法c、 static 修饰代码块 : 静态代码块d、 考察执行顺序的练习题e、 static 注意事项f 、面试题1、final 关键字a、final 修饰变量 : 最终值b、final 修饰方法 : 最终方法c、final 修饰类 :最终类 0、static 关键字 static 为关键字,可修饰变量、方法、代码块、内部类,且被修饰的信息都只会被加载一次 被 static 修饰表

JavaBasis 628

Java中final、static关键字总结

文章目录1、final关键字2、static关键字 1、final关键字 概念:final的意思是最终,不可变。它是个修饰符,用来修饰类、类的成员及局部变量;不能修饰构造方法。 特点 final关键字可用于类、方法、变量前。 final修饰的类不可被继承。 final修饰的变量为常量,这些变量只能赋值一次,且终身不变; final修饰的方法不可被重写。 final修饰原生类型时,原生类型的值不能发生变化。 final修饰引用类型时,表示该引用类型不能再指向其他对象,但引用对象的

Code皮皮虾的博客 1151

Java关键字final、static、this、super使用总结

一、final  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 fin...

lizhong 856
上一篇: BroadcastReceiver广播的使用
下一篇: 匿名对象和内部类
陈如水
博客等级 码龄12年 173粉丝 346原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值