java 类和对象的概念

类和对象的概念
面向对象当中最主要“一词”是:对象。

什么是类?
类实际上在现实世界当中是不存在的,是一个抽象的概念,是一个模板,是我们人类大脑进行思考、总结、抽象的一个结果。
(主要是因为人类的大脑进行思考提取才有了类的概念。)
类本质上是现实世界当中某些事务具有共同特征,将这些共同特征提取出来形成的概念
就是一个“类”,“类”就是一个模板。如:明星是一个类

什么是对象?
对象是实际存在的个体。(真实存在的个体)

宋小宝就是一个对象
姚明就是一个对象
罗俊就是一个对象
宋小宝、姚明、罗俊这3个对象都属于“明星”这个类。

在java语言中,要想得到“对象”,必须先定义“类”,“对象”是通过“类”这个模板创造出来的。
类就是一个模板:类中描述的是所有对象的“共同特征信息”,对象就是通过类创建出的个体。
类:不存在的,人类大脑思考总结一个模板(这个模板当中描述了共同特征。)
对象:实际存在的个体。
实例:对象还有另一个名字叫做实例。
实例化:通过类这个模板创建对象的过程,叫做:实例化。
抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程。

类 —【实例化】—>对象【实例】
对象—【抽象】---->类

类是一个模板,是描述共同特征的一个模板,那么共同特征包括什么呢?
状态信息
行为动作

类 = 属性 + 方法
属性来源于:状态,多见于名词
方法来源于:动作,多见于动词

思考:“java 软件工程师”在开发中起到的一个作用是什么?
我们为什么要做软件开发?解决现实生活当中的问题。
软件开发既然是为了解决现实世界当中的问题,那么首先 java 软件必须能够模拟现实世界。
其实软件是一个虚拟的世界。这个虚拟的世界需要和现实世界一一对应。这才叫模拟。

类的定义
怎么定义一个类,语法格式是什么?
[修饰符列表] class 类名{
类体 = 属性 + 方法
属性在代码上以“变量”的形式存在
方法描述动作/行为
}
注意:修饰符列表可以省略。

为什么属性是“以”变量的形式存在的?
假设我们要描述一个学生:
学生包括哪些属性:
学号:110
姓名:张三
性别:男
住址:深圳宝安区
是因为属性对应的是“数据”,数据在程序中只能放到变量中。因为属性是以数据的形式存在。
结论:属性其实就是变量。

变量的分类
变量根据出现位置进行划分:
方法体当中声明的变量:局部变量。
方法体外声明的变量;成员变量。(这里的成员变量就是“属性”)

类是模板,通过一个类,是可以创建 N 多个对象的。
new 是一个运算符。专门负责创建对象的。
java 中所有的“类”都属于引用数据类型。

关于编译的过程
按说应该先编译 XueSheng.java,然后再编译 XueShengTest.java,
但是对于编译器来说,编译 XueShengTest.java 文件的时候,会自动找 XueSheng.class,
如果没有,会自动编译 XueSheng.java 文件,生成 XueSheng.class 文件。

在语法级别上是怎么完成对象创建的呢?
类名 变量名 = new 类名();
这样就完成了对象的创建。
凡是通过 new 运算符创建的对象,都存储在堆内存当中,new 运算符的作用就是在堆内存中开辟一块空间。

null 是一个java关键字,全部小写,表示空。是引用数据类型的默认值。

什么是实例变量?
对象又被称为实例。
实例变量实际上就是:对象级别的变量。
public class 明星类{
double height;
}
身高这个属性所有的明星对象都有,但是每一个对象都有“自己的身高值”。
假设创建 10 个明星对象,height 变量应该有 10 份。所以这种变量被称为对象级别的变量。属于实例变量。

实例变量在访问的时候,是不是应该先创建对象?
是。实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

