JavaSE——面向对象基础(1/4)-面向对象编程、程序中的对象、对象的产生、对象的执行原理、类和对象的一些注意事项

目录

面向对象编程

程序中的对象

对象的产生

对象的执行原理

类和对象的一些注意事项


面向对象编程

  • 开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理。

例如设计一个学生的对象,其中有姓名和成绩等,录入不同的信息就可以产生多个学生的数据。

学生的数据,找学生对象处理;

汽车的数据,找汽车对象处理;

手机的数据,找手机对象处理。

程序中的对象

对象本质上是一种特殊的数据结构。

对象的产生

  • class,也就是,也称为对象的设计图(或者对象的模板)。

设计 类 相当于设计一张“表”,有了“表”之后就可以新建对象了。

也就是说,先用class设计出对象的模板,然后再用class来new对象,new出一张张表格,有多少张这样的表格,就有多少个对象。

public class 类名{1.变量,用来说明对象可以处理什么数据2.方法,描述对象有什么功能,也就是可以对数据进行什么样的处理...
}
类名 对象名 = new 类名();

对象的执行原理

计算机是通过虚拟机中的三块区域(方法区、栈内存、堆内存)配合来执行我们的面向对象程序的,

  1. 首先会执行Test类,因此会先把Test类加载到方法区里面
  2. 然后执行Test类里面的main方法,main方法是提到栈内存进行执行的
  3. 接着就执行main方法的第一行代码,因为此处第一行代码是在创建学生类,因此会把这个学生类也加载到方法区里面
  4. 用这个学生类定义一个s1变量,变量是放在方法里面的,因此它会在main方法里开辟一块变量空间来代表s1这个变量
  5. 执行new对象时,这个new出来的学生对象会放在堆内存里面,会在堆内存中开辟一块内存空间出来,可以把这个内存空间理解成学生表,该内存空间会有自己的地址,学生类里面创建的变量一开始都是初始值,且这个对象里面还有一个类的地址信息,该地址指向当前该学生对象是由哪个类创建的。
  6. 接着会把这个学生类的地址赋值给s1。
  7. 然后就可以根据s1中存储的地址,指向那个学生类,进而改变那个学生类的数据;再通过学生类的地址找到定义它的类,去执行方法。


  • Student s1=new Student();
  • 每次new Student(),就是在堆内存中开辟一块内存区域代表一个学生对象。
  • s1变量里面记住的是学生对象的地址。

如何识别引用类型的变量?

Student s1=new Student();

s1变量中存储的是对象的地址,因此变量s1也称为引用类型的变量。

类和对象的一些注意事项

  • 类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义,比如:Student、Car...
  • 类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)。
  • 成员变量本身存在默认值,在定义成员变量时一般来说不需要赋初始值(没有意义)。
  • 一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
  • 对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了。
  • 如果某个对象没有一个变量引用它,则该对象无法被操作了,该对象会成为所谓的垃圾对象。

注意:当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。Java存在自动垃圾回收机制,会自动清楚掉垃圾对象,程序员不用操心。


END


学习自:黑马程序员——JavaSE课程

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

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

相关文章

【DDD】学习笔记-应用服务

Eric Evans 为运用领域驱动设计的系统架构划定了层次,在领域层和展现层之间引入了应用层(Application Layer):“应用层要尽量简单,不包含业务规则或者知识,而只为下一层(指领域层)中…

Unity3D中刚体、碰撞组件、物理组件的区别详解

前言 Unity3D提供了丰富的功能和组件,其中包括刚体、碰撞组件和物理组件。这些组件在游戏开发中起着非常重要的作用,能够让游戏世界更加真实和有趣。本文将详细介绍这三种组件的区别以及如何在Unity3D中实现它们。 对惹,这里有一个游戏开发…

MAC M1安装vmware和centos7虚拟机并配置静态ip

一、下载vmware和centos7镜像 1、VMWare Fusion 官网的下载地址是:下载地址 下载好之后注册需要秘钥,在官网注册后使用免费的个人秘钥 2、centos7 下载地址: https://biosyxh.cn:5001/sharing/pAlcCGNJf 二、虚拟机安装 直接将下…

算法沉淀——多源 BFS(leetcode真题剖析)

算法沉淀——多源 BFS(leetcode真题剖析) 01.矩阵02.飞地的数量03.地图中的最高点04.地图分析 多源 BFS 是指从多个源点同时进行广度优先搜索的算法。在传统的 BFS 中,我们通常从一个起始点开始,逐层遍历所有的相邻节点。而在多…

