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

JavaSE 学习记录

1. Java 内存

在这里插入图片描述

在这里插入图片描述

2. this VS super

thissuper是两个关键字,用于引用当前对象和其父类对象

  1. this 关键字:
  • this 关键字用于引用当前对象,即调用该关键字的方法所属的对象。

  • 主要用途包括:

    • 在类的实例方法中,通过 this 来引用当前对象的实例变量或调用当前对象的其他方法。
    • 在构造方法中,通过 this 来调用其他构造方法this()或this(...)或引用当前对象的实例变量this.instanceVariable
  1. super 关键字:
  • super 关键字用于引用父类的成员,即调用父类的方法或访问父类的实例变量。

  • 主要用途包括:

    • 在子类中,通过 super 来调用父类的构造方法super()或super(...)或访问父类的方法和实例变量super.xxx
  1. 注意:

  2. super调用父类的构造方法,必须在构造方法的第一个(this() 也必须在第一个,所以不能同时调用 --> 3.)

  3. super必须只能出现在子类的方法或者构造方法中!

  4. super和this不能同时调用构造方法!

3. 重载(Overload) VS 重写(Override)

  • 重载:在一个类中同一个方法的不同实现

    • 方法名必须相同;

    • 参数列表必须不同(参数个数或者参数类型不同)

    • 修饰符可以相同也可以不同(修饰符不能作为判断是否重写的标志)

    • 抛出的异常同修饰符,可以相同也可以不同,不能作为判断是否重写的标志

  • 重写:需要有继承关系,子类重写父类的方法!

    • 方法名必须相同;

    • 参数列表列表必须相同;

    • 修饰符:范围可以扩大但不能缩小: public>Protected>Default>private

    • 抛出的异常:范围,可以被缩小,但不能扩大;ClassNotFoundException–> Exception(大)

4. 面向对象编程(OOP)的三大特性

面向对象编程(OOP)的三大特性是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

  • 封装(Encapsulation)

    • 封装是指将对象的状态(数据)和行为(方法)包装在一起,并对外部隐藏对象的内部实现细节。
    • 通过封装,对象的内部细节对外部不可见,只提供有限的接口供外部访问和操作,从而提高了代码的可维护性、可重用性和安全性。
    • 例如,使用私有(private)访问修饰符来限制对对象的状态的直接访问,通过公有(public)方法来提供对状态的间接访问。
  • 继承(Inheritance)

    • 继承是指一个类(子类)可以从另一个类(父类)继承其属性和方法,并且可以新增或修改已继承的属性和方法。
    • 继承可以帮助代码实现重用,避免重复编写相似的代码,同时也可以通过建立类之间的层次结构来组织和管理代码。
    • 通过继承,子类可以拥有父类的属性和方法,从而实现代码的扩展和复用。
  • 多态(Polymorphism)

    • 多态是指同一个方法调用可以在不同的对象上具有不同的行为。

    • 多态通过方法重写(Override)和方法重载(Overload)来实现。

    • 方法重写是指子类可以重写父类的方法,从而在运行时根据对象的实际类型来调用相应的方法实现,实现了动态绑定

      存在条件:继承条件!方法需要重写!父类引用指向子类对象(Object o = new Person())!

    • 方法重载是指在一个类中定义多个同名但参数列表不同的方法,编译器根据方法的参数列表选择合适的方法进行调用,实现了静态绑定

    • 多态提高了代码的灵活性和可扩展性,使得代码可以更加通用和可维护。

5. instanceof

instanceof 是 Java 中的一个关键字,用于检查一个对象是否是一个类的实例,或者是否是该类的子类的实例。它的语法形式如下:

object instanceof Class

其中,object 是要检查的对象,Class 是要检查的类或接口。

instanceof 操作符的返回结果有两种可能:

  1. 如果 object 是 Class 的实例,或者是 Class 的子类的实例,或者是实现了 Class 接口的实例,则返回 true
  2. 如果 object 不是 Class 的实例,则返回 false

6. 静态代码块、匿名代码块和构造方法的执行顺序

  1. 静态代码块按照声明顺序执行。
  2. 匿名代码块在每次创建对象时执行,按照声明顺序执行。
  3. 构造方法在匿名代码块执行之后执行。

