JavaSE学习day7_01 面向对象
1. 类和对象
1.1 类和对象的理解
客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。即各个对象的总称,比如学生是一个类,但是学生有很多个,每一个称之为对象。
-
类
-
类的理解
-
类是对现实生活中一类具有共同属性和行为的事物的抽象
-
类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
-
简单理解:类就是对现实事物的一种描述,可以理解为一种设计图
-
-
类的组成
-
属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
-
行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
-
-
-
类和对象的关系
-
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
-
对象:是能够看得到摸的着的真实存在的实体
-
简单理解:类是对事物的一种描述,对象则为具体存在的事物
-
面向对象的学习重点:学习获取已有对象并使用,和学习如何自己设计对象并使用
1.2 类的定义
类的组成是由属性和行为两部分组成
-
属性:在类中通过成员变量来体现(类中方法外的变量)
-
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可,后面学习会讲为什么要去掉static关键字,这里先跟着做就行)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
public class 类名 {// 成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;…// 成员方法方法1;方法2;
}
示例代码:
/*手机类:类名:手机(Phone)
成员变量:品牌(brand)价格(price)
成员方法:打电话(call)发短信(sendMessage)*/
public class Phone {//成员变量String brand;int price;
//成员方法public void call() {System.out.println("打电话");}
public void sendMessage() {System.out.println("发短信");}
}
补充:

这里有必要记一下这两种类,后面会经常用到。在这里强调一下,我所说扩展内容和补充内容都是重点,不能跳过学习。
类的注意事项:

1.3 对象的使用
-
创建对象的格式:我想这个大家已经不陌生了。
-
类名 对象名 = new 类名();
-
-
调用成员的格式:
-
对象名.成员变量
-
对象名.成员方法();
-
-
示例代码
/*创建对象格式:类名 对象名 = new 类名();范例:Phone p = new Phone();
使用对象1:使用成员变量格式:对象名.变量名范例:p.brand2:使用成员方法格式:对象名.方法名()范例:p.call()*/
public class PhoneDemo {public static void main(String[] args) {//创建对象Phone p = new Phone();
//使用成员变量System.out.println(p.brand);System.out.println(p.price);
p.brand = "小米";p.price = 2999;
System.out.println(p.brand);System.out.println(p.price);
//使用成员方法p.call();p.sendMessage();}
}
1.4 学生对象-练习
-
需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用
-
分析:
-
成员变量:姓名,年龄…
-
成员方法:学习,做作业…
-
-
示例代码:
public class Student
{//成员变量String name;int age;
//成员方法public void study() {System.out.println("好好学习,天天向上");}
public void doHomework() {System.out.println("键盘敲烂,月薪过万");}
}
/*学生测试类*/
public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();
//使用对象System.out.println(s.name + "," + s.age);
s.name = "林青霞";s.age = 30;
System.out.println(s.name + "," + s.age);
s.study();s.doHomework();}
}
扩展一下引用数据类型:

尤其要注意那个类,它是引用数据类型,待会儿还会再说到。
定义类的注意事项:

2. 对象内存图
2.1 单个对象内存图
回顾一下内存分配:

作为一个热爱编程或者想做一个资深的程序员,基本功一定得扎实。对java内存分配要熟悉。
-
再看:
-

这个仅限了解,但是要知道这个知识点。
-
成员变量使用过程
-

这张图告诉我们,new关键字申请的空间都是在堆里面申请的。有地址的。而对象名就是一个存放地址的变量,所谓的引用就是通过这个地址去找其他的成员变量。因此类是一种引用数据类型。
-
成员方法调用过程
-

我们需要知道的是在堆里面,除了成员变量以外,还有成员方法的地址也是在堆中,注意是成员方法的地址。
引用数据类型的变量,其实是一个存放地址的变量,如果用System.outprintln()打印这个变量的话,会得到一个地址值,可能不是很好理解,大家可以类比String这个类对比学习就知道了。
如下:

大家看到这个可能有点晕,但是我说没什么问题,这不就是一个地址吗?怎么会是地址呢?在前面我们就知道在java语言中地址的构成形式是:数据类型+@+8位的16进制数字。后面俩没啥问题,主要是前面那一串是什么?是数据类型吗?答案是,当然是,我们之前说了,除了基本数据类型(四类八种,忘记的复习一下)以外的都是引用数据类型,那当然就是数据类型了。因此类也是一种数据类型,是一种引用数据类型。

2.2 多个对象内存图
-
成员变量使用过程
-

看懂即可。对象名可以理解为C语言中所说的指针。
-
成员方法调用过程
-

-
总结:
多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份
2.3 多个对象指向相同内存图

-
总结
当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)
只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。
3. 成员变量和局部变量
3.1 成员变量和局部变量的区别
-
类中位置不同:成员变量(在类中但在方法外)局部变量(方法内部或方法声明上)
-
内存中位置不同:成员变量(堆内存)局部变量(栈内存)
-
生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
-
初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)
-