【R语言】单个分类模型性能评估、两个分类模型性能对比、统计检验

单个模型评估 # install.packages("pROC") library(pROC)calculate_metrics <- function(label, prediction) {# 加载所需的包library(pROC)# 计算ROC曲线和AUCroc_obj <- roc(label, prediction)auc_value <- auc(roc_obj)# 寻找最佳cutoffcutoff <- c…

探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来

探索AI视频生成新纪元&#xff1a;文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来 sora文生视频&#xff0c;探索AI视频生成新纪元 由于在AI生成视频的时长上成功突破到一分钟&#xff0c;再加上演示视频的高度逼真和高质量&#xff0c;Sora立刻引起了轰动。在S…

【Spring Boot 3】【JPA】一对一单向关联

【Spring Boot 3】【JPA】一对一单向关联 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花…

408计算机网络--基础概论

学习计算机网络走以前需要首先明白一个大的概念&#xff0c;计算机网络通常分为通信子网&#xff08;实现数据通信&#xff09;和资源子网&#xff08;实现资源共享/数据处理&#xff09;七层妖塔 计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机系统&#xff0…

Rabbitmq入门与应用(三)-RabbitMQ开发流程

RabbitMQ开发流程 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置MQ 最简配置 spring:rabbitmq:host: mq的安装机器ipport: 5672username: ad…

基于python+mysql的宠物领养网站系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、宠物详情页、用户中心模块。后台功能包括&#xff1a;总览、领养管理、宠物管理、分类…

简单介绍一下WebRTC中NACK机制

WebRTC中的NACK&#xff08;Negative Acknowledgement&#xff09;是一种用于实时通信的网络协议&#xff0c;用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时&#xff0c;它会发送一个NACK消息给发送方&#xff0c;请求重新发送丢失的数据包。 NACK的工作原理如…

使用Hutool的ExcelUtil工具导出Excel时遇到的异常

遇到的异常信息&#xff1a; You need to add dependency of ‘poi-ooxml’ to your project, and version > 4.1.2nested exception is java.lang.NoSuchFieldError: Factoryorg.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookorg.apache.logging.log4j.Log…

忘记管理员密码

1、在/home/jenkins/config.xml中删除&#xff1a; <useSecurity>true</useSecurity><authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAccess>false</denyAnonymousRea…

uniapp校验app版本并更新

最近用uniapp写了一个安卓壳子做app&#xff0c;遇到一个需求&#xff0c;校验app版本并更新 通过对比线上版本号和app自己的版本号的差异&#xff0c;唤起更新弹窗 相关代码 App.vue <script>export default {onLaunch: function() {this.checkVersion()},onShow: f…

Hack The Box-Office

端口扫描&信息收集 使用nmap对靶机进行扫描 nmap -sC -sV 10.10.11.3开放了80端口&#xff0c;并且注意到该ip对应的域名为office.htb&#xff0c;将其加入到hosts文件中访问之 注意到扫描出来的还有robots文件&#xff0c;经过尝试后只有administrator界面是可以访问的 …

详解平面点云面积计算

部分代码展示&#xff1a; &#xff08;1&#xff09;利用格网法计算面积&#xff1a; //&#xff08;2&#xff09;测试使用格网法计算平面点云面积 void main() {char *inputpath "D:\\testdata\\data.txt";vector<pcl::PointXYZ> points ReadPointXYZIn…

Java 21 新特性的扫盲级别初体验

一、前言 JDK 21 于 2023 年 9 月发布&#xff0c;作为目前讨论热度最高的JDK&#xff0c;虽然大家都开玩笑说你发任你发&#xff0c;我用Java8&#xff0c;但是作为一个Javaer&#xff0c;对JDK21的新特性还是要有所了解的。 以下是 JDK 21 的新功能列表&#xff1a; 虚拟线…

element-plus日期选择器2次封装

预期效果 官网默认样式&#xff1a; 修改后的样式&#xff1a; 代码实现 DatePicker.vue <template><div class"date-picker-container"><el-date-picker v-model"date" change"handleChange" type"date" value-for…

CMake无Name和Value部分界面

鼠标会变成以下 拉开后就 出现想要的部分

PTA-九九乘法表

从键盘输入n&#xff08;n为1~9&#xff09;&#xff0c;输出九九乘法表的前n行&#xff0c;每个式子按“a * b c”形式输出&#xff0c;其中a和b各占1位列宽&#xff0c;c占4位列宽并左对齐。 输入格式: 一个1~9之间的整数n&#xff0c;如&#xff1a;9 输出&#xff1a; …