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哈哈~ 立即下载

相关推荐

UR5双臂Gazebo仿真(Python)

近来在Gazebo上搭了一个ur5双臂仿真平台。 差不多就是以下这样。 使用rostopic list查看一下话题,如下 显然,采用/left_arm_controller/follow_joint_trajectory/goal和/right_arm_controller/follow_joint_trajectory/goal两个话题来控制双臂的运动。 现在的问题是,如何保证双臂运动的一致性,即如何能保证双臂能同时接受到以上两个消息。 思路一:设置/left_arm_controlle

qq_42823342的博客 2233

java 关键字final static arrayList

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

哎幽的成长 6967

导带、价带

价带是电子的“束缚态”能量区间,决定材料的化学性质;导带是电子的“自由态”能量区间,直接决定材料的导电能力;禁带宽度则是区分金属、半导体与绝缘体的核心参数。通过调控能带结构(如掺杂、应变工程),可设计出具有特定电学和光学特性的功能材料,推动电子信息、能源转换等领域的技术革新。

weixin_51552564的博客 5116

Java 静态代码块的使用

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

天道技术留底 1221

数字孪生模型构建理论及应用

源自:计算机集成制造系统作者:陶飞 张贺 戚庆林 徐 俊 孙铮 胡天亮 刘晓军 刘庭煜 关俊涛 陈畅宇 孟凡伟 张辰源 李志远 魏永利 朱铭浩 肖斌数字孪生作为实现数字化转型和促进智能化升级的重要使能途径,一直备受各行各业关注,已从理论研究走向了实际应用阶段。数字孪生是以多维虚拟模型和融合数据双驱动,通过虚实闭环交互,来实现监控、仿真、预测、优化等实际功能服务和应用需求,其中数字孪生模型构建是实现数字孪生落地应用的前提。

renhongxia1的博客 1万+

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 370

Java static与final详细讲解

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

u010112268的博客 1700

Android逆向实战:通过smali/baksmali动态注入DEX逻辑

本文详细介绍了在无源码条件下对Android应用进行动态逻辑注入的实战方法。通过使用smali和baksmali工具对DEX文件进行反编译、修改与重打包,实现在目标方法中插入自定义代码(如日志打印),并分享了定位目标、处理寄存器、避免常见错误的实用技巧与避坑指南。

weixin_29008691的博客 364

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

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

swadian2008的博客 1667

YOLO26改进 - 注意力机制 | MLLAttention (Mamba-Like Linear Attention) 类Mamba线性注意力:动态感受野适配多尺度目标

本文介绍了Mamba-Like Linear Attention (MLLA)模型及其在yolo26中的集成。MLLA结合了Mamba和线性注意力Transformer的优点,线性注意力降低计算复杂度,Mamba有效建模序列。该模型将Mamba的遗忘门和块设计等关键元素与线性注意力结合,还可用位置编码替代遗忘门。我们将MLLA引入yolo26,在检测头的不同尺度特征图上应用。实验表明,改进后的yolo26在目标检测任务中表现良好,体现了MLLA在提升模型性能上的有效性。

魔改工程师的博客 1150

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1191

java 基础篇

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

fanjaing的博客 477

36 Agent Memory:如何让智能体记住该记的东西

Agent 会调用工具,只能说明它有了行动能力。要让它跨会话、跨任务持续工作,还需要一套可治理的 Memory 系统。本文讲清上下文窗口、RAG 和 Agent Memory 的区别,以及工作记忆、情景记忆、语义记忆、程序记忆该如何分层设计。

老于的笔记的专栏 89

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

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

宜春 4万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java中的static和final

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

6202

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java static 与 final 详解

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

J_liaty的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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、付费专栏及课程。

余额充值