JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)
前言
1. 学习视频:
尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili
2023最新Java学习路线 - 哔哩哔哩
第二阶段:Java面向对象编程
6.面向对象编程(基础)
7.面向对象编程(进阶)
8.面向对象编程(高级)
正文
6. JAVA面向对象编程(基础)
6.1 面向对象编程的概述
| 数据类型 | 默认初始化值 |
|---|---|
| byte、short、int | 0 |
| long | 0L |
| float、double | 0.0F 和 0.0D |
| char | 一个空字符,即 '\u0000' |
| boolean | false |
| 引用数据类型 | null,表示变量不引用任何对象 |
6.2 类的实例化、内存解析
6.2.1 类的实例化
6.2.2 内存解析:
说明:创建类的多个对象时,每个对象在对空间中有一个对象实体。每个对象实体中保存着一份类的属性。如果修改某一个对象的某个属性值时,不会影响其他对象此属性的值。
但是如果,把两个对象的变量指向了堆空间中的同一个对象实体,则修改会影响这两个。如下p1、p3指向了同一个地址值。
6.2.3 类的成员之一:属性
6.2.4 类的成员之一:方法
6.2.4.1 方法的作用与方法的声明
6.2.4.2 对象数组
6.3 方法应用
6.3.1 方法的重载
java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。(方法的重载与返回值的类型、形参的名、权限修饰符都无关。)

注意如下,参数类型的顺序不一样,也叫方法的重载!!

例如下面println()方法的重载,在打印char[ ]的时候,打印的是字符数组的值,而不是地址值。

6.3.2 可变个数形参的方法:(int ... nums)必须声明在形参列表的最后,且只有一个



③特例:在同一个类中,可变个数形参的方法与其他方法名相同且形参类型是相同的可变个数类型的数组类型的方法,不构成重载。如 int ...nums 和 int[ ] nums 。


可变个数形参的方法应用场景举例:


6.3.3 方法值传递机制剖析


说明:基本数据类型的变量没有地址值,赋值操作传递的是数据值。引用类型的数据变量传递的是地址值,等号赋值之后,两者都指向同一个地址值。引用类型的数据变量修改一个,就修改了这个地址值中存储的数据值。




这也证明了自己定义的类也是类,是引用数据类型!
![]()





6.3.4 递归(Recursion)方法(一定要向已知方向递归)(能循环不递归,递归时间复杂度太高)
方法的递归是指在一个程序的内部调用自身的过程。递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。

![]()

![]()

递归方法练习题:









关与时间复杂度分析:
题解 | #统计每个月兔子的总数# - 牛客网




6.4 package与import关键字的使用
6.4.1 package 包

语法格式: package 顶层包名.子包名;
- 一个源文件只能有一个声明包的package语句。
- package语句作为Java源文件的第一条语句出现。若缺省该语句,则指定为无名包。
- 包名属于标识符,满足标识符命名的规则和规范(全部小写)、见名知意。
- 包通常使用所在公司域名的倒置:com.atguigu.xxx
- 取包名时不要使用 java.xx包。
- 包对应于文件系统的目录,package语句中用“.”来指明(目录)的层次,每“.”一次,就表示一层文件目录。
- 同一个包下可以声明多个结构(类、接口),但是不能定义同名的结构(类、接口)。
- 不同的包下可以定义同名的结构(类、接口)。
6.4.1.1 包的作用

6.4.1.2 包的作用


6.4.1.2 JDK中的主要包

6.4.2 import 导入




6.5 面向对象的特征之一:封装性(Encapsulation)
![]()
6.5.1 为什么需要封装性?

6.5.2 如何实现数据封装?
6.5.2.1 权限修饰符 及 权限大小
Java规定了4种权限修饰符:
- private(私有化,仅限于本类内部调用和赋值)、
- 缺省(什么都不写,仅限于本包内和本类内)、
- protected(受保护的,其他包非子类不可调用。)、
- public(公开的、公共的,公开调用和赋值)。
作用:可以使用4种权限修饰符来修饰类及其内部成员。当这些成员被调用时,体现可见性的大小。

注意:
- 类:只能使用public、缺省去修饰。
- 类的内部成员:可以使用这四种去修饰。

例如:当我们把类中的某个属性设置为private时,外界用户就不能使用“类名.属性名”随意设置和获取,而必须使用类中的Set和get方法对属性进行设置和获取。 把Set和get方法分为两个,符合低耦合原则(一个方法,一个作用)。


![]()
| 方法 | 作用 | 修饰符 | 返回值类型 | 参数 | 返回值 |
|---|---|---|---|---|---|
| set | 设置属性 | public | void | 有参数 | 无 |
| get | 获取属性 | public | 各种类型 | 无 | 各种类型 |
6.6 类的成员之三:构造器(Constructor)

什么方法可以称为构造器:
- 方法名与类名相同
- 没有返回值类型的声明(没有void或其他类型声明)
- 没有return语句。



没有空参构造器,创建对象的时候就需要为有参构造器的参数赋值。
因此一个类中如果定义了有参的构造方法,我们最好再定义一个无参的构造方法。
而且为了方便实例化,对象构造方法通常用public来修饰。
类的属性赋值过程:顺序实际上是按代码执行顺序。


6.7 JavaBean的理解

6.8 UML类图



总结:
封装性:将对象的属性和行为封装起来,不需要让外界知道具体实现细节。用四种权限修饰符体现可见性的大小。根据程序设计原则体现了高内聚和低耦合。

企业真题:
类与对象:


用到面向对象的地方有很多,例如创建类、设计类的时候,还有通过创建的这个类进行实例化,然后调用相关功能。
Java内存结构:

