java中static与final

Java static final、static和final的区别 1、static finalstatic修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用EP:下面程序定义static final int CONSTANT 重新赋值时编译会出错。packag... 阅读详情
package com.aaa;

import java.util.ArrayList;
import java.util.List;

/**
 * @filename Test0128.java
 * @author l
 * @version 创建时间:2019年1月28日 下午4:47:58
 * @description
 */
class Apple {
	private static long a;
	private static long b = a++;
//	private final long b = a++;输出结果不一样
	public long geta(){ return b;}
}

class Orange {}

public class Test0128 {

	public static void main(String[] args) {
		List apples = new ArrayList();
		for(int i=0;i<3;i++){
			apples.add(new Apple());
		}
		for(int i=0;i<apples.size();i++){
			Apple apple = (Apple) apples.get(i);
			System.out.println(apple.geta());
		}
	}

}
  1. 输出结果为: 0,0,0
  2. 问题: 当把private static long b = a++;中static 改为final时,输出结果变为0,1,2
  3. 解答

①static在代码编译的时候初始化变量,final可以在代码运行中初始化变量。

②a++是先赋值给b,再自生加1
1.static作用域针对所有对象,类属性,加载类的时候,只初始化了一次,用一个空间,一个对象里面变了他的值,另外一个访问的也是他
2.final针对当前对象,每new一个,就会初始化这个对象b一个独立的空间
所以第一次都为static的时候,类加载的时候只初始化了一次,就是按顺序,a=0;b=a++=0; a=1;a没有给初始值,初始值为0
你b改成final后每new一次,就会初始化一个对象,每个对象里面独立的b
第一次new,a=0;b=a++=0;a=1;
第二次new, a=1;b=a++=1;a=2;
第二次new, a=2;b=a++=2;a=3;

Java关键字final、static使用总结 文档详细介绍了Java中final、static常见的使用方式,并且有实例程序,程序经Eclipse调试能够运行,欢迎给位童鞋下载阅读,希望对大家有所帮助,O(∩_∩)O哈哈~ 立即下载

相关推荐

【OTDR曲线工具箱】04 批量生成sor文件

软件下载地址:http://120.78.150.214:9999/isora.zip 通过一个测试数据sor文件,批量生成多个测试文件(基于Bellcore GR196及SR-4731标准)。主要考虑哪些问题: 1、sor测试是否符合要求(主要是衰减系数) 2、多个文件的创建时间 3、文件必须随机处理,不要看省去一模一样。 来说说怎么操作的 第一步:选择参考曲线 参考曲线的选择由两种方法:从文件中导入、从曲线库中选择。 其中曲线库分为公共库和个人库两种,平时浏览的sor文件都可以加载到库中。 第二步

夜晚是传说的博客 5268

java 关键字final static arrayList

一、static一般而言,当设计某个class时,其实就是在描述其外观长相以及行为举措。除非以new 来产生对象,否则并不存在任何实质对象。产生对象之际,存储空间才会分配出来,其函数才可供外界使用。但是有两种情况上述方式无法解决。第一种是,你希望不论产生了多少对象或是不存在任何对象的情形下,那些特定的数据的存储空间都只有一份。第二种情况是,你希望某个函数不要和class object绑在一起,通过s

哎幽的成长 6967

Halcon 3D视觉实战:5步将线激光高度数据转为可分析的深度图与点云

本文详细介绍了如何利用Halcon平台将线激光高度数据转换为深度图与点云的5步实战方法。通过具体代码示例和工业检测案例(如锂电池胶水测量),帮助工程师高效处理3D视觉数据,实现从原始数据到三维可视化的完整技术链路。

weixin_29039773的博客 361

Java 静态代码块的使用

在程序中经常会使用一些常量,对于list和map如何进行初始化呢,这种情况下可以使用静态代码块或者静态方法;以上程序输出为1,2Object。

天道技术留底 1221

STM32F407单一定时器输出4路不同频率及占空比的PWM波

STM32F407单一定时器输出4路不同频率及占空比的PWM波