对象和引用的区别?
对象是通过 new 出来的,在堆内存中存储。
引用是:但凡是变量,并且该变量中保存的内存地址指向了堆内存当中的对象的都是引用。

1、画内存图注意事项:
第一:在内存图上不要体现代码。内存上应该主要体现“数据”。
第二:画图的时候,图上的图形应该有先后顺序,先画什么,再画什么,必须是有顺序的。
程序代码是有执行顺序的,程序执行到哪里就画到哪里。

2、为什么要画内存图(非常重要)?
第一:有了内存图,程序不运行,也知道结果。(可以推算结果)
第二:有了内存图,有助于调试程序。
画内存图是对 Java 运行机制的一种理解。不知道运行机制,以后复杂的程序出现错误之后不会调试。

成员变量可以不手动赋值,系统赋默认值。
= 代表赋值运算,“赋值”中有一个“值”。
“引用”是存储对象内存地址的一个变量。

程序在什么情况下会出现空指针异常呢(空指针异常 NullPointerException)?
“空引用”访问实现【对象】相关的数据时,会出现空指针异常。

关于垃圾回收器:GC
在 java 语言中,垃圾回收器主要针对的是堆内存。
当一个 java 对象没有任何引用指向该对象的时候,GC 会考虑将该垃圾数据释放回收掉。
垃圾回收器主要针对堆内存。

int x = 100;
int y = x; // x 赋值给y,是怎么传递的?将 x 变量中保存的 100这 个值复制一份传给 y。
java中规定:参数传递的时候,和类型无关,不管是基本数据类型还是引用数据类型统一都是将盒子中保存的那个“值”复制一份,传递下去。
内存地址也是值,也是盒子中保存的一个东西。
java 中关于方法调用时参数传递实际上只有一个规则:
不管你是基本数据类型,还是引用数据类型,实际上在传递的时候都是将变量中保存的那个“值”复制一份,传过去。

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

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

相关文章

每天五分钟计算机视觉:为什么要去GitHub寻找开源代码实现方案?

计算机视觉技术是当前人工智能领域的热门方向之一,其在许多领域都有着广泛的应用,如自动驾驶、智能安防、医疗诊断等。由于计算机视觉技术涉及到的算法和数据处理较为复杂,因此对于初学者来说,从零开始编写代码实现相关算法可能会…

69. X的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xff1…

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

ASP.NET Core AOT

Native AOT 最初在 .NET 7 中引入,在即将发布的 .NET 8 版本中可以与 ASP.NET Core 一起使用。在这篇文章中,我们从总体角度审视其优点和缺点,并进行测量以量化不同平台上的改进。 源代码:https://download.csdn.net/download/he…

ebay产品名称规则是什么?eBay产品主图规则是什么?-站斧浏览器

ebay产品名称规则是什么? 1、简洁明了:在eBay上,产品命名应该简洁明了,避免使用过长或复杂的词汇。买家通常会使用关键词搜索商品,因此使用简洁的命名可以提高产品在搜索结果中的排名。 2、准确描述:产品…

《使用ThinkPHP6开发项目》 - ThinkPHP6创建菜单模块

#CSDN 年度征文|回顾 2023,赢专属铭牌等定制奖品# 一、创建菜单模块 1、创建系统菜单表 CREATE TABLE menu (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 菜单ID,menu_name varchar(32) NOT NULL DEFAULT COMMENT 菜单名称,path varchar(2…

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴,求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失,应用无法启动的问题”,不知道应该怎么修复? 首先,先来了解“KBDPL.DLL文件”是什么? kbdpl.dll是Windows操作系统的一部分,是一个动…

三菱plc的点动控制循环(小灯闪烁,单控气缸循环)

以为前一段时间小编做了一个气缸定时循环的程序,根据程序有不足之处,所以小编写下这篇文章,将网络上的plc小灯控制进行总结!如果对你有帮助,不要忘了点赞收藏!如果有更加好的梯形图,欢迎评论&am…

