Java关键字final、static使用总结

arduino esp8266_Arduino传感器教程 第22章ESP8266 控制 5V 继电器 ESP8266控制5V继电器目录一、NodeMCU二、工作原理本文将使用亚马逊 AlexaEcho 和 ESP8266 控制 5V 继电器。NodeMCUNodeMCU 是一个开源的 IoT 物联网硬件开发板,由于它支持 WIFI 功能且使用方法十分类似 Arduino 开发板,所以近些年获得了越来越多来自全世界的创客朋友们的青睐。NodeMCU 尺寸与 Arduino Nano 类似。... 阅读详情

 

常看很多入门鸟们在final 和static运用上感到迷茫,现总结一下final和static的运用方法,希望对大家有帮助。
一、final
根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
1、final类
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。 这种类通常我们称为完美类。
2、final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
例如:
public  class  Test1 {
public static  void  main(String[] args) {
}
public  void  f1() {
System.out.println(" f1 ");
}
//无法被子类覆盖的方法
public final void  f2() {
System.out.println("f2");
}
public void  f3() {
System.out.println("f3"); }
private void  f4() {
System.out.println(" f4 ");
}
}
public class Test2  extends  Test1 {
public void  f1(){
System.out.println( " Test1父类方法f1被覆盖!" );
}
public  static void
main(String[] args) {
Test2 t = new Test2();
t.f1();
t.f2();
//调用从父类继承过来的final方法
t.f3();
//调用从父类继承过来的方法
//t.f4();
//调用失败,无法从父类继承获得
}
}
 
3、final变量(常量)
用final修饰的成员变量表示常量,值一旦给定就无法改变!
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
一旦给final变量初值后,值就不能再改变了。
另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为空白final,无论什么情况,编译器都确保空白final在使用之前必须被初 始化。但是,空白final在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同, 却有保持其恒定不变的特征。

4、final参数
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。
public class
Test1 {
public static void  main(String[] args) {
new Test1().f1(1); }
public void
f1( final int i)
{
//i++;    i是final类型的,值不允许改变的.
System.out.print(i);
}
}
 
二、static
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代块,但是Java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,JVM 就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。大家可以从内存开辟来理解,static定义变量在内存中开辟空间只有一个。所以所有针对这个变量的调用都引用的是同一个地址的值。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(也可以在非静态成员方法中使用 ),但是不能在其他类中通过类名来直接引用。实际上private是访问权限限定,static表示不需要实例化就可以使用。
static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
类名.静态方法名(参数列表...)
类名.静态变量名
用static修饰的代码块表示静态代码块,当JVM加载类时,就会优先执行该代码块。
1、static变量
一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。
两者的区别是:
对于静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问。
对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响。
2、静态方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态成员变量和成员方法。原因是实例是与实际的对象相关联的。
因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
3、static代码块
static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
利用静态代码块可以对一些static变量进行赋值,大家可以看看static的main方法,JVM在运行main方法的时候可以直接调用而不用创建实例。
4、static和final一块用表示什么
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。
就这么多,希望能给新手们些许帮助

android OTA升级之后,apk崩溃无法启动 也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。 阅读详情

相关推荐

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2927

static int和static final int的区别

1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:   对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量...

weixin_30724853的博客 809

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 622

java中final

fianl

qq_44761778的博客 424

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 387

【2005】人工智能⭐

问题的解答来自于过去的经验而不是规则,这些经验是以案例方式存储的。但是当人们遇到一个新的问题的时候,一般先是回忆,从记忆中找到一个与新的问题相似的案例,然后把该案例的有关信息和知识复用到新问题的求解之中。1、若案例(case)不够充足,而有足够的规则(知识),试问如何构建一个包含有基于案例推理和基于规则推理的推理系统,以使推理效率提高而且总能求得问题的解。一般认为,CBR适合缺乏完备和健全的理论,但又可获取丰富经验的领域,而RBR则适合于对领域有充分的认识,能以完备和健全的形式表示领域理论的场合。

super_mochi1 280

final和static搭配使用成 final static(static final)时,调用此常量,为什么类中的静态代码块等不会被加载,也就是类不会被加载

final和static搭配使用成 final static(static final)时,调用此常量,为什么类中的静态代码块等不会被加载,也就是类不会被加载 1、首先了解类加载的过程 Java 的类加载过程可以分为 5 个阶段: 载入 JVM 在该阶段的主要目的是将字节码从不同的数据源(可能是 class 文件、也可能是 jar 包,甚至网络)转化为二进制字节流加载到内存中,并生成一个代表该类的 java.lang.Class 对象。 验证 JVM 会在该阶段对二进制字节流进行校验,只有符合 JV