7. 接口(Interface)和抽象类(Abstract Class)

  1. 成员方法
  • 接口中的方法默认是抽象的,即接口中的方法没有具体的实现,而抽象类中可以包含抽象方法和具体方法的实现。
  • 在接口中声明的方法都是隐式地声明为 public abstract,而抽象类中的抽象方法必须使用 abstract 关键字显式声明。
  1. 多继承
  • Java 接口支持多继承,一个类可以实现多个接口,从而具备多个接口的特性。
  • Java 抽象类不支持多继承,一个类只能继承一个抽象类,但可以同时实现多个接口。
  1. 变量
  • 接口中的变量默认是 public static final 类型的常量,可以省略这些修饰符,因为它们是隐式的。
  • 抽象类中可以包含实例变量和静态变量,可以拥有各种访问修饰符。
  1. 构造方法
  • 接口中不能包含构造方法,因为接口中的方法都是抽象的,无法实例化。

  • 抽象类可以包含构造方法,用于初始化抽象类的实例。

    public abstract class MyAbstractClass {int b = 1;public MyAbstractClass(int b) {this.b = b;}public abstract void method();
    }
    
            MyAbstractClass myAbstractClass = new MyAbstractClass(1) {@Overridepublic void method() {}};
    
  1. 实现方式
  • 类通过 implements 关键字来实现接口,而通过 extends 关键字来继承抽象类。

8. Java 内部类

  • 成员内部类(Member Inner Class)

    成员内部类是定义在另一个类中的类。它与外部类有关联,并可以访问外部类的成员,包括私有成员。成员内部类可以有访问修饰符,并且可以被外部类的成员方法或其他类使用。

    OuterClass.InnerClass inner = outer.new InnerClass();
    
  • 静态内部类(Static Inner Class)

    静态内部类是定义在另一个类中的静态类。它与外部类的实例无关,并且可以直接访问外部类的静态成员,但不能访问外部类的非静态成员。静态内部类可以有自己的静态成员和方法。

    OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
    
  • 局部内部类(Local Inner Class)

    局部内部类是定义在方法内部的类。它只在定义它的方法内部可见,不能被方法之外的其他类访问。局部内部类可以访问外部方法的局部变量,但必须为 final 或等效的变量。

  • 匿名内部类(Anonymous Inner Class)

    匿名内部类是没有名字的内部类,通常用于创建一个实现接口或继承抽象类的临时类实例。它一般在创建实例的同时进行类的定义,并且不能有显式的构造方法。

9. Error VS Exception

ErrorException 都是继承自 Throwable 类的子类,用于表示在程序执行过程中可能发生的问题,但它们之间有一些重要的区别。

  1. Error(错误)
  • Error 代表了严重的系统问题,通常是由于虚拟机(JVM)运行环境出现了错误导致的,例如内存不足、栈溢出等。Error 通常是无法恢复或处理的,应用程序不应该捕获 Error
  • 一旦发生 Error,程序通常无法继续执行,并且会导致程序终止。常见的 Error 包括 OutOfMemoryErrorStackOverflowError 等。
  1. Exception(异常)
  • Exception 也代表了程序执行过程中的问题,但相比 ErrorException 更多地表示的是可以被程序本身处理的异常情况。Exception 分为两种类型:可检查异常(checked exception)和运行时异常(runtime exception)
  • 可检查异常(checked exception):编译器会强制要求程序员处理这类异常,要么使用 try-catch 块捕获并处理异常,要么在方法签名中使用 throws 关键字声明抛出异常。
  • 运行时异常(runtime exception):这类异常通常是由程序错误导致的,编译器不会强制要求程序员处理这些异常。常见的运行时异常包括 NullPointerExceptionArrayIndexOutOfBoundsException 等。
  1. Error 如内存不足、栈溢出等在哪些情况下会发生?
  • 内存不足(OutOfMemoryError):当 Java 程序请求的内存超出了 JVM 可用的内存资源时,会抛出 OutOfMemoryError。这可能是因为程序内存泄漏、创建了过多的对象、处理大量数据等原因导致的。

  • 栈溢出(StackOverflowError):当方法调用层级过深,栈空间无法容纳更多的方法调用时,会发生栈溢出。这通常是由于递归调用或者无限循环导致的。

  • 虚拟机错误(VirtualMachineError):这类错误包括 InternalErrorUnknownError 等,通常是指 JVM 本身发生了无法处理的错误,例如 JVM 内部出现问题。

  • 类加载错误(LinkageError):当 Java 虚拟机尝试加载类时出现问题,可能会抛出 LinkageError,例如版本不匹配、类文件损坏等情况。

  • 其他错误(Error):除了上述常见的错误外,还有一些其他的 Error 类型,如 AssertionErrorNoClassDefFoundError 等。