八怪:再谈 MySQL 8 这两个精准的时间戳

MySQL 8.0 的 binlog 中多了 immediate_commit_timestamp 和 original_commit_timestamp 的信息,网上也有很多文章进行解释,最近也刚好遇到相关问题,刚好稍微学习一下。 作者:高鹏(八怪),《MySQ…

教育机构培训系统小程序功能清单

制作一款适合自己的教育机构培训系统小程序,可以为学员提供更便捷的学习体验,同时提高机构的教学效率。今天将详细介绍如何使用乔拓云平台制作教育机构培训系统小程序。 在浏览器搜索乔拓云,登录到后台,选择教育系统并点击进入。在…

基于SSM(非maven)的教室预约管理系统——有报告(Javaweb)

项目简介 本项目为基于SSM(非maven)的教室预约管理系统,本项目主要分为二种角色:用户,管理员 管理员拥有功能:教室信息管理、预约审核管理、预约记录查询、用户注册管理、修改个人信息、退出登录等 用户…

2024年阿里云优惠券领取及使用教程

阿里云作为国内领先的云计算服务提供商,一直致力于为客户提供优质、高效的服务。为了更好地回馈客户,阿里云经常会推出各种优惠活动,其中就包括阿里云优惠券。本文将详细介绍如何领取及使用阿里云优惠券。 一、阿里云优惠券介绍 阿里云优惠券…

SpringBoot的基础配置

问题导入 入门案例中没有引入spring-webmvc等依赖包,没有配置Tomcat服务器,为什么能正常启动?我们没有配置端口号,为什么端口是8080? 起步依赖 starter SpringBoot中常见项目名称,定义了当前项目使用的所…

CEC2017(Python):五种算法(DBO、HHO、RFO、SSA、PSO)求解CEC2017

一、5种算法简介 1、蜣螂优化算法DBO 2、哈里斯鹰优化算法HHO 3、红狐优化算法RFO 4、麻雀搜索算法SSA 5、粒子群优化算法PSO 二、CEC2017简介 参考文献: [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem d…

阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表

阿里云服务器系统盘或数据盘支持多种云盘类型,如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等,阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

炫云常见咨询问题TOP榜(云渲染软件专题)

在上一期,小编带大家盘点了年度炫云云渲染使用相关常见咨询问题TOP20。这份榜单不仅是对过去一年用户关注焦点的回顾,更是一个汇总了各类问题解答的宝典。无论您是初次使用还是老用户,都能帮助您更快速地解决疑问,提升使用炫云各类…

Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果

原创作者:恋猫de小郭 相信大家都已经听说过,明年的 Harmony Next 版本将正式剥离 AOSP 支持 ,基于这个话题我已经做过一期问题汇总 ,当时在 现有 App 如何兼容 Harmony Next 问题上提到过: 华为内部也主导适配目前的主…

构建 PHP 开发环境:使用 Docker 和阿里云镜像加速器

2. ji引言 docker Docker 是一个开源的容器化平台,它允许开发者打包应用及其依赖项到一个轻量级、可移植的容器中,然后可以在任何支持 Docker 的机器上运行这些容器。Docker 容器非常适合持续开发、测试和部署的工作流程。 主要特点: 轻量…

用js让用户输入一个数累加和

需求&#xff1a;用户输入一个数&#xff0c; 计算 1 到这个数的和。 比如 用户输入的是 5&#xff0c; 则计算 1~5 之间的累加和 并且输出到控制台 <body><script>let numprompt(请输入一个数)let sum0for(let i1;i<num;i){sumi}console.log(sum)</script…

进程终结之道:kill与pskill的神奇战斗

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 进程终结之道&#xff1a;kill与pskill的神奇战斗 前言基本用法kill命令&#xff1a;基础语法&#xff1a;选项&#xff1a;示例&#xff1a; pskill命令&#xff1a;基础语法&#xff1a;选项&#x…