本节内容知识点有些抽象,可以多看几遍,甚至查看相关书籍。
相关文章:
JavaSE学习day7_01 面向对象
1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。即各个对象的总称,比如学生是一个类,但是学生有很多个,每一个称之为对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的…...
有趣的HTML实例(十二) 早安、晚安动画(css+js)
这话在我心里已经复习了几千遍。我深恨发明不来一个新鲜飘忽的说法,只有我可以说只有你可以听,我说过,我听过,这说法就飞了,过去、现在和未来没有第二个男人好对第二个女人这样说。 ——《围城》 目录 一、前言 二、…...
入行测试已经4年了 ,进华为后迷茫了3个月,做完这个项目我决定离职....
转行测试 我是大专非计科,我转行之前从事的工作是商场管理,努力了4年左右的时间才做到楼层经理,但是工资太低并且事情太多,薪资才6K。 更多的是坚定了自己的想法,我要改变自己 恰好有几个大学同学在互联网公司工作&a…...
【halcon】灰度直方图直观理解与应用
灰度直方图 横坐标:是 0~255 表示灰度值的范围 纵坐标:是在不同灰度值下像素的个数! 那么灰度直方图的本质就是统计不同灰度下像素的个数! 它的直观目的,就是查看灰度的分布情况! 与之相关的函数ÿ…...
Android笔记:动画
文章目录1.View Animation(视图动画)1.1 Tween Animation(补间动画)Animation 继承属性透明度alpha缩放scale移动translate旋转rotateset标签Animation父类共有函数1.2Frame Animation (逐帧动画)2.Propert…...
Git学习总结
目录 Git工作的基本流程图 git基本配置 配置SSH公钥 查看提交日志(log) 版本回退 为常用指令配置别名 添加文件至忽略列表 Git操作的基本指令 编辑 Git远程仓库的操作 把黑马的Git视频看完了黑马程序员Git全套教程,完整的git项目管…...
第四天笔记
1. 简述自定义转换器的使用过程? 第一步:定义一个类,实现 Converter 接口,该接口有两个泛型。 第二步:在 spring配置文件中配置类型转换器。 Spring配置类型转换器的机制是 将自定义的转换器注册到类型转换服务中去…...
《MySQL学习》 全局锁和表锁
一.MySQL锁的分类 二.全局锁 全局锁对整个数据库加锁,可以执行如下命令,整个数据库都将处于只读状态。 Flush tables with read lock ;我们可以执行 unlock table进行解锁 unlock table ;读操作 非读操作(阻塞) 全局锁的典型使…...
Altium Designer输出生产文件Gerber、IPC、NC Drill、坐标文件--AD
AD软件版本:22.2.1 gerber文件输出共有两部分: 1、Gerber Files:铜皮 和 外形分别导出 2、Nc Drill Files 分3次导出 一、Gerber Files 导出2次 设定原点 ** Edit->Origin->Set** 一般板边左下角为原点,可以根据自己板子形状确定 导…...
用VSCode搭建Vue.js开发环境及Vue.js第一个应用
目录 一、VSCode安装 二、VSCode简单配置 三、Vue.js的下载和引入 四、Vue.js第一个应用 一、VSCode安装 Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,可用于Windows,macOS和Linux。它内置了对JavaScrip…...
Leetcode 每日一题 2341. 数组能形成多少数对
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...
前后端分离-小项目-3前后端交互
第一步编写前端页面,第二步搭建后端环境,现在开始第三步,继续完善前端功能完善“添加”按钮功能Ajax异步请求安装在前端项目安装ajax。在Terminal输入:npm i axios -S点击“添加”按钮,弹出Dialog对话框设置对话框里面…...
Spring如何整合MyBatis框架?使用XML及java类的配置方式
前言 Spring文章链接: 从头到尾Spring概念,家族,核心技术使用,事务这一篇就够了!!!_千小半的博客-CSDN博客_spring最新技术 mybatis文章链接: MyBatis框架入门(含实例)_mybatis sqlsession创建和关闭_千小…...
第七届蓝桥杯省赛——8冰雹数(递归)
题目:任意给定一个正整数N,如果是偶数,执行: N / 2如果是奇数,执行: N * 3 1生成的新的数字再执行同样的动作,循环往复。通过观察发现,这个数字会一会儿上升到很高,一会…...
Android 10.0 设置静态ip重启后获取不到ip的修复
1.概述 在定制化开发中,对于设置静态ip以后可以正常使用,但是遇到一个新问题 就是开机以后,获取不到ip 地址,这就有点不正常了,获取不到ip 就自然连不上网了,所以要分析问题所在解决问题 2.设置静态ip重启后获取不到ip的修复的核心代码 frameworks/opt/net/ethernet/java…...
mysql笔记
基础 概念 数据库体系结构的三级模式为:外模式、概念模式和内模式。 内模式:存储模式,对数据的物理结构和存储方式的描述。提供数据定义语言定义的。如顺序还是索引存储(将概念模式定义的数据进行组织存储,达到较好…...
华为OD机试 - 最多等和不相交连续子序列(Python)| 真题+思路+考点+代码+岗位
最多等和不相交连续子序列 题目 给定一个数组,我们称其中连续的元素为连续子序列,称这些元素的和为连续子序列的和。 数组中可能存在几组连续子序列,组内的连续子序列互不相交且有相同的和。 求一组连续子序列,组内子序列的数目最多。输出这个数目。 输入 第一行输入为…...
第四届宁波网安市赛训练题
Crypto 散乱的密文 8fd4a4c94gf15{50}l72d3提示了2 1 6 5 3 4,我们直接横向排列 2165348fd4a4c94gf15{50}l72d3 按顺序竖着抄下来fc1l84f}a45dg034{2d957,然后栅栏解密,注意这里是W型栅栏解密,行数6 flag:flag{52048c453d794df1} 综合解密…...
Windows中MySQL 8.x版本忘记密码如何重设
Windows中MySQL 8.x版本忘记密码如何重置 文章目录Windows中MySQL 8.x版本忘记密码如何重置一、前言二、重置密码操作1、停止MySQL服务2、以安全模式启动MySQL服务3、无密码登录mysql4、重置登录密码5、验证密码是否重置成功三、最后我想说一、前言 好久之前在电脑下载的MySQL…...
【信管12.1】信息文档管理与配置管理
信息文档管理与配置管理对于项目管理来说,文档非常重要,如果是传统的工程行业项目的话,仅仅标书就是几百上千页的。相对来说,其实信息系统开发项目已经好很多了。另外就是配置项,它是比文档更大的一个概念,…...
游戏资源解密工具:RPG Maker Decrypter零基础使用指南
游戏资源解密工具:RPG Maker Decrypter零基础使用指南 【免费下载链接】RPGMakerDecrypter Tool for extracting RPG Maker XP, VX and VX Ace encrypted archives. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerDecrypter RPG Maker Decrypter 是一…...
硬件工程师转向嵌入式软件开发的十大技巧
嵌入式系统设计:硬件工程师转向软件开发的十大实用技巧1. 引言嵌入式系统设计是硬件与软件紧密结合的领域,硬件工程师在扩展技能到软件开发时,需要建立新的思维模式和工作方法。本文总结了硬件工程师转向软件设计时需要掌握的十大关键技巧&am…...
GPEN图像修复新手入门:界面介绍与功能详解
GPEN图像修复新手入门:界面介绍与功能详解 1. 认识GPEN图像修复工具 你是否遇到过这样的情况:翻出老照片想分享给亲友,却发现照片已经泛黄、模糊甚至出现划痕?GPEN图像修复工具就是为解决这些问题而生的专业解决方案。这个由科哥…...
【AI平台】n8n进阶指南:Docker环境下无缝更新与配置保留实战
1. 为什么需要无缝更新n8n? 如果你正在使用n8n这个强大的工作流自动化工具,肯定会遇到版本更新的问题。作为一个长期使用n8n的开发者,我深刻理解那种"既想用新功能又怕配置丢失"的矛盾心理。每次看到n8n后台的更新提示,…...
2026最权威AI论文平台榜单:这些被高校和导师悄悄推荐的工具你还没用?
AI论文平台正成为学术研究的重要助力工具,其在提升写作效率、确保内容合规性方面展现出显著价值。依托权威检测机构、高校实测数据及用户真实反馈,2026年最值得信赖的AI论文平台已逐渐浮出水面,它们不仅功能全面,更深度适配中文论…...
文本风格转换技术:数字手写化工具的创新应用与实践指南
文本风格转换技术:数字手写化工具的创新应用与实践指南 【免费下载链接】text-to-handwriting So your teacher asked you to upload written assignments? Hate writing assigments? This tool will help you convert your text to handwriting xD 项目地址: h…...
Magisk Root技术实践指南:从决策评估到风险管控的完整解决方案
Magisk Root技术实践指南:从决策评估到风险管控的完整解决方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 一、决策评估:场景化应用与技术选型 1.1 设备Root需求分析矩阵 在…...
SDMatte Web界面实操手册:从上传到下载透明PNG的完整步骤
SDMatte Web界面实操手册:从上传到下载透明PNG的完整步骤 1. 认识SDMatte:你的智能抠图助手 SDMatte是一款专为高质量图像抠图设计的AI工具,它能帮你轻松完成各种复杂的抠图任务。想象一下,你拍了一张漂亮的玻璃杯照片ÿ…...
用Python手把手实现乘幂法:从理论到代码,5分钟搞定矩阵最大特征值计算
用Python手把手实现乘幂法:从理论到代码,5分钟搞定矩阵最大特征值计算 矩阵特征值计算是线性代数的核心问题之一,在机器学习、物理模拟和工程分析中无处不在。但当你面对一个实际项目时,真正需要的往往不是繁琐的数学推导…...
SEO_网站排名不上去?试试这几个SEO解决办法
SEO:网站排名不上去?试试这几个SEO解决办法 如果你发现自己的网站在百度上的排名一直不上去,你可能正面临着一场SEO战争。SEO,全称搜索引擎优化,是提高网站在搜索引擎结果中排名的关键技术。本文将为你详细探讨一些常见…...