qq_43868701的博客 4918

医学影像弹性形变处理

这段代码的主要流程是:读取 DICOM 医学影像,尝试使用 MONAI 进行弹性形变(根据版本适配),如果失败则使用 OpenCV 实现,最后可视化并保存处理结果。这样可以在不同环境下灵活处理医学影像的弹性形变需求。后面会写一篇解释弹性变形方法的短文。

wh_xia_jun的专栏 779

Java static与final详细讲解

目录 一、static static和final一块用 二、final 可修饰部分 static:成员变量、方法、代码块(静态代码块)、内部类(静态内部类) final: 类、成员变量、方法、局部变量 一、static 当设计某个class时,其实就是在描述其外观长相以及行为举措。除非以new 来产生对象,否则并不存在任何实质对象。产生对象之际,存储空间才会分配出来,其函数才可供外界使用。 但是有两种情况上述方式无法解决。 第一种:你希望不论产生了多少对象...

u010112268的博客 1700

QSPI Flash的原理与QSPI时序的Verilog实现

本节主要是讨论QSPI(Quad SPI,四线SPI总线)的相关内容。我的开发板上有一片型号是W25Q128BV的Quad SPI Flash存储器,本文将以它为例子来说明QSPI操作的一些内容。

Go Forward Forever! 4166

【Java】Java 中的 final 关键字和 static 关键字

这两个关键字编写代码时会经常用,正确的使用这些关键字,可以形成良好的编程习惯,保护好代码的封装性。

swadian2008的博客 1667

YOLOv11改进 | Mamba-YOLOv11-L:基于SSM的高效全局建模,精度与效率的双重突破

摘要: 本文提出Mamba-YOLOv11-L,通过集成状态空间模型(SSM)改进YOLOv11的全局建模能力。针对YOLOv11在复杂场景中全局依赖缺失、精度-效率矛盾等问题,SSM以$O(N)$计算复杂度实现长程语义捕捉。改进后的模型在工业缺陷检测(Recall↑12%)、边缘设备部署(内存↓16%)、多尺度目标检测(小目标mAP↑9%)等场景表现优异,推理速度保持>40 FPS。核心创新包括轻量化SSM模块设计(稀疏状态转移+局部上下文融合)及与YOLOv11骨干的深度集成,代码实现展示了SSM

走向CTO的路上... 567

YOLO26 实战全流程:从数据集标注到端到端无NMS推理(完整版,附ProgLoss核心调参技巧+避坑指南)

本章节是实战经验的精华❌ 数据集标注不规范,导致模型精度低 → ✅ 严格遵守工业级标注规范,标注框紧贴目标边缘,不要漏标/多标;❌ 训练时未使用预训练权重,导致收敛极慢 → ✅ 必须开启,预训练权重能让模型快速收敛;❌ ProgLoss参数调整幅度过大,导致训练崩溃 → ✅ 每次只调整一个参数,幅度±0.02即可,循序渐进;❌ 推理时强行添加NMS参数,画蛇添足 → ✅ YOLO26无需NMS,推理命令中不要加conf/iou参数,否则会降低推理速度;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1141

java 基础篇

Java面试宝典(基础篇) 一.java 基础 1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 重写和重载的区别? 答: Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问

fanjaing的博客 477

Claude Desktop新功能:让非技术人士也能自主编程

摘要: Anthropic近日在Claude桌面应用中集成了Claude Code功能,显著降低了非技术用户的使用门槛。Claude Code作为代理式编程工具,支持多任务并行处理、Git隔离和可视化会话管理,无需命令行操作即可实现代码调试、重构等复杂任务。新增的“计划模式”通过先分析后执行的流程,确保安全性,使产品经理、数据分析师等非开发者也能参与技术工作。这一更新标志着AI技术正打破专业壁垒,让领域专家无需编码背景即可利用高级工具,推动技术民主化。

独立开发,substack顶级编辑 1540

java中的Static、final、Static final各种用法

