花几千上万学习Java,真没必要!(二十二)
1、final关键字:

测试代码1:
package finaltest.com;public class FinalBasicDemo {public static void main(String[] args) {// final修饰基本数据类型变量final int number = 5;// 尝试修改number的值,这将导致编译错误// number = 10; // 这行会报错System.out.println("number: " + number);}
}
测试代码2:
package finaltest.com;//final关键字
public class FinalDemo { // final静态变量,在声明时初始化 private static final int MAX_SIZE = 100; // final实例变量,通常在构造方法中初始化 private final String name; // final局部变量,通常在声明时或初始化块中初始化 // 不直接在类中声明final局部变量,因为它需要被赋值 // 构造方法 public FinalDemo(String name) { this.name = name; // 初始化final实例变量 } // final方法,表示该方法不能被子类重写 public final void showDetails() { System.out.println("Name: " + name); System.out.println("Max Size: " + MAX_SIZE); } // 普通方法,在方法内部使用final局部变量 public void processData(int[] data) { // final局部变量,在声明时初始化 final int threshold = 50; for (int i = 0; i < data.length; i++) { if (data[i] > threshold) { System.out.println("Data[" + i + "]: " + data[i] + " is greater than threshold."); } } } // main方法,测试FinalDemo类 public static void main(String[] args) { // 创建FinalDemo对象 FinalDemo demo = new FinalDemo("ExampleObject"); // 调用final方法 demo.showDetails(); // 调用普通方法,并传递一个整数数组 int[] data = {20, 60, 30, 80, 40}; demo.processData(data); // 尝试修改final静态变量的值(编译错误) //FinalDemo.MAX_SIZE = 200; // 这行会报错 // 尝试在构造方法之外修改final实例变量的值(编译错误) // demo.name = "NewName"; // 这行也会报错 }
}
运行结果如下:
测试代码3:
package finaltest.com;
public class FinalReferenceDemo { static class MyObject { int value; public MyObject(int value) { this.value = value; } public void setValue(int value) { this.value = value; } @Override public String toString() { return "MyObject{" + "value=" + value + '}'; } } public static void main(String[] args) { // final修饰引用数据类型变量 final MyObject obj = new MyObject(10); // 尝试修改obj的引用(即对象的地址),将导致编译错误 // MyObject newObj = new MyObject(20); // obj = newObj; // 这行会报错 // 可以改变obj引用对象内部的数据 obj.setValue(20); System.out.println(obj); }
}
测试代码4:
package finaltest.com;
//一个 final 实例变量 finalInstanceVar,它必须在构造方法中初始化。
//一个 static final 静态变量 STATIC_FINAL_VAR,它在声明时就被初始化了,并且可以通过类名直接访问。
//一个 final 方法 finalMethod,该方法不能被任何子类重写。
//一个普通方法 printInfo,用于打印实例变量和静态变量的值。
public class MyClass { // final 实例变量,必须在构造方法中初始化 private final int finalInstanceVartest; // final 静态变量,在声明时初始化 private static final int STATIC_FINAL_VAR = 42; // 构造方法,用于初始化final实例变量 public MyClass(int finalInstanceVar) { this.finalInstanceVartest = finalInstanceVar; } // final 方法,表示该方法不能被重写 public final void finalMethod() { System.out.println("This is a final method."); } // 普通方法,可以访问final变量 public void printInfo() { System.out.println("Final instance var: " + finalInstanceVartest); System.out.println("Static final var: " + STATIC_FINAL_VAR); } // main 方法,测试这个类 public static void main(String[] args) { MyClass obj = new MyClass(10); obj.finalMethod(); // 调用final方法 obj.printInfo(); // 调用普通方法,打印信息 // 尝试访问静态final变量,可以直接通过类名访问 System.out.println("Direct access to static final var: " + MyClass.STATIC_FINAL_VAR); }
}
运行结果如下:
2、static关键字:
测试代码1:
package finaltest.com;
public class StaticDemo { // 静态变量 static int counter = 0; // 静态初始化块 static { System.out.println("Static block initialized"); } // 静态内部类 static class StaticInner { public void display() { System.out.println("Static inner class method"); } } // 构造方法,实现静态变量的增加 public StaticDemo() { counter++; } // 静态方法 public static int add(int a, int b) { return a + b; } // 主方法,说明静态变量、静态方法和静态内部类的使用 public static void main(String[] args) { // 静态代码块会在类加载时自动执行 // 调用静态方法 System.out.println("Sum of 5 and 3 is: " + add(5, 3)); // 访问静态变量 System.out.println("Number of StaticDemo objects created: " + counter); // 使用静态内部类 StaticInner inner = new StaticInner(); inner.display(); }public void displayInstanceCount() { // 直接访问静态变量instanceCount并打印其值 System.out.println("Number of StaticDemo objects created: " + counter); }
}
运行结果如下:
测试代码2:
package finaltest.com;
public class StaticTest {// 静态变量private static int instanceCount = 0;// 静态代码块static {System.out.println("Static block initialized");// 实现静态变量的初始化代码}// 构造方法,实现静态变量的增加public StaticTest() {instanceCount++;}// 静态方法public static int add(int a, int b) {return a + b;}// 静态内部类static class DatabaseConnection {// 数据库连接private static String connectionString = "jdbc:mysql://localhost:3306/mydb";// 静态方法,模拟获取数据库连接public static String getConnectionString() {return connectionString;}}// 一个非静态方法public void displayInstanceCount() {System.out.println("Number of StaticDemo objects created: " + instanceCount);}// 主方法,说明静态和非静态成员的使用public static void main(String[] args) {// 静态代码块会在类加载时自动执行// 调用静态方法System.out.println("Sum of 5 and 3 is: " + add(5, 3));// 访问静态内部类的静态成员System.out.println("Database connection string: " + DatabaseConnection.getConnectionString());// 创建StaticDemo的实例StaticDemo obj1 = new StaticDemo();StaticDemo obj2 = new StaticDemo();// 调用非静态方法obj1.displayInstanceCount(); }
}
运行结果如下:
相关文章:
花几千上万学习Java,真没必要!(二十二)
1、final关键字: 测试代码1: package finaltest.com;public class FinalBasicDemo {public static void main(String[] args) {// final修饰基本数据类型变量final int number 5;// 尝试修改number的值,这将导致编译错误// number 10; // …...
在RK3568上如何烧录MAC?
这里我们用RKDevInfoWriteTool 1.1.4版本 下载地址:https://pan.baidu.com/s/1Y5uNhkyn7D_CjdT98GrlWA?pwdhm30 提 取 码:hm30 烧录过程: 1. 解压RKDevInfoWriteTool_Setup_V1.4_210527.7z 进入解压目录,双击运行RKDevInfo…...
1.30、基于卷积神经网络的手写数字旋转角度预测(matlab)
1、卷积神经网络的手写数字旋转角度预测原理及流程 基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下,我们可以通过构建一个卷积神经网络(Convolutional Neural Network,CNN)来实现该任务。以下…...
Windows如何使用Python的sphinx
在Windows上使用Python的Sphinx进行文档渲染和呈现,可以遵循以下步骤进行操作: 安装Python:首先,确保你的Windows系统上已经安装了Python。你可以从Python的官方网站下载并安装适合你系统(32位或64位&…...
C++ STL nth_element 用法
一:功能 将一个序列分为两组,前一组元素都小于*nth,后一组元素都大于*nth, 并且确保第 nth 个位置就是排序之后所处的位置。即该位置的元素是该序列中第nth小的数。 二:用法 #include <vector> #include <a…...
【PostgreSQL教程】PostgreSQL 选择数据库
博主介绍:✌全网粉丝20W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…...
C# —— HashTable
集合collections命名空间,专门进行一系列的数据存储和检索的类,主要包含了:堆栈、和队列、list、ArrayList、数组 HashTable 字典 storeList 排序列表等类 Array 数组 长度固定, 类型固定 通过索引值来进行访问 ArrayList动态数组,…...
LeetCode 第407场周赛个人题解
目录 100372. 使两个整数相等的位更改次数 原题链接 思路分析 AC代码 100335. 字符串元音游戏 原题链接 思路分析 AC代码 100360. 将 1 移动到末尾的最大操作次数 原题链接 思路分析 AC代码 100329. 使数组等于目标数组所需的最少操作次数 原题链接 思路分析 A…...
使用Django框架实现音频上传功能
数据库设计(models.py) class Music(models.Model):""" 音乐 """name models.CharField(verbose_name"音乐名字", max_length32)singer models.CharField(verbose_name"歌手", max_length32)# 本质…...
[路由器]IP-MAC的绑定与取消
背景:当公司的网络不想与外部人员进行共享,可以在路由器页面配置IP-MAC的绑定,让公司内部人员的手机和电脑的mac,才能接入到公司。第一步:在ARP防护中,启动IP-MAC绑定选项,必须启动仅允许IP-MAC…...
Idea配置远程开发
Idea配置远程开发 本篇博客介绍使用idea通过ssh连接ubuntu服务器进行开发 目录 Idea配置远程开发1.idae上点击file->Remote Development2.点击New Connection3.填写相关信息4.输入密码5.选择IDE版本和项目路径5.1 点击open an SSH terminal打开控制台5.2 依次执行命令 6.成…...
lua 实现 函数 判断两个时间戳是否在同一天
函数用于判断两个时间戳是否在同一天。下面是对代码的详细解释: ### 函数参数 - stampA 和 stampB:两个时间戳,用于比较。- resetInfo:一个可选参数,包含小时、分钟和秒数,用于调整时间戳。 ### 函数实现…...
工作纪实53-log4j日志打印文件隔离
在项目中,我有一堆业务日志需要打印,另一部分的日志,是没有格式的,需要被云平台离线解析并收集到kafka或者hdfs、hive等,需要将日志隔离打印到不同的文件 正常的log4j配置是下面这样的,配合Sl4j直接使用默认…...
7月21日,贪心练习
大家好呀,今天带来一些贪心算法的应用解题、 一,柠檬水找零 . - 力扣(LeetCode) 解析: 本题的贪心体现在对于20美元的处理上,我们总是优先把功能较少的10元作为找零,这样可以让5元用处更大 …...
FPGA DNA 获取 DNA_PORT
FPGA DNA DNA 是 FPGA 芯片的唯一标识, FPGA 都有一个独特的 ID ,也就是 Device DNA ,这个 ID 相当于我们的身份证,在 FPGA 芯片生产的时候就已经固定在芯片的 eFuse 寄存器中,具有不可修改的属性。在 xilinx 7series…...
使用 hutool工具实现导入导出功能。
hutool工具网址 Hutool参考文档 pom依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.20</version></dependency><dependency><groupId>org.apache.poi</gro…...
大语言模型-Transformer-Attention Is All You Need
一、背景信息: Transformer是一种由谷歌在2017年提出的深度学习模型。 主要用于自然语言处理(NLP)任务,特别是序列到序列(Sequence-to-Sequence)的学习问题,如机器翻译、文本生成等。Transfor…...
spring(二)
一、为对象类型属性赋值 方式一:(引用外部bean) 1.创建班级类Clazz package com.spring.beanpublic class Clazz {private Integer clazzId;private String clazzName;public Integer getClazzId() {return clazzId;}public void setClazzId(Integer clazzId) {th…...
MAC 数据恢复软件: STELLAR Data Recovery For MAC V. 12.1 更多增强功能
天津鸿萌科贸发展有限公司是 Stellar 系列软件的授权代理商。 STELLAR Data Recovery For MAC 该数据恢复软件可从任何存储驱动器、清空的回收站以及崩溃或无法启动的 Mac 设备中恢复丢失或删除的文件。 轻松恢复已删除的文档、照片、音频文件和视频。自定义扫描以帮助恢复特…...
初识godot游戏引擎并安装
简介 Godot是一款自由开源、由社区驱动的2D和3D游戏引擎。游戏开发虽复杂,却蕴含一定的通用规律,正是为了简化这些通用化的工作,游戏引擎应运而生。Godot引擎作为一款功能丰富的跨平台游戏引擎,通过统一的界面支持创建2D和3D游戏。…...
AntiDupl.NET:告别数字杂乱,让图片管理回归优雅
AntiDupl.NET:告别数字杂乱,让图片管理回归优雅 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经在整理照片时,发现手机里…...
SAP ABAP BADI AC_DOCUMENT:跨越VF01/MIRO/AFAB的智能凭证替代实战
1. 为什么需要AC_DOCUMENT BADI? 在SAP标准业务流程中,GGB1提供的凭证替代功能已经能满足大部分常规需求。但实际业务往往更复杂——比如销售开票时,需要根据付款条件动态替换税科目;发票校验时,要根据供应商信息自动填…...
从零构建智能Line机器人:基于ChatGPT API的即时通讯AI助手开发指南
1. 项目概述:一个能帮你“翻译”一切的Line机器人 如果你经常使用Line,并且对ChatGPT这类AI助手的能力感到好奇,那么“ChatGPT-Line-Bot”这个项目,可能就是为你量身定做的。简单来说,它是一个架设在Line平台上的聊天…...
Windows 10下保姆级教程:Quartus Prime 18.0 + ModelSim SE 安装与破解全流程(含USB-Blaster驱动)
Windows 10下Quartus Prime 18.0与ModelSim SE完整安装指南 第一次接触FPGA开发的朋友们,面对Quartus Prime和ModelSim的安装过程可能会感到无从下手。这份指南将带你一步步完成从软件下载到最终验证的全过程,确保你的开发环境搭建顺利。不同于网络上零散…...
从零部署OpenClaw:打造私有AI助手全流程指南
1. 项目概述:从零部署你的专属AI助手 如果你对AI Agent(智能体)感兴趣,想拥有一个能24小时在线、不仅能聊天还能帮你执行任务、操控浏览器、生成图片的私人助手,但又觉得技术门槛太高、无从下手,那么你来对…...
手把手教你用Intel System Debugger和DCI OOB盒子抓取开机日志(附CSME解码文件获取指南)
硬件调试实战:Intel System Debugger与DCI OOB盒子的替代方案指南 当主板开机卡死在LOGO界面或出现花屏时,传统调试工具链的突然失效往往让工程师陷入困境。我曾亲眼见过一位同事因为误改GDK7开发板的BIOS设置,导致价值上万的DCI-USB3调试线缆…...
MANT量化技术:大语言模型推理的硬件架构革新
1. MANT量化技术:大语言模型推理的硬件架构革新在人工智能领域,大语言模型(LLM)的推理效率一直是制约其实际应用的关键瓶颈。传统量化方法往往面临精度损失与硬件适配的双重挑战,而MANT技术的出现为这一困境提供了创新解决方案。作为一名深耕…...
凡亿AD22--原理图元件复制、剪切、旋转、镜像
核心作用:这4种操作是原理图布局的基础,熟练掌握可大幅提升绘制效率,让元器件布局更规范、信号流向更清晰,提升原理图可读性。一、核心操作详解所有操作均基于「选中元件」为前提(单个元件点击选中,多个元件…...
开发者行为数据挖掘:从Stack Overflow发现隐性需求
1. 项目概述:从开发者行为数据挖掘隐性需求在软件开发领域,需求工程一直面临着如何准确捕捉用户真实需求的挑战。传统方法如用户访谈、问卷调查等依赖于用户的主动表达,但开发者往往不会明确说出他们需要什么,而是通过日常行为无意…...
AI技能gate-of-oss:智能海巡GitHub,高效开源项目选型
1. 项目概述:一个帮你“海巡”GitHub的AI技能在软件开发这个行当里,我敢说,几乎每个开发者都经历过这样的时刻:为了解决一个具体问题,或者想给项目引入一个新功能,一头扎进GitHub的汪洋大海,试图…...
