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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wetool企业版使用教程及下载方式 微兔该如何使用 wetool还能用吗 wetool扳手工具wetool操作方法难吗 wetool有哪些功能

今天给大家推荐一款我们目前在使用的电脑群发工具掘金小蜜,不仅可以无限多开,方便你同时管理多个账号,群发功能更是十分强大,轻松释放你的双手。 掘金小蜜(只支持Win7及以上操作系统,没有推Mac版和手机客户…

数据集001:安全帽检测数据集 (Helmet Detection) (含数据集下载链接)

安全帽检测 安全帽识别是一个目标检测任务,及时排查安全帽佩戴的规范性并给予提醒,可以大大降低施工安全隐患。这是CV领域入门级的项目,能快速了解从数据预处理、模型构建、训练到部署的整体流程。 数据集格式 数据集中包含了5000张已经标注…

Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。

给定任意数量的输入图像,使用以这些图像为条件的多视图扩散模型来生成场景的新视图。生成的视图被输入到强大的 3D 重建管道,生成可以交互渲染的 3D 表示。总处理时间(包括视图生成和 3D 重建)仅需一分钟。 相关链接 论文&#x…

零基础学Java第二十三天之网络编程Ⅱ

1. InetAddress类 用来表示主机的信息 练习: C:\Windows\system32\drivers\etc\ hosts 一个主机可以放多个个人网站 www.baidu.com/14.215.177.37 www.baidu.com/14.215.177.38 www.taobao.com/183.61.241.252 www.taobao.com/121.14.89.253 2. Socket 3.…

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

Search your data 这里有两个比较有用的参数需要注意一下 Search timeout:设置每个分片的搜索超时时间。从集群级别可以通过 search.default_search_timeout 来设置超时时间。如果在 search.default_search_timeout 设置的时间段内未完成搜索请求,就会…

贪心-leetcode402.移掉 K 位数字-XMUOJ符文序列

题目 思路 话不多说&#xff0c;直接上代码 代码 /*leetcode402.移掉 K 位数字-XMUOJ符文序列--JinlongW-2024/05/26单调栈贪心*/ #include<bits/stdc.h> const int N1010; char num[N],result[N],numStack[N]; int k; using namespace std;void removeKdigits( int k…

vue3模板语法以及attribute

模板语法​ Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML&#xff0c;可以被符合规范的浏览器和 HTML 解析器解析。 在底层机制中&#xff0c;Vue 会将模板编译成高度优化…

《计算机网络微课堂》3-10 以太网交换机的生成树协议 STP

我们介绍以太网交换机生成树协议的基本概念。 请大家思考一下&#xff0c;应该如何提高以太网的可靠性呢&#xff1f;例如如图所示的以太网&#xff0c;由三台交换机互联而成&#xff0c;每个交换机上都连接有一些主机&#xff0c;为了简单起见&#xff0c;我们只画出了每个交…

2010-2022年各省新质生产力数据(含原始数据+测算代码+计算结果)

2010-2022年各省新质生产力数据&#xff08;含原始数据测算代码计算结果&#xff09; 1、时间&#xff1a;2010-2022年 2、范围&#xff1a;31省 3、指标&#xff1a;gdp&#xff08;亿元&#xff09;、在岗职工工资&#xff1a;元、第三产业就业比重、人均受教育平均年限、…

空间注意力机制

第一步是沿着通道维度进行最大池化和平均池化&#xff0c;比如下面3*3的特征图&#xff0c;有3个通道。 第二步新特征图进行拼接并经过卷积调整通道数 第三步经过Sigmoid函数后乘到输入上 代码&#xff1a; class SpatialAttention(layers.Layer):def __init__(self):super(S…

多环境和前后多环境实战

文章目录 一.多环境1.1 什么是多环境1.2 多环境分类1.2.1 本地环境&#xff08;自己的电脑&#xff09;1.2.2 开发环境&#xff08;远程开发&#xff09;1.2.3 测试环境1.2.4 预发布环境1.2.5 正式环境1.2.6 沙箱环境&#xff08;实验环境&#xff09; 1.3 如何实现1.3.1 抽象配…

Linux-应用编程学习笔记(三、文件属性和目录)

一、文件类型 1、普通文件&#xff08;ls -l 文件&#xff0c;权限前边第一个"-"代表普通文件&#xff1b;stat 文件&#xff09; 文本文件&#xff1a;ASCII字符 二进制文件&#xff1a;数字0/1 2、目录文件&#xff08;‘’d&#xff09;&#xff1a;文件夹 3…

c语言IO

前言 老是忘记c语言IO操作&#xff0c;故写个文章记录一下 打开文件 fopen FILE *fopen(const char *path, const char *mode);mode 返回值 如果文件成功打开&#xff0c;fopen 返回一个指向 FILE 结构的指针。如果文件打开失败&#xff08;例如&#xff0c;因为文件不存…

跨平台之用VisualStudio开发APK嵌入OpenCV(三)

本篇将包含以下内容&#xff1a; 1.使用 Visual Studio 2019 开发一个 Android 的 App 2.导入前篇 C 编译好的 so 动态库 3.一些入门必须的其它设置 作为入门&#xff0c;我们直接使用真机进行调试&#xff0c;一方面运行速度远高于模拟器&#xff0c;另一方面模拟器使用的…

java 拦截器-用户无操作超时退出利用Redis

1、授权过滤&#xff0c;只要实现AuthConfigAdapter接口 2、利用Redis token超时时间&#xff0c;用户访问后台续时 效果 Component public class AuthFilter implements Filter {private static Logger logger LoggerFactory.getLogger(AuthFilter.class);Autowiredprivat…

OWASP top10--SQL注入(二)

目录 06&#xff1a;SQL注入提交方式 6.1、get提交 6.2、post提交 6.3、cookie提交 6.4、HTTP Header头提交 07&#xff1a;注入攻击支持类型 7.1、union注入&#xff1a; 7.1.1、union操作符一般与order by语句配合使用 7.1.2、information_schema注入 7.2、基于函数…

在gitlab CICD中 小试 hooks:pre_get_sources_script 功能

参考链接&#xff1a; hooks:pre_get_sources_script 功能简介 hooks:pre_get_sources_script 是gitlab CICD中的一个功能&#xff0c;该功能可以指定在克隆 Git 仓库和任何子模块之前要在执行器上执行的某些命令。例如&#xff1a; 调整 Git 配置导出跟踪变量 下来简单给…

(已开源-ICRA2023) High Resolution Point Clouds from mmWave Radar

本文提出了一种用于生成高分辨率毫米波雷达点云的方法&#xff1a;RadarHD&#xff0c;端到端的神经网络&#xff0c;用于从低分辨率雷达构建类似激光雷达的点云。本文通过在大量原始雷达数据上训练 RadarHD 模型&#xff0c;同时这些雷达数据有对应配对的激光雷达点云数据。本…

<Python实际应用>用yolov9实现垃圾检测

公司一个项目需要在无人机巡检的画面中识别垃圾和汽车&#xff0c;正好听闻yolov9最新出炉&#xff0c;于是试了一下采用yolov9来搭建该项目 1.下载和部署 下载yolov9:GitHub地址&#xff1a;GitHub代码下载地址 配置环境可以参考之前关于yolov5的文章 Yolov5自学笔记之一-…

vcpkg环境配置

vcpkg 使用linux相关库&#xff0c;设置环境变量VCPKG_ROOT&#xff0c;设置cmake工具链$VCPKG_ROOT/scripts\buildsystems\vcpkg.cmake set VCPKG_DEFAULT_TRIPLETx64-windows .\vcpkg.exe install fftw3 freetype gettext glibmm gtkmm libjpeg-turbo libpng libxmlpp libs…