当前位置: 首页 > news >正文

Java关键字大冒险:深入浅出地理解Java的精髓

Java编程语言中的关键字就像是魔法咒语,每一个都有自己独特的作用。在这篇博客中,我们将探讨Java中最常见的关键字,并通过有趣的例子和形象的比喻,让你轻松掌握它们的用法。

1. public: 万能钥匙

public关键字是Java中的“万能钥匙”。当一个成员(变量或方法)被声明为public时,它就可以被任何地方访问。就像一个公共图书馆,任何人都可以进去借书。

public class PublicExample {public String publicMessage = "Hello, World!";public void showMessage() {System.out.println(publicMessage);}
}

2. private: 私密的宝藏

相对于publicprivate就像是你的私人日记本,只有你自己可以看。被private修饰的成员只能在它所属的类中访问。

public class PrivateExample {private String privateMessage = "这是一个秘密.";private void showPrivateMessage() {System.out.println(privateMessage);}public void revealSecret() {showPrivateMessage();}
}

3. protected: 家族传承

protected关键字是介于publicprivate之间的存在,就像是家族传承的宝藏,只能家族成员(子类)和自己(同一包中的类)可以访问。

public class ProtectedExample {protected String protectedMessage = "家族秘密.";protected void showProtectedMessage() {System.out.println(protectedMessage);}
}

4. static: 全局共享

static关键字就像是一张公告,贴在社区中心的布告栏上,所有人都可以看到。被static修饰的成员是属于类的,而不是类的实例。

public class StaticExample {public static String staticMessage = "静态信息.";public static void showStaticMessage() {System.out.println(staticMessage);}
}

5. final: 终极防护

final关键字代表“最终的、不可改变的”。当一个变量被声明为final时,它的值就不能再被修改。当一个类被声明为final时,它就不能被继承。

public final class FinalExample {public final String finalMessage = "不可改变的.";public void showFinalMessage() {System.out.println(finalMessage);}
}

6. abstract: 不完全的拼图

abstract关键字用于创建抽象类和抽象方法。抽象类不能实例化,只能被继承。抽象方法没有方法体,需要子类去实现。

public abstract class AbstractExample {public abstract void abstractMethod();
}public class ConcreteExample extends AbstractExample {@Overridepublic void abstractMethod() {System.out.println("实现的抽象方法.");}
}

7. synchronized: 线程的守护者

sychronized关键字是Java中的“守护神”,它可以确保同一时间只有一个线程访问代码块或方法,从而防止数据损坏。

public class SynchronizedExample {private int count = 0;public synchronized void increment() {count++;}public int getCount() {return count;}
}

8. volatile: 易变的旗帜

volatile关键字用于声明一个变量的值可能会被多个线程修改,因此每次访问该变量时,都要从内存中读取它的最新值,而不是缓存中的值。

public class VolatileExample {private volatile boolean flag = true;public void toggleFlag() {flag = !flag;}public boolean isFlag() {return flag;}
}

9. transient: 瞬时的记忆

transient关键字用于标记一个字段不需要被序列化。当对象被序列化时,transient修饰的变量不会被保存。

import java.io.Serializable;public class TransientExample implements Serializable {private transient int transientValue = 100;private int normalValue = 200;
}

10. default: 接口中的默认

default关键字允许在接口中定义默认方法,这样接口的实现类可以不必实现这些方法。

public interface DefaultExample {default void defaultMethod() {System.out.println("这是一个默认的方法.");}
}public class DefaultExampleImpl implements DefaultExample {// 不需要实现defaultMethod()
}

11. interface: 契约

interface关键字用于定义接口,接口是一种特殊的类,它只能包含抽象方法和常量。实现接口的类必须提供接口中所有方法的具体实现。

public interface ExampleInterface {void exampleMethod();
}public class InterfaceImpl implements ExampleInterface {@Overridepublic void exampleMethod() {System.out.println("接口的方法实现.");}
}

12. enum: 枚举

enum关键字用于定义枚举类型,它是一个特殊的类,表示一组固定的常量。

public enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}public class EnumExample {public void printDay(Day day) {System.out.println("今天是: " + day);}
}

13. try, catch, finally: 错误处理三剑客

这三个关键字用于异常处理,try块包含可能发生异常的代码,catch块处理异常,finally块中的代码总是会执行,无论是否发生异常。