前言 对Static、final、Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从容的回答… static 加载:static在类加载时初始化(加载)完成 含义:Static意为静态的,但凡被static 修饰说明属于类,不属于类的对象。 可修饰:Static 可以修饰 内部类、方...

宜春 4万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java中的static和final

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

6202

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java static 与 final 详解

本文深入解析Java中static和final关键字的核心概念与应用。static用于声明类级别的成员(变量、方法、代码块、内部类),在类加载时分配在方法区,所有实例共享同一副本。final表示不可变性,可修饰类(不可继承)、方法(不可重写)和变量(引用不可变)。static final组合定义全局常量,可能被编译器内联优化。文章通过代码示例详细展示了static的四种使用形式(静态变量、常量、代码块、方法)和final的三种应用场景(类、方法、变量),并分析了它们在内存中的存储特点及线程安全特性。

J_liaty的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java中static、final、static final的区别

final可以修饰:属性,方法,类      final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。      final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。      final修饰的属性表明是一个常数(创建后不能被修改)。      final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继

沉浮 4万+

JAVA中static、final、static final的区别

1 问题当我们在使用java写类的属性时总会用到很多的类型去修饰它,比如字符串String,整数型int,但是我们偶尔也会遇到 static、final、static final,那么他们的区别是什么呢?2 方法final final可以修饰属性、方法、类,局部变量(方法中的变量)。 final修饰的属性的初始化可以在编译期,也可以在运行期,但是在初始化后就不能改变了。final修饰的属性表明...

算法与编程之美 2104

JAVA的final与static

static static是静态的意思,也是全局的意思。static定义的东西,属于全局,与类相关,不与具体实例相关,是类实例之间共享的。 1. 被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个对象来 2. 被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个对象来 static与非static的区别: 在内存中存放的位置不同:所有static修饰的属性和方法都放在内存的方法区(内存的方法区相当于常驻内存,如果一个方法或者变量

dlz_yhn的博客 5552

Java中static,final,static final的区别

该文章中的内容不一定准确,若有错误欢迎指出。 static,final都是Java中的修饰关键字,static final则是static + final 组合,它与 final static 无区别 修饰范围: static可修饰:属性,方法,代码块,内部类(静态内部类或嵌套内部类) final可修饰:属性,变量,方法 ,局部变量(在方法中的变量) static fin...

学而不思则罔 思而不学则殆 504

java中static、final、static final浅析

参考资料: https://www.cnblogs.com/EasonJim/p/7841990.html https://blog.youkuaiyun.com/hust_yfang/article/details/79585696 https://blog.youkuaiyun.com/zhangyanli0414/article/details/79008681 https://www.cnblogs.com/qq...

吟游诗人——吟唱生命的不朽 804

Java中static、final、static final的区别和使用

一. final final类不能被继承,类中的方法默认是final; final方法不能被覆盖,但可以被继承,就是不可修改的意思; final成员变量表示常量,表示一但赋值就不能被修改; final不能用于修饰构造函数; private修饰的方法默认是final的,即不能被覆盖。 注意:final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保...

wenSirZhong的博客 2392

Java中static、final、static final的区别

分享知识 传递快乐 final final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。 final修饰的属性表明是一个常量,创建后不能被修改。 final修饰的方法表示该方法在子类中不能被重写。 fi...

旷野历程 382

Java中static、final用法

一、Static请先看下面这段程序: public class Hello { public static void main(String[] args) { //(1)

yimianshisan的专栏 1617

java static final 内存_Java中的内存处理机制和final、static、final static总结

装载自:http://blog.youkuaiyun.com/wqthaha/article/details/20923579Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。一个完整的Java程序运行过程会涉及以下...

weixin_35843523的博客 149

java static final 内存_Java中的static和final

java中的static和final此篇文章是记录我在学习Java中static和final关键字的笔记。static:一、static变量:按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态...

weixin_33321740的博客 213
上一篇: java中非静态内部类中不可声明静态成员
下一篇: Java容器
hellorichen
博客等级 码龄13年 199粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值