这些 Error 类型通常表示了严重的系统问题,需要进行相应的处理或者对系统进行调整。

  1. 受检异常和非受检异常包括哪些异常?
  • 受检异常(Checked Exception):这些异常在编译时就需要程序员处理,否则编译器会报错。常见的受检异常包括:

    • IOException:输入输出操作异常,如文件读写异常。
    • SQLException:数据库操作异常。
    • ClassNotFoundException:类未找到异常,通常发生于使用反射加载类时。
  • 非受检异常(Unchecked Exception):也称为运行时异常(Runtime Exception),这些异常不需要在编译时处理,但程序在运行时可能会抛出。常见的非受检异常包括:

    • NullPointerException:空指针异常,尝试在空对象上调用方法或访问属性时抛出。
    • ArrayIndexOutOfBoundsException:数组越界异常,访问数组时超出了合法范围。
    • ArithmeticException:算术异常,例如除以零。
    • IllegalArgumentException:非法参数异常,传递给方法的参数不合法。

10. JavaSE 总结

在这里插入图片描述

参考

狂神说笔记——Java SE基础01 - subeiLY - 博客园

狂神说笔记——Java SE基础02

狂神说笔记——Java SE基础03

相关文章:

JavaSE 学习记录

1. Java 内存 2. this VS super this和super是两个关键字,用于引用当前对象和其父类对象 this 关键字: this 关键字用于引用当前对象,即调用该关键字的方法所属的对象。 主要用途包括: 在类的实例方法中,通过 this …...

HTML与CSS的学习

什么是HTML,CSS&#xff1f; HTML(HyperText Markup Language):超文本标记语言。 超文本:超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等 标记语言:由标签构成的语言 >HTML标签都是预定义好的。例如:使用<a>…...

【单片机】STM32F070F6P6 开发指南(一)STM32建立HAL工程

文章目录 一、基础入门二、工程初步建立三、HSE 和 LSE 时钟源设置四、时钟系统&#xff08;时钟树&#xff09;配置五、GPIO 功能引脚配置六、配置 Debug 选项七、生成工程源码八、生成工程源码九、用户程序下载 一、基础入门 f0 pack下载&#xff1a; https://www.keil.arm…...

源码编译安装Rsync数据同步

源码编译安装 RPM软件包&#xff1a;rpm -ivh 或者 yum -y install 需要开发编译工具gcc、gcc-c、make等... 源码包----开发工具gcc与make----》可以执行的程序-----》运行安装 •主要优点 –获得软件的最新版&#xff0c;及时修复bug –软件功能可按需选择/定制&#xff…...

SQL Server2019安装步骤教程(图文)_最新教程

一、下载SQL Server2019 1.到微软官网下载SQL Server Developer版本&#xff0c;官网当前的2019版本下载需要注册账号。 不想注册的朋友&#xff0c;可以选择从网盘下载&#xff1a;点击此处直接下载 2.下载之后先解压&#xff0c;解压后执行exe安装程序。打开之后的界面如下…...

【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f33c;前言 &#x1f512;单机环境下防止接口重复提交 &#x1f4d5;导入依赖 &#x1f4c2;项目结构 &#x1f680;创建自定义注解 ✈创建AOP切面 &#x1f697;创建Conotroller &#x1f4bb;分布…...

零基础学Java(全170集)

课程概述 本课程旨在全面深化对 Java 语言的核心技术理解&#xff0c;并提升编程实践能力。课程内容涵盖以下关键领域&#xff1a; 掌握Java核心语法&#xff0c;为后续学习打下扎实的基础。熟练运用Java常用的类库与开发工具&#xff0c;提高开发效率与质量。解决面向对象编…...

摄像头应用测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…...

Golang框架HTTP客户端框架zdpgo_resty发送表单请求

