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

权限修饰符:

构造器:

属性及属性赋值顺序:

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

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

相关文章

react-router-dom v6版本实现Tabs路由缓存切换

目录 文章目录 概要 效果 完整代码 概要 摆了半年摊,好久没写代码了,今天有人问我怎么实现React-Router-dom类似标签页缓存。后面看了一下router的官网。很久以前用的是react-router v5那个比较容易实现。v6变化挺大,但了解react的机制和rea…

Leetcode—2530.执行K次操作后的最大分数【中等】(C语言向上取整数学公式)

2023每日刷题(五) Leetcode—2530.执行K次操作后的最大分数 向上取整思想 参考了这篇文章 有人肯定会问,这个向上取整为什么是这样来的。接下来我简单讲解一下。 数学式: x y 数学式:\frac{x}{y} 数学式&#xff1a…

实时消息传送:WebSocket实现系统后台消息实时通知

实时消息传送:WebSocket实现系统后台消息实时通知 WebSocket简介基本实现步骤后台服务器后端接口SimpMessagingTemplate MessageDto前端客户端 示例应用 在现代Web应用中,提供实时通知对于改善用户体验至关重要。WebSocket技术允许建立双向通信通道&…

Linux高性能服务器编程——ch1笔记

第1章 TCP/IP 协议族 1.1 TCP/IP 协议族体系结构以及主要协议 数据链路层 网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。 协议:ARP、RARP,实现IP地址和机器物理地址之间的转换。 网络…

IOS屏幕旋转监听

1.设计窗口,添加三个按钮 2.添加事件连接 3.按钮点击事件实现 先添加三个IBAction 实现IBAction 使用旋转立刻生效 -(IBAction)btnFixPortrait:(id)sender{//访问应用程序委托成员_app.mask UIInterfaceOrientationMaskPortrait;//设置窗口旋转属性[self setNeedsUpdateOf…

揭开 Amazon Bedrock 的神秘面纱 | 基础篇

在 2023 年 4 月,亚马逊云科技曾宣布将 Amazon Bedrock 纳入使用生成式人工智能进行构建的新工具集。Amazon Bedrock 是一项完全托管的服务,提供各种来自领先 AI 公司(包括 AI21 Labs、Anthropic、Cohere、Stability AI 和 Amazon 等&#xf…

【COMP305 LEC 3 LEC 4】

LEC 3 A basic abstract model for a biological neuron 1. Weights of connections Neuron gets fired if it has received from the presynaptic neurons 突触前神经元 a summary impulse 脉冲, which is above a certain threshold. Signal from a single synapse突触 ma…

LiveQing视频点播流媒体RTMP推流服务功能-如何配置资源进行轮巡播放视频轮播分屏展示

LiveQing视频点播流媒体RTMP推流服务功能-如何配置资源进行轮巡播放视频轮播分屏展示 1、分屏展示2、右击节点新建分组3、配置轮播间隔(秒)4、选择资源5、轮巡播放6、停止分组播7、切换播放的流类型8、RTMP推流视频直播和点播流媒体服务 1、分屏展示 2、右击节点新建…

towxml的使用,在微信小程序中快速将markdown格式渲染为wxml文本

towxml的使用,在微信小程序中快速将markdown格式渲染为wxml文本 Towxml概述安装下载 Towxml在小程序中使用 towxml Towxml概述 towxml3.0 支持以下功能: ● echarts图表,默认禁用,需自行构建以开启此功能 ● LaTeX数学公式&#…

【linux】Linux 查看内存使用情况的几种方法汇总

文章目录 GUI 查看命令获取命令 free命令 vmstat命令 top命令 htop Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况,包括总内存、已用内存、空闲内存、缓…

FPGA的64点FFT代码及报告,verilog快速傅里叶变换

名称:64点FFT快速傅里叶变换Radix4 软件:Quartus 语言:Verilog 代码功能: 使用verilog实现64-point Pipeline FFT处理器 FPGA代码资源下载网:hdlcode.com 代码下载: 名称:64点FFT快速傅里…

16.1 Socket 端口扫描技术

端口扫描是一种网络安全测试技术,该技术可用于确定对端主机中开放的服务,从而在渗透中实现信息搜集,其主要原理是通过发送一系列的网络请求来探测特定主机上开放的TCP/IP端口。具体来说,端口扫描程序将从指定的起始端口开始&#…

消失的它:网络层分片包中的第一个分片包去哪了?

在网络层IP包分片的过程中,遇到了大麻烦! 主机A: IP地址:192.168.0.10/24 MAC地址:02:00:00:00:00:10 主机B: IP地址:192.168.0.20/24 MAC地址:02:00:00:00:00:20 MTU:1…

16.The Tensor Product:Vector/Covector combinations

本节将概括目前为止所学的张量积知识。并讨论一般张量,它可以由任意数量的向量和协向量的任意组合来生成。 同样,也是使用的非标准的符号。 (2,0)阶张量, 由两个向量生成的。 (1,2)阶张…

人人自媒体的时候,Ai绘画还值得踏入吗?

前言 先说结论,如果你不打算涉足自媒体,平时也从不上网发什么内容去展示自己的话,其实AI绘画对你来说意义不大。但如果你对自媒体感兴趣,会涉及发作品,发内容,甚至去设计图片,那么AI绘画值得你…

2023年“绿盟杯”四川省大学生信息安全技术大赛

pyfile 先check源码,没什么发现,接着进行目录扫描,扫到路径 /download 下载备份文件得到 www.zip,解压得到app.py 大致审一下代码: 在read目录下给file传参进行请求,如果这个东西存在就会读取出来 这里…

Node学习笔记之Node简介

一、Node简介 1.1、为什么学习Node(了解) 企业需求 增加自身职业竞争力 进一步理解 Web,并有助于明白后端开发 大前端必备技能 为了更好的学习前端框架 ... ... 1.2、Node是什么 Node.js是基于 Chrome的V8 JavaScript 引擎构建的JavaScript运行环境。 Node.js不是新…

渗透测试--JWT攻防(一)

JWT简介 JWT代表JSON Web Token,它是一种用于安全地在不同实体之间传递信息的开放标准(RFC 7519)。JWT通常用于身份验证和授权领域,以及在网络应用程序和服务之间传递声明(claims)信息。 JWT的常见用途包括…

【Redis】主从复制

目录 单点问题主从模式如何启动多个redis-server建立主从关系断开连接安全性只读传输延迟拓扑结构一主一从一主多从树型结构 主从复制的基本流程replicationid的作用offset的作用全量复制和部分复制全量复制的无硬盘模式关于runid和replid部分复制实时复制 单点问题 如果某个服…

07-React-redux和redux的使用

07.react-redux和redux的使用 1.redux的使用 1).redux的理解 a.redux是什么 redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。作用: 集中式管理react应用中多个组件共享的状态。 b.什么情况下需要使…