qq_41473383的博客 2420

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 413

java3

三.接口:就是给出一些没有实现的方法,封装到一起,当使用时,就将这些方法写出来,如果一个类要implements实现接口,需要将该接口的抽象方法都实现,jdk8以后接口可以有方法体,比如静态方法,或者加关键字default。一.final:用途:不希望类被继承,父类某个方法被子类覆盖,类的某个属性值被修改,某个局部变量被修改。用途之一:实现接口里的方法需要创建一个类去继承,然后再实现方法,匿名内部类可以直接实现该方法创建匿名类,该类创建一次就消失了,可以访问外部类的所有成员,外部其他类不能访问匿名内部类。

qq_52830421的博客 441

【滚雪球学数学建模】第1节·建模入门+三步法+案例

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 6412

Arcgis加载在线地图(内涵各种在线地图)

这三个在线地图是最常用的在线地图,其他几个类型的在线地图请自行查看。,加载出在线图层说明连接成功,点击。1、首先打开Arcgis,找到。

爱吃雪糕的小布丁的博客 1万+

Java中 final、static 关键字

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

ONESTARの博客 3289

Swin Transformer 类可视化(grad CAM)

完整代码 from pytorch_grad_cam import GradCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM from pytorch_grad_cam.utils.image import show_cam_on_image from torchvision.models import resnet50 import glob from demo import parse_option from models i

G果的博客 6639

Java 关键字—— static 与 final

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

知秋一叶 2937

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java中static、final关键字【详解】

java中static、final关键字详解,概述、定义、使用、访问

qq_44700578的博客 4024

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

LJJZJ的博客 572

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

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

lizhong 856

Java关键字final、static使用方法大全

目录 ★Java关键字final、static使用方法大全 一、 final 1 final类 2 final方法 3 final变量(常量) 4 final参数 二、static 1 static变量 2 静态方法 3 static代码块 三、特别要注意一个问题: 简单用法介绍,看例子就会:Java 枚举(enum) | 菜鸟教程 (runoob.com) 更深层的介绍: 为什么要有枚举(没有枚举用什么来代替,有什么使用场景上的缺陷),枚举经过编译器的编译出的实际类型,枚举类型和

m0_37965811的博客 1011

Java中final、static关键字总结

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

Code皮皮虾的博客 1152

Java final,static 关键字

final 关键字 final 修饰 类 final 修饰 类 的时候,表示类不能被继承。所以 final 不能修饰抽象类。 final 修饰 方法 final 修饰 方法 的时候,表示方法不能被重写。子类继承父类的方法,不能重写 final 修饰的方法。 private 修饰的方法,会被隐式指定为final。 final 修饰 变量 final 修饰 变量 的时候,表示变量不能被改变。修饰基本数据类型的时候,值不能改变。修饰引用类型的变量的时候,表示引用指向的对象不能改变,但是对象的值可以改变。 fina

七月与雪的博客 160

理解Java中的 this 和 static 和 final 关键字

this关键字的作用 (1)this调用本类(当前对象)中的属性,也就是类中的成员变量; (2)this调用本类(当前对象)中的其他方法; (3)this调用本类(当前对象)中的其他构造方法,调用时要放在构造方法的首行。 Public Class Student { String name; //定义一个成员变量name private void SetName(String name) { //定义一个参数(局部变量)name this.name=name; //将局部变量的值传递给成员变量

树暖 441

Java Final static 关键字

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

果冻的专栏 505

Java中final和static关键字总结

1、final: final关键字可用于类、方法、变量前。 final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承。 final修饰变量,在显示初始化后不可改变变量值,用于常量定义。如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性)。 final修饰的方法不可被重写。 错误案例) package com.sp; publi...

weixin_43641389的博客 162

java static 与 final_Java的static和final关键字的用法

static关键字的用法static的意思是“’静态的”,在java里面可用于修饰属性和方法。static关键字的应用应注意以下几种情形:1.static作用于某个字段,一个static字段对每个类来说只有一份存储空间,而非static字段是每个对象有一份存储空间。2.static作用于方法的重要用法是不需要创建任何对象直接调用该static方法,这对于main()方法很重要。3.static不能...

weixin_42360993的博客 233

java final jvm_理解Java中的final和static关键字

回顾这两个关键字前,先考虑一个问题:Static变量存储在JVM中的位置,或者说static变量是如何被加载的?JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area),相当于常驻内存,如果一个方法或者变量声明为static,可以节约内存,不必要为每个对象实例化的时候分配内存。1.final关键字根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态...

weixin_34357697的博客 632
下一篇: MyEclipse 修改默认工作路径
Admin_
博客等级 码龄16年 28粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值