核心代码 这里通过字典传递了一个简单的表单数据。 发送的是POST请求。 resp, err : client.R().SetFormData(map[string]string{"username": "jeeva","password": "mypass",}).Post("http://127.0.0.1:3333/login")fmt.P…...

【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?

一、多通道卷积神经网络示例 还是以图像处理为例&#xff0c;如果你的目标不仅是分析灰度图像特性&#xff0c;还打算捕捉RGB彩色图像的特征。如下图&#xff0c;当面对一张66像素的彩色图像时&#xff0c;提及的“3”实际上是指红、绿、蓝三种颜色通道&#xff0c;形象地说&am…...

Rust之函数、单元测试

1、函数 类似于C函数。 1.1、普通函数 在Rust中&#xff0c;函数的定义使用fn关键字&#xff0c;后跟函数名、参数列表、返回类型和函数体。函数体由一系列语句组成&#xff0c;用于执行特定的操作和计算。 函数定义&#xff1a; 使用fn关键字定义函数&#xff0c;函数由函数…...

Linux环境下TensorFlow安装教程

TensorFlow是学习深度学习时常用的Python神经网络框 下面以Mask R-CNN 的环境配置为例&#xff1a; 首先进入官网&#xff1a;www.tensorflow.org TensorFlow安装的总界面&#xff1a; 新建anaconda虚拟环境&#xff1a; conda create -n envtf2 python3.8 &#xff08;Pyth…...

基于Open3D的点云处理19-模拟生成点云

如果没有设备,怎么得到点云进行学习研究呢,一般通过以下方法: 模型采样+增加噪声:简单方便,但结果比较理想与真实扫描不一致;光线投射:简单方便,可以模仿传感器的一个扫描视角Blensor点云仿真:能够模仿传感器本身的一些噪声,适合激光雷达和tof相机的仿真,传感器较少…...

安全分析[1]之网络协议脆弱性分析

文章目录 威胁网络安全的主要因素计算机网络概述网络体系结构 网络体系结构脆弱性分组交换认证与可追踪性尽力而为匿名与隐私对全球网络基础实施的依赖无尺度网络互联网的级联特性中间盒子 典型网络协议脆弱性IP协议安全性分析IPSec&#xff08;IP Security)IPv6问题 ICMP协议安…...

数据湖对比(hudi,iceberg,paimon,Delta)

Delta 数据湖 Delta 更新原理 update/delete/merge 实现均基于spark的join功能。 定位 做基于spark做流批一体的数据处理 缺点 本质为批处理。强绑定spark引擎。整体性能相较其他数据湖比较差 hudi 数据湖 hudi 更新原理 通过hudi自定义的主键索引hoodiekey 布隆过…...

基于ssm的蛋糕商城系统java项目jsp项目javaweb

文章目录 蛋糕商城系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 蛋糕商城系统 一、项目演示 蛋糕商城管理系统 二、项目介绍 系统角色 : 管理员、用户 一&#xff0c;管理员 管理员有…...

vue3父组件使用ref获取子组件的属性和方法

在vue3中父组件访问子组件中的属性和方法是需要借助于ref: 1.<script setup> 中定义响应式变量 例如&#xff1a; const demo1 ref(null) 2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref"demo1"/>)。 父组件代码如下&…...

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元

加入MongoDB AI创新者计划&#xff01; MongoDB对AI创新和初创企业的支持既全面又广泛&#xff01;无论您是领先的AI初创企业还是刚刚起步&#xff0c;MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…...

3. CSS的色彩与背景

3.1 CSS3中的色彩 CSS3扩展了颜色的定义方式&#xff0c;使得开发者能够使用更多样化和灵活的颜色表达方式。这包括RGB、RGBA、HSL、HSLA等格式&#xff0c;以及支持透明度和渐变的特性。 3.1.1 颜色格式 十六进制颜色 十六进制颜色是最常用的颜色表示法&#xff0c;以#开头…...

MiniCPM-Llama3-V-2_5-int4

MiniCPM-Llama3-V-2_5-int4大模型部署使用环境&#xff1a; python3.8cuda11.8其它要求&#xff0c;按照安装文档要求下载即可 我是在算力平台用4090跑的&#xff0c; GPU 显存&#xff08;8GB&#xff09;可以部署推理 int4 量化版本&#xff0c;如果推理非量化版本需要更高显…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...