JVM虚拟机中内存划分为类加载器子系统、运行时数据区、执行引擎、本地方法接口、本地方法库。其中运行时数据区包括:方法区、堆、程序计数器、本地方法栈、虚拟机栈。

权限修饰符:

构造器:

属性及属性赋值顺序:




相关文章:
JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)
前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段:Java面向对象编程 6.面向对象编程(基础) 7.面向对象编程&…...
吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验
浙江吉利控股集团(以下简称“吉利集团”)始建于1986年,1997年进入汽车行业,一直专注实业,专注技术创新和人才培养,坚定不移地推动企业转型升级和可持续发展。现资产总值超5100亿元,员工总数超过…...
短视频矩阵系统源码(搭建)
短视频矩阵源码的开发路径分享如下: 1、首先,确定项目需求和功能,包括用户上传、编辑、播放等。 2、其次,搭建开发环境,选择合适的开发工具和框架。 3、然后,进行项目架构设计和数据库设计,确…...
k8s 实战 常见异常事件 event 及解决方案分享
k8s 实战 常见异常事件 event 及解决方案分享 集群相关 Coredns容器或local-dns容器 重启集群中的coredns组件发生重启(重新创建),一般是由于coredns组件压力较大导致oom,请检查业务是否异常,是否存在应用容器无法解析域名的异常。如果是l…...
【Python机器学习】sklearn.datasets回归任务数据集
为什么回归分析在数据科学中如此重要,而sklearn.datasets如何助力这一过程? 回归分析是数据科学中不可或缺的一部分,用于预测或解释数值型目标变量(因变量)和一个或多个预测变量(自变量)之间的关系。sklearn.datasets模块提供了多种用于回归分析的数据集,这些数据集常…...
Springboot写电商系统(2)
Springboot写电商系统(2) 1.新增收货地址1.创建t_addresss数据库表2.创建Address实体类3.数据库操作的持久层1.接口写抽象方法2.xml写方法映射sql3.测试 4.前后数据交互的业务层1.sql操作的异常抛出2.交互方法的接口定义3.接口的方法实现4.测试 5.与前端…...
SpringBoot中过滤器与拦截器的区别
SpringBoot中过滤器与拦截器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对…...
SystemVerilog(2)——数据类型
一、概述 和Verilog相比,SV提供了很多改进的数据结构。它们具有如下的优点: 双状态数据类型:更好的性能,更低的内存消耗队列、动态和关联数组:减少内存消耗,自带搜索和分类功能类和结构:支持抽…...
记一次Postgresql从堆叠注入到RCE
本次研究过程来自一次某cms的代码审计实战,整个环境部署的相对较好,postgresql、web权限都有单独的用户管理,web目录不可写、服务器不能出网等限制。不过比较幸运的是所有的数据操作都是用同一个superuser权限的postgresql用户来执行的。 限…...
通用FIFO设计深度8宽度64,verilog仿真,源码和视频
名称:通用FIFO设计深度8宽度64,verilog仿真 软件:Quartus 语言:verilog 本代码为FIFO通用代码,其他深度和位宽可简单修改以下参数得到 reg [63:0] ram [7:0];//RAM。深度8,宽度64 代码功能:…...
尝试进行表格处理
꧂ input输入多行文本,3个回车结束꧁ 用input输入如果你想要使用 input 输入多行文本,可以在输入时按照以下方式来终止输入: text while True:line input("请输入文本(按回车继续,按3个回车结束)…...
VueRouter 源码解析
重要函数思维导图 路由注册 在开始之前,推荐大家 clone 一份源码对照着看。因为篇幅较长,函数间的跳转也很多。 使用路由之前,需要调用 Vue.use(VueRouter),这是因为让插件可以使用 Vue export function initUse(Vue: GlobalAP…...
云原生之Docker
docker 初识Docker什么是DockerDocker与虚拟机Docker相关术语及架构镜像和容器DockerHubDocker架构 Docker命令镜像操作命令容器操作命令数据卷命令 自定义镜像镜像结构Dockerfile DockerCompose安装常用命令 初识Docker 什么是Docker docker是一个快速交付应用,运…...
List简介
概念: 数据结构列表(List)是Java中的一种线性数据结构,用于存储有序的元素集合。它允许重复元素,并且每个元素都有一个对应的索引来访问和操作。列表可以动态增长或缩小,并且支持添加、删除和修改操作。 …...
【ArcGIS Pro二次开发】(71):PPT文件操作方法汇总
以下操作都要用到【Microsoft.Office.Interop.PowerPoint】,确保安装并引用。 1、打开PPT文件 // 打开PPT Microsoft.Office.Interop.PowerPoint.Application pptApp new Microsoft.Office.Interop.PowerPoint.Application();Presentation ppt pptApp.Presentati…...
CloudCompare 二次开发(18)——法线空间采样
目录 一、概述二、代码集成三、结果展示一、概述 使用CloudCompare与PCL的混合编程实现点云法线空间采样。法线空间采样的具体计算原理见:PCL 法线空间采样。 二、代码集成 1、mainwindow.h文件public中添加: void doActionNormalSpaceSample(); // 法线空间采样2、mainwi…...
RFCN目标检测算法
...
【学习草稿】bert文本分类
https://github.com/google-research/bert https://github.com/CyberZHG/keras-bert 在 BERT 中,每个单词的嵌入向量由三部分组成: Token 嵌入向量:该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。 Segment 嵌入向量&#x…...
华为OD 食堂供餐(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
Hadoop3教程(二十七):(生产调优篇)HDFS读写压测
文章目录 (146)HDFS压测环境准备(147)HDFS读写压测写压测读压测 参考文献 (146)HDFS压测环境准备 对开发人员来讲,压测这个技能很重要。 假设你刚搭建好一个集群,就可以直接投入生…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...


