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

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、double0.0F 和 0.0D
char一个空字符,即   '\u0000'
booleanfalse
引用数据类型

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和get方法
方法作用修饰符返回值类型参数返回值
set设置属性publicvoid有参数
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 代码功能&#xff1a…...

尝试进行表格处理

꧂ 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压测环境准备 对开发人员来讲,压测这个技能很重要。 假设你刚搭建好一个集群,就可以直接投入生…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...