public class TryCatchFinallyExample {public void readFile() {try {// 可能引发异常的代码} catch (Exception e) {// 处理一下异常} finally {// 将始终执行的代码}}
}

14. throwthrows: 异常的使者

throw关键字用于手动抛出一个异常,throws关键字用于声明一个方法可能抛出的异常类型。

public class ThrowThrowsExample {public void riskyMethod() throws Exception {if (true) {throw new Exception("页面出错了!");}}
}

15. super: 父类的特权

super关键字用于访问父类的成员(变量或方法),尤其是在覆盖父类方法时特别有用。

public class ParentClass {public void display() {System.out.println("父显示方式.");}
}public class ChildClass extends ParentClass {@Overridepublic void display() {super.display();System.out.println("子显示方式.");}
}

16. this: 当前实例的自白

this关键字用于引用当前对象的实例,可以用来访问当前对象的成员变量和方法。

public class ThisExample {private String message;public ThisExample(String message) {this.message = message;}public void printMessage() {System.out.println(this.message);}
}

17. return: 任务完成

return关键字用于从方法中返回值,并结束方法的执行。

public class ReturnExample {public int add(int a, int b) {return a + b;}
}

以上是Java中一些最常见的关键字及其用法。通过这些关键字,Java为我们提供了强大的工具来构建各种复杂和有趣的应用程序。希望这篇博客能够帮助你更好地理解和使用这些关键字。Happy coding!

相关文章:

Java关键字大冒险:深入浅出地理解Java的精髓

Java编程语言中的关键字就像是魔法咒语,每一个都有自己独特的作用。在这篇博客中,我们将探讨Java中最常见的关键字,并通过有趣的例子和形象的比喻,让你轻松掌握它们的用法。 1. public: 万能钥匙 public关键字是Java中的“万能钥…...

Android Kotlin 打开相册选择图片(多选)

1. 核心代码 打开系统相册功能,本代码使用两种方式打开本地相册,startActivityForResult 已经废弃,可以使用新的方式。 package com.example.facedetectordemoimport android.content.pm.PackageManager import androidx.appcompat.app.App…...

java学习路径

ProcessOn Mindmap...

[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…...

【C++面试50题】

以下是针对C程序员面试可能遇到的一些问题,涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么? 2. 什么是构造函数和析构函数?它们何时被调用? 3. 什…...

外汇天眼:ESMA发布针对在投资服务中使用人工智能的公司的指导意见

欧洲证券和市场管理局(ESMA),欧盟的金融市场监管机构和监督机构,发布了一份声明,为在向零售客户提供投资服务时使用人工智能技术(AI)的公司提供初步指导。 尽管人工智能的普及仍处于初期阶段&am…...

【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: ‘A’ &#xff…...

异常处理1--5.31

try--catch--finally格式: try{ }catch(错误类型){ }finally{ } 执行情况: package javatest5;public class test {public static void main(String[] args) {int num115;int num20;try{System.out.println("商等于:"num1/num…...

AI免费插件 批量条码大师,支持100多种条码类型

没想到在网上看到一款和之前 悟空条码 类似的条码插件,叫批量条码大师,他做的比 悟空条码 功能更强,界面更美观,特分享出来给大家。 本插件采用了BWIPJS条码库,支持110种条码、二维码的生成; 支持批量生成,…...

使用 Django 连接 MySQL 数据库

文章目录 步骤一:安装必要的库和驱动步骤二:配置数据库连接步骤三:执行数据库迁移步骤四:开始使用 MySQL 数据库创建一个模型迁移模型到数据库使用模型进行数据操作创建新记录:查询记录:更新记录&#xff1…...

【谷歌开发者月刊】五月内容汇总,Google I/O 点燃您的创新灵感

五月因 Google I/O 大会的成功举办而备受瞩目,我们在为开发者们带来技术更新的同时,更提供了丰富的学习资源。一起在本期月刊中回顾精彩内容,带着学习热情继续探索技术的更新与发展吧! 本月看点 精彩看点多多,请上下滑…...

wpf 实现长时间未操作自动退出登录

思路 在WPF应用程序中实现长时间未操作自动退出,主要思路是先收集用户操作行为,用一个全局变量记录用户最后操作时间,再用一个异步线程去监控用户的最后操作时间和当前时间进行比较如果超过了设定时间认为长时间未操作自动退出登录并显示相关…...

pytorch学习笔记3

标量数据 标量数据通常指的是单个数值,比如一个损失值、准确率、学习率等。这些单个的数值数据可以被记录下来,用于分析模型的训练过程、性能等。在代码中,writer.add_scalar() 的作用就是将这些标量数据添加到日志中,以便后续在可…...

开源监控工具monit安装部署

Monit 简介 Monit是一个轻量级(500KB)跨平台的用来监控Unix/linux系统的开源工具。部署简单,并且不依赖任何第三方程序、插件或者库。 Monit可以监控服务器进程、文件、文件系统、网络状态(HTTP/SMTP等协议)、远程主机、服务器资源变化等等。…...

Python 时间戳转时间

一、 10 位 时间戳 ,秒级 转换为时间 方式一: import timetimeStamp 1717149862 timeArray time.localtime(timeStamp) timeStr time.strftime("%Y-%m-%d %H:%M:%S", timeArray) print(timeStr) 输出: 2024-05-31 18:04:22方式二&#xf…...

【网络层】IP地址基础 与 子网掩码

文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址:IP Address 在网络中,通信节点都需要有一个IP地址 IP地址以点分十进制表示,有…...

Cholesky分解(A=L * L^T)

Cholesky分解是一种用于解线性方程组和计算矩阵平方根的算法,特别适用于对称正定矩阵。这种方法相比于其他解法(如高斯消元法)在数值稳定性上通常有更好的表现,并且能够有效地利用矩阵的对称性和正定性。下面简要介绍如何使用Chol…...

2024大模型新应用井喷即将到来,算力问题如何解决?

#大模型新应用 #NLP #智合同 随着人工智能技术的加速演进,AI大模型已成为全球科技竞争的新高地、未来产业的新赛道、经济发展的新引擎。大模型的快速发展,特别是在自然语言处理(NLP)和计算机视觉(CV)等…...

SpringBoot 七牛云 OSS 私有模式 获取访问链接

目录 一、问题引出 二、在SpringBoot中获取私有访问路径的操作 一、问题引出 由于七牛云OSS的公有模式存在被盗刷的风险,可能导致服务器额外的费用,于是我选择私有模式进行操作。私有模式的访问路径是一个问题,因为需要对应着token和e这两…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...