java基础-修饰符
java修饰符
- 修饰符分类
- 访问修饰符的作用域代码说明
- 访问修饰符总览
- 非访问修饰符
- static
- final
- abstract
- synchronized
- volatile
- transient
- native
- strictfp
- 非访问修饰符总览表
- 非访问修饰符组合与冲突规则
修饰符分类
分类:访问修饰符 和 非访问修饰符
1.访问修饰符
- 公共
public
:任何情况都可以访问,不同包或相同包的任何类 - 保护
protected
:同一个包的类可访问+不同包的子类可访问 - 默认
default
:同一个包的任何类可访问 - 私有
pritave
:只能在同一个类可访问
2.非访问修饰符
访问修饰符的作用域代码说明
代码示例 注意看package包的路径
父类
package com.idss.utils.base;
public class Parent {public int publicVar; // 全局可见protected int protectedVar;// 同一包或子类可见int defaultVar; // 同一包可见private int privateVar; // 仅当前类可见
}
子类在同一包下的,只有private修饰的报错了
下面是子类在不同包下的 这里default和private的都报错了
说明
- public 无所谓 是否在用一个包 是不是子类都可以访问
- protected 哪怕不是同一个包,子类也允许访问
- default只能在同一个包中,在不同包即使是子类也不能访问
- private 哪怕是同一个包,子类也不允许访问
访问修饰符总览
修饰符 | 作用范围 |
---|---|
public | 全局可见:任何类均可访问。 |
protected | 同一包内 + 子类:允许同一包内的类访问,以及不同包的子类继承访问。 |
默认 (无修饰符) | 同一包内:仅允许同一包内的类访问(又称包级私有)。 |
private | 仅本类内部:仅允许定义它的类内部访问。 |
非访问修饰符
static
static详情介绍
final
final(不可变),可以声明成员变量、方法、类以及本地变量
1.final标记的类不能被继承
public final class Constants {................................
}
// class Sub extends Constants {} // ❌ final 类不可继承
2.final标记的方法不能被子类复写
public final void acquire(int arg) {................................}
3.final标记的变量(成员变量或局部变量)即为常量,只能赋值一次
public final class ImmutableClass { // final类private final int value; // final变量public ImmutableClass(int value) {this.value = value;}public final void printValue() { // final方法System.out.println(value);}
}
abstract
abstract抽象修饰范围是 类 或者 方法上
抽象类:不能被实例化
,需子类继承并实现抽象方法
抽象方法:只有声明,无具体实现(子类必须重写
)
public abstract class Animal {public abstract void sound(); // 抽象方法public void sleep() { // 非抽象方法System.out.println("Animal is sleeping");}
}public class Dog extends Animal {@Overridepublic void sound() {System.out.println("Dog barks");}
}
注意1:抽象类不能实例化,必须有子类进行继承,不是实现是继承。
注意2:抽象类是提供模板方法作用,所以在抽象类中常见正常模板方法 和 抽象方法,如在AbstractList 中,带有abstract修饰的抽象方法 想要实现具体的方法功能必须有子类继承实现
public abstract E get(int index); // 获取指定位置的元素
public abstract int size(); // 返回列表长度
同时还有不带abstract修饰的方法,提供了默认实现方式,就是默认的模板方法了
public boolean add(E e) { add(size(), e); // 默认在末尾添加元素return true;
}
synchronized
synchronized详情介绍
作用:
- 同步方法:锁定当前对象实例(
this
)或类的 Class 对象(静态方法)。 - 同步代码块:显式指定锁对象,控制更细粒度的同步。
volatile
1.确保内存可见性 2.禁止指令重排序 volatile详情描介绍
transient
序列化忽略:标记变量不被序列化
如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient(暂态的) [ˈtrænzɪənt] 关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化
详情使用参考序列化和反序化操作
native
声明方法由本地代码(如 C/C++)实现,需通过 JNI 调用
public class NativeDemo {public native void nativeMethod(); // 本地方法声明static {System.loadLibrary("NativeLibrary"); // 加载本地库}
}
需要注意的是,native声明的方法是本地方法通过 JNI 调用,但本地方法有操作系统和JVM管理两种
本地方法区分
strictfp
作用:确保浮点运算在不同平台上结果一致(遵循 IEEE 754 标准),针对浮点型数据类型
public strictfp class Calculator {public strictfp double calculate() {return 1.23 / 3.45; // 严格遵循浮点运算规则}
}
非访问修饰符总览表
修饰符 | 作用对象 | 核心功能 | 典型应用场景 |
---|---|---|---|
static | 类、方法、变量 | 定义与类关联的静态成员(不依赖实例) | 工具方法、常量、共享资源(如单例) |
final | 类、方法、变量 | 阻止继承、重写或修改 | 常量、不可变类、核心算法保护 |
abstract | 类、方法 | 定义抽象类或抽象方法(需子类实现) | 模板方法模式、接口默认实现 |
synchronized | 方法、代码块 | 保证线程同步(同一时间仅一个线程访问) | 多线程共享资源操作(如计数器、缓存) |
volatile | 变量 | 确保变量的可见性(直接读写主内存) | 多线程标志位控制(如状态标记) |
transient | 变量 | 序列化时忽略该变量 | 敏感数据(如密码)或临时缓存字段 |
native | 方法 | 声明方法由本地代码(如C/C++)实现 | JNI(Java Native Interface)集成 |
strictfp | 类、方法 | 确保浮点运算在不同平台结果一致 | 科学计算、金融精度敏感场景 |
非访问修饰符组合与冲突规则
-
互斥组合:
abstract
与final
:不能同时修饰类或方法(final
禁止扩展,abstract
需要子类实现)。abstract
与private
:抽象方法不能是private
(需子类可见)。abstract
与static
:抽象方法不能是static
(静态方法无法被重写)。
-
常见组合:
public static final
:定义全局常量(如public static final int MAX_SIZE = 100
)。private static final
:类内私有常量。public synchronized
:线程安全的公共方法。
相关文章:
java基础-修饰符
java修饰符 修饰符分类访问修饰符的作用域代码说明访问修饰符总览 非访问修饰符staticfinalabstractsynchronizedvolatiletransientnativestrictfp非访问修饰符总览表 非访问修饰符组合与冲突规则 修饰符分类 分类:访问修饰符 和 非访问修饰符 1.访问修饰符 公共…...
解锁基因密码之重测序(从测序到分析)
在生命科学的奇妙世界中,基因恰似一本记录着生命奥秘的“天书”,它承载着生物体生长、发育、衰老乃至疾病等一切生命现象的关键信息。而重测序技术,则是开启基因“天书”奥秘的一把神奇钥匙。 试想,你手中有一本经典书籍的通用版…...
当使用 Docker Desktop 启动 Tomcat 镜像时时间不对
当使用 Docker Desktop 启动 Tomcat 镜像时时间不对,可能由以下原因导致并可采取相应解决方法: 宿主机时间设置问题:Docker 容器的时间是由宿主机提供的,如果宿主机的时间不正确,那么容器的时间也会不正确。需确保宿主…...
golang gmp模型分析
思维导图: 1. 发展过程 思维导图: 在单机时代是没有多线程、多进程、协程这些概念的。早期的操作系统都是顺序执行 单进程的缺点有: 单一执行流程、计算机只能一个任务一个任务进行处理进程阻塞所带来的CPU时间的浪费 处于对CPU资源的利用&…...
Redisson的RedLock与联锁(MultiLock)的区别
Redisson提供了两种分布式锁机制:RedLock(红锁)和MultiLock(联锁),它们在实现分布式锁时有重要区别。 1. RedLock (红锁) 设计原理: 基于Redis官方提出的Redlock算法实现目的是在Redis集群环境下提供更可靠的分布式锁需要至少3个独立的Redi…...
图灵逆向——题十-魔改算法
目录列表 过程分析JS代码还原代码实现运行结果 本题属于魔改标准加密算法,所以无法使用JS或Python中的标准库来进行模拟加密了,只能一步一步的还原它的环境咯。。。 过程分析 打开控制台发现有个无限debugger,直接过掉~[doge]。。。 OK过掉…...
K8S学习之基础七十九:关闭istio功能
关闭istio功能 kubectl get ns --show-labels kubectl label ns default istio-injection-有istio-injectionenabled的命名空间,pod都会开启istio功能 反之,如果要开启istio,在对应命名空间打上该标签即可...
AI大模型课程系列汇总-某客时间篇
某客时间系列篇章💥 NO.文章(点击可跳转)1【课程系列11】某客时间AI 大模型应用开发实战营_ai大模型应用开发实战营 百度云-CSDN博客2【课程系列12】某客时间AI大模型微调训练营_极客时间 大模型rag 网盘-CSDN博客3【课程系列15】2024某客时…...
【人工智能】大语言模型多义词解析技术揭秘——以“项目“歧义消解为例
今天田辛老师和小伙伴探讨了一个有趣的多义词问题, 在人工智能技术日新月异的今天,大语言模型(LLM)对自然语言的理解能力已经达到令人惊叹的水平。大模型到底是如何去区分多义词的? 比如:当用户提到"…...
Coze平台 发布AI测试Agent的完整实现方案
以下是基于 Coze平台 发布AI测试Agent的完整实现方案,包含架构设计、核心功能模块、集成方式和落地步骤: 一、方案架构图 #mermaid-svg-kzS7cltxrbetjROl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kzS7cltxr…...
OpenHarmony子系统开发 - 调测工具(二)
OpenHarmony子系统开发 - 调测工具(二) 三、hiperf使用指导 hiperf是为开发人员提供性能采样分析的工具,基于内核perf机制进行的用户态能力的扩展,可以对指定的程序或者整个系统进行性能采样。 hiperf支持的命令有:l…...
keil ERROR: L6220E 如何解决
最近调试MK8000方案,增加code后遇到: keil ERROR: L6220E: Execution region RW_RAM1 size (24592 bytes) execeeds limit (24568 bytes) .region contains 93 bytes of padding and 0 bytes of veneers (total 93 bytes of linker generated content) …...
c++比较器——priority_queue用 ; unordered_map 自定义哈希函数
文章目录 priority_queue自定义比较方法对 比较对象结构体 重载 <仿函数为什么是传一个类std::less<T> 和 std::greater<T> lambda unordered_map自定义哈希函数仿函数lambda priority_queue template<class T,class Container std::vector<T>,class…...
centos-LLM-生物信息-BioGPT安装
参考: GitHub - microsoft/BioGPT https://github.com/microsoft/BioGPT BioGPT:用于生物医学文本生成和挖掘的生成式预训练转换器 |生物信息学简报 |牛津学术 — BioGPT: generative pre-trained transformer for biomedical text generation and mini…...
esp32cam远程图传:AI Thinker ESP32-CAM -》 服务器公网 | 服务器 -》 电脑显示
用AI Thinker ESP32-CAM板子访问公网ip的5112端口并上传你的摄像头拍摄的图像视频数据,并写一段python程序打开弹窗接受图像实现超远程图像传输教程免费 1. 首先你要有一个公网ip也就是去买一台拥有公网的服务器电脑,我买的是腾讯云1年38元的服务器还可…...
今日踩坑之@Autowired与@Resource区别
案例说明 今天算是体验到了这俩注解的区别了,真所谓不报错就记不住这两注解区别,其实之前本人也是知道这俩注解的区别的只是我们往往项目上用习惯了Autowired就忘了,看来只有真正体会到报错才能记忆犹新o(╥﹏╥)o。 说明一下本人的踩坑情况&…...
在 M1 芯片的 Mac 电脑上安装 Redis 可以通过 Homebrew 快速完成
以下是详细步骤: 1. 安装 Homebrew(若未安装) 打开 终端,执行以下命令安装 Homebrew(已安装可跳过): /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/…...
【从零开始学习JVM | 第一篇】快速认识JVM
什么是JVM? JVM--Java虚拟机,它是Java实现平台无关性的基石。 Java程序运行的时候,编译器将Java代码编译为平台无关的Java字节码文件(.class),接下来对应平台的JVM对字节码进行运行解释,翻译成…...
linux 里的创建了一个tomcat用户 怎么禁止该用户使用crontab 功能
在 Linux 系统中,可以通过以下方法禁止 tomcat 用户使用 crontab 功能: 方法 1:通过 /etc/cron.deny 文件限制 这是 最推荐的标准方法,适用于所有主流 Linux 发行版(CentOS、Ubuntu 等)。 操作步骤&#…...
Elasticsearch入门指南(二)
一、RestClient操作索引库 什么是RestClient? ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址: https://www.elastic.co/guide/en/elasticsearch/client/in…...
Mac监控新风尚:酷炫界面,性能监控更直观!
你是否曾经希望自己的Mac能够像Windows那样,轻松一按就能查看任务管理器来监控性能状态呢? 对于Mac用户来说,系统性能监控一直是个挑战——苹果公司并没有提供一个直观的性能监控工具,用户往往需要通过复杂的活动监视器来获取这些…...
碰一碰发视频源码开发深度解析,定制化开发
在移动应用开发领域,便捷的数据分享功能始终备受关注。碰一碰发视频这一创新功能,借助近场通信(NFC)技术,为用户提供了一种快速、直观的视频分享体验。本文将深入剖析碰一碰发视频功能的源码开发过程,涵盖从…...
基于 AI智能体、大模型、RAG、Agent 等技术构建公司内部闭环智能问答系统的详细方案,结合 Spring Boot + Vue 管理系统 的改造思路
以下是基于 AI智能体、大模型、RAG、Agent 等技术构建公司内部闭环智能问答系统的详细方案,结合 Spring Boot Vue 管理系统 的改造思路: 1. 系统架构设计 核心组件 数据源层 内部文档库:公司知识库(如操作手册、FAQ、流程文档&a…...
红宝书第三十四讲:零基础学会单元测试框架:Jest、Mocha、QUnit
红宝书第三十四讲:零基础学会单元测试框架:Jest、Mocha、QUnit 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、单元测试是什么? 就像给代码做“体检”,帮你检查…...
视觉分析AI赋能智慧水务多场景应用
利用视觉分析的方式智慧水务的AI算法方案 一、背景 在传统水务监管中,面临着诸多痛点。例如,对于河道污染、水面异常、河湖四乱问题以及水生态环境差等情况,传统监管效率低下,预警不及时,资源分散,监控功…...
网络2 IP与MAC IP地址
IP地址与MAC地址 一 1.关系: 网卡有唯一的物理地址:MAC地址,IP是配置在网卡上的逻辑地址。 IP地址、MAC地址是进行网络通信必不可少的 2.MAC地址是物理地址,不可更改,通常与IP地址绑定 3.MAC地址:48位 IP地…...
spark-Core
运行架构 核心组件 由上图可以看出,对于 Spark 框架有两个核心组件: Driver,Spark 驱动器节点 其中Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。 Driver 在 Spark 作业执行时主要…...
前端开发中的问题排查与定位:HTML、CSS、JavaScript(报错的解决方式)
目录 1.html 1. 结构错误调试:标签未正确嵌套 2. 语法问题调试:缺失引号 3. 断点调试:动态生成内容时的 JavaScript 错误 4. 网络调试:资源加载错误 5. 性能调试:页面加载性能 总结: 2.CSS 1. 定位…...
VMware Fusion Pro 13 for Mac虚拟机
VMware Fusion Pro 13 for Mac虚拟机 文章目录 VMware Fusion Pro 13 for Mac虚拟机一、介绍二、效果下载 一、介绍 VMware Fusion Pro for Mac,是一款mac虚拟机软件,跟Parallels Desktop一样,都可以让你的 Mac 同时运行一个或多个不同的操作…...
使用cline(VSCode插件)、continue(IDEA插件)、cherry-studio玩转MCP
安装环境 uv(python) 为什么不用pip? 使用 uv 时无需进行特定安装。使用 uvx 直接运行。 ⚡️ 比pip快10-100x https://github.com/pypa/pip https://ossinsight.io/analyze/pypa/pip?vsastral-sh%2Fuv#overview 安装 https://github…...
Kotlin FragmentTransaction多容器管理多个fragment
在Activity中管理五个Fragment的切换显示和隐藏,并且希望将这部分逻辑进行封装。之前已经教过他们如何在Kotlin中使用FragmentTransaction进行基本的添加、隐藏、显示和替换操作,现在需要进一步封装这些操作,提高代码的可维护性和复用性。 管…...
PyCharm显示主菜单和工具栏
显示主菜单 新版 PyCharm 是不显示主菜单的,要想显示主菜单和工具栏,则通过 “视图” → “外观” ,勾选 “在单独的工具栏中显示主菜单” 和 “工具栏” 即可。 设置工具栏 此时工具栏里并没有什么工具,因此我们需要自定义工具…...
WebView2最低支持.NET frame4.5,win7系统
WebView2最低支持.NET frame什么版本 WebView2 对 .NET Framework 的最低版本要求 基础支持范围 WebView2 官方支持的 .NET Framework 最低版本为 4.5,同时兼容 .NET Core 3.0 及以上版本18。对于 WPF、WinForms 等桌面应用开发,需确…...
ClickOnce 部署
1、在远程服务器172.16.9.252共享文件文件夹Bluetooth. 2、设置版本自动更新. 3、设置部署 4、设置创建桌面菜单 二、远程发布IIS即可...
Kotlin 中 集合 Collection 的扩展方法完全指南
Kotlin 中 Collection 的扩展方法完全指南 “代码是最美的诗篇”——本文将带你进入 Kotlin 集合扩展函数的世界,帮助你写出既高效又优雅的代码 🚀 一、引言 🤔 在 Android 开发中,集合(Collection)的操作…...
STM32F407使用ESP8266连接阿里云并上传数据
文章目录 前言一、ESP01S介绍1.ESP01S2.MQTT固件烧录3.WIFI连接 二、阿里云平台介绍1.创建产品及添加设备2.连接云平台 三、数据上报四、命令下发五、完整工程 前言 在实现OTA功能我们必须学会如何连接云平台,本文会仔细介绍使用STM32F407和ESP8266连接阿里云平台&…...
TorchServe部署模型-index_to_name.json
在TorchServe部署模型时,若要将模型输出结果映射到指定标签(如分类任务的类别名称),需通过index_to_name.json文件定义索引与标签的映射关系,并在打包模型时将其作为额外文件包含。以下是完整流程和命令示例࿱…...
每日一题——BMN3 小红炸砖块
“落下”操作只会对y轴有影响,所以注意y轴的变化即可 只要给出的坐标有砖块,就遍历查找他的上面是否有砖块,每一层都是这样,直到到没有砖块的那一层; 注意:定义矩阵时要注意,给出的坐标都是大…...
AWS服务器 磁盘空间升级到100G后,怎么使其生效?
在AWS(Amazon Web Services)上扩展EBS(Elastic Block Store)卷的大小后,服务器操作系统并不会自动识别新增的空间。要使操作系统识别并使用新增的磁盘空间,您需要进行一些额外的步骤。以下是详细的指导和说…...
AWS弹性容器服务(AWS Elastic Container Service,ECS)概述
李升伟 编译 标签:AWS | ECS | 容器 | Docker AWS弹性容器服务(AWS Elastic Container Service,ECS)简介 AWS弹性容器服务(ECS)是一项完全托管的容器编排服务,支持运行、管理和扩展容器化应用…...
【消息队列kafka_中间件】一、快速入门分布式消息队列
在当今大数据和分布式系统盛行的时代,消息队列作为一种关键的中间件技术,发挥着举足轻重的作用。其中,Apache Kafka 以其卓越的性能、高可扩展性和强大的功能,成为众多企业构建分布式应用的首选消息队列解决方案。本篇文章将带你深…...
【Axure元件分享】移动端滑动拨盘地区级联选择器
在移动端产品设计中,地区级联选择器(省/市/区)是用户信息录入场景的核心组件,尤其在电商收货地址、政务信息填报等高频业务中直接影响表单转化率。本文将介绍一款基于Axure的三级动态联动机型地区选择器,通过仿真级联滚…...
宁德时代25年校招演绎数字推理SHL测评题库题型及真题分析
非常感谢您对宁德时代的关注。祝贺您通过宁德时代校园招聘的专业面试环节,现邀请您参与完成以下测评。本轮共两份测评,每份测评对您的最终结果都非常重要,请务必在收到测评后48小时内完成!本测评需要进行远程监考,如果您无法或不愿…...
Python-Django+vue宠物服务管理系统功能说明
❥(^_-) 上千个精美定制模板,各类成品Java、Python、PHP、Android毕设项目,欢迎咨询。 ❥(^_-) 程序开发、技术解答、代码讲解、文档,💖文末获取源码+数据库+文档💖 💖软件下载 | 实战案例 💖文章底部二维码,可以联系获取软件下载链接,及项目演示视频。 本项目…...
洛谷普及B3691 [语言月赛202212] 狠狠地切割(Easy Version)
题目:[语言月赛202212] 狠狠地切割(Easy Version) 题号:B3691 难度:普及一 末尾包含对二分法优化的详细解释 题目分析 最后一句应该是本题的考查关键,关于筛选算法的时间优化, 但从功能理论上,我找到了…...
FPGA_BD Block Design学习(一)
PS端开发流程详细步骤 1.第一步:打开Vivado软件,创建或打开一个工程。 2.第二步:在Block Design中添加arm核心,并将其配置为IP核。 3.第三步:配置arm核心的外设信息,如DDR接口、时钟频率、UART接口等。 …...
Collection vs Collections:核心区别与面试指南
Collection vs Collections:核心区别与面试指南 一、本质区别(核心记忆点) 维度CollectionCollections身份集合框架的根接口操作集合的工具类包位置java.utiljava.util是否可实例化❌ 接口✅ 类(但构造器私有,不可实…...
sqlite3基本语句
创建表 CREATE TABLE student ( id INTEGER PRIMARY KEY, -- 学号,主键 name TEXT NOT NULL, -- 姓名,不能为空 age INTEGER, -- 年龄 gender TEXT -- 性别 ); SQLite常用数据类型 主键 …...
jupyter notebook 显示conda虚拟环境
使用 nb_conda_kernels 安装 nb_conda_kernels:这个包可以自动从你的 Conda 环境中发现并列出内核。 conda activate base # 确保你在 base 环境或任何其他环境中安装 conda install nb_conda_kernels显示jupyternotebook当前所在的位置。...
华为海思IC前端中后端(COTXPU)岗位笔试机考题
近期华为海思即将开始IC设计实现实习岗位机考。小编今天给大家分享下华为海思相关机考题目。 华为海思2025届校招笔试面试经验分享 每年IC秋招笔试其实也是从题库中随机抽出一些题。 华为海思2025届校招笔试面试经验分享华为海思机考主要分三个方向,分别是物理方向…...