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

简介: 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



目录
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
359 3
|
JavaScript 前端开发 数据处理
【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
这篇文章讨论了Vue中实现权限管理的策略,包括接口权限、路由权限、菜单权限和按钮权限的控制方法,并提供了不同的实现方案及代码示例,以确保用户只能访问被授权的资源。
【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
|
12月前
|
监控 Shell 数据处理
Python执行Shell并获取结果的全面指南
Python执行Shell并获取结果的全面指南
751 1
|
敏捷开发 测试技术 持续交付
软件开发中的敏捷方法:从理论到实践
【8月更文挑战第13天】敏捷开发方法以其灵活、高效和用户导向的特点,在现代软件开发中发挥着越来越重要的作用。通过理解和应用敏捷开发的核心理念和实践,软件开发团队可以更好地应对变化,提高产品质量和用户满意度。然而,敏捷开发并非万能,它需要根据项目的实际情况进行调整和优化,才能真正发挥其价值。
|
12月前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
9454 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
XML 数据格式 Python
Python自动化脚本编写技巧
本文介绍了Python自动化脚本的编写技巧:选择合适的库(如os, requests, BeautifulSoup)以简化编程,利用循环和条件语句实现流程控制,通过函数和模块提高代码的可读性和可维护性,使用异常处理保证脚本稳定性,以及借助日志记录进行问题追踪。通过这些方法,可以编写出高效、稳定的自动化脚本。
|
数据挖掘 iOS开发 MacOS
Python数据分析:从导入数据到生成报告的全面指南
随着数据科学和人工智能的迅速发展,Python 已经成为了最受欢迎的数据分析语言之一。Python 具有简单易学、灵活性强、可扩展性高等优点,使其在数据分析领域具有广泛的应用。本文将介绍 Python 数据分析的基本步骤,帮助你了解如何使用 Python 进行数据分析。
|
大数据 Python
深入解析Python中的生成器(Generator) 及其高级应用
深入解析Python中的生成器(Generator) 及其高级应用
457 0
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
11560 1