JavaSE基础day06面向对象01
一. 数组的操作
(一) 数组获最值
1.给定一个数组,求出数组的最大值
2.分析思路(擂台思想):
1)定义变量,保存数组0索引上的元素
2)遍历数组,获取出数组中的每个元素
3)将遍历到的元素和保存数组0索引上值的变量进行比较
4)如果数组元素的值大于了变量的值,变量记录住新的值
5)数组循环遍历结束,变量保存的就是数组中的最大值
(二) 数组元素交换
1.将数组中指定索引的两个元素交换位置.
2.分析思路:
1)将两个索引位置对应的元素值获取到
2)设计一个临时变量,先存储小索引元素的原值
3)大索引元素值赋值给小索引元素位置
4)临时变量值赋值给大索引元素位置
(三) 数组的反转
1.数组中对称位置的元素进行交换
2.分析思路:
定义头和尾两个索引变量、同时向中间移动、交换变量指定位置元素
(四) 冒泡排序
1.目标: 通过冒泡排序算法将数组中的元素进行升序排序(从小到大)
2.原理: 比较两个相邻的元素,将值大的元素交换至右端
3.思路:
依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复第一趟步骤,直至全部排序完成.
第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
...
二.开发工具之IDEA
(一)IDEA使用技巧
1.1IDEA项目结构
1. idea项目下又可以分为不同的模块,在模块中又可以分为不同的包.包中可以有类文件
1.2 IDEA快捷键
1、ctrl+alt+空格 代码提示,代码补全
2、psvm 提示主方法生成
3、sout 提示打印语句
4、ctrl+alt+l 格式化代码
5、ctrl+y 删除当前行,删除的就是鼠标所在行
6、alt+enter 智能提示
7、alt+insert 快速生成代码, 面向对象中生成代码快捷键(构造器, setter和getter方法...)
8、ctrl+alt+t 快速包裹一段代码
9、ctrl + / : 单行注释
10、ctrl + shift + / : 多行注释
11、ctrl + f 文件内查找. f表示find
ctrl + r 查找+替换,r表示replace, 替换
跟进源代码查看 : ctrl + 方法名或者变量名
esc退出查找和替换
12、查看当前文件大纲 : ctrl + F12
13、快速生成变量名: ctrl + Alt + v / Alt + Enter
1.3 IDEA模块操作
1. 创建模块:
模块下可以创建包, 包下面设计类文件
2.删除模块 : 需要先在Project中移除模块, 然后再删除模块
(二) Debug断点调试的使用
1.1 Debug模式
1. Debug模式是供程序员使用的程序调试工具,它可以用域查看程序的执行流程,也可以用域追踪程序执行过程来调试程序.
bug : 缺陷,错误
debug : 调试错误,使用在开发人员自己调试代码, 可以逐行让代码运行, 查看每一行的运行结果,从而快速定位到问题的所在
1.2 Debug调试步骤
1. 如何加断点: 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可(断点表示需要让代码进入debug模式的位置)
2. 运行加了断点的程序
进入Debug模式运行程序
3. 控制代码的运行
点Step Into (F7)这个箭头,也可以直接按F7 : 进入当前行所调用方法
Step Over 当前代码行执行完毕
4. 删除断点:
选择要删除的断点,单击鼠标左键即可
三.面向对象
(一) 面向对象
1. 面向对象概述:
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。
面向对象的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。
面向过程 : 有一个需求要实现, 思考我怎么去实现, 强调的是做事的步骤,需要自己一步一步的去操作实现。
面向对象区别于面向过程思想,有一个需求要实现,思考谁能帮我实现, 强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
2. 举例:
洗衣服:
面向过程:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾起来
面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来
面向过程是面向对象的基础, 面向对象基于面向过程实现的, 但是代码思想层面上, 面向对象时更高级的设计思想
区别:
面向过程:强调步骤。
面向对象:强调对象,这里的对象就是洗衣机。
3. 面向对象的好处:
1、更符合人类的做事思想
2、复杂的事情简单化
3、由执行者变为指挥者
4. 面向对象的特征:
1、封装
2、继承
3、多态
(二) 类和对象
1. 类的概述
类是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物
属性 : 描述一类事物的特征
行为 : 描述该事物能够做什么(方法)
举例: 描述猫
属性: 名字、体重、年龄、颜色。
行为: 走、跑、叫, 吃饭, 睡觉...
2. 对象的概述
java是一类事物的具体体现。
对象是类的一个实例,必然具备该类事物的属性和行为。
举例: 猫
属性:lili、3kg、2岁、黄色。
行为:溜墙根走、蹦跶的跑、喵喵叫。
3. 类与对象的关系
- 类是对一类事物的描述,是抽象的。
- 对象是一类事物的实例,是具体的。
- 类是对象的模板,对象是类的实体。
(三) 类的定义
1. 概述: Java中类的定义其实就是使用代码对事物描述的一种体现,使用关键字class定义, 具有固定的格式
2. 格式:
修饰符 class 类名 {
成员变量1;
成员变量2;
......
成员方法1;
成员方法2;
......
}
3. 类中的内容:
属性:
对事物特征的描述体, java代码中使用变量体现, 被称之为成员变量或全局变量。
【和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。】
行为:
对事物功能【能干什么】的描述, java代码中使用方法体现,被称之为成员方法。
【和以前定义方法几乎是一样的。只不过把static去掉,static的作用在后面课程中再详细讲解】
// 如果类是现实世界中真实存在的事物, 就从 属性和功能 两个方面主要思考类的组成 public class Person { // 属性: 姓名,年龄,性别,电话号码 // 属性特征在类中以成员变量(全局变量)的形式存在: 普通的变量定义,位置类中方法外 String name; int age; String sex; String telNo; // 功能: 就是方法定义,但是可以不使用static关键字 // 吃饭 public void eat(){ System.out.println(name + "吃饭" + age + "年"); } // 睡觉 public void sleep(){ System.out.println(sex + "--" + telNo); } }
(四) 对象的使用
1. 创建对象: 类名 对象名 = new 类名(); 类本身就是一种引用数据类型
2. 成员的使用:
获取成员变量值:
变量 = 对象名.成员变量;
修改成员变量值:
对象名.成员变量 = 新值;
访问成员方法:
对象名.成员方法(实参);
3. 成员变量的默认值
1. 类与对象的练习
- 定义汽车类
- 属性:汽车品牌、汽车颜色
- 行为:汽车运行
- 定义测试类:创建类对象并使用对象成员
- 创建汽车对象
- 输出成员变量值
- 给成员变量赋值
- 再次输出成员变量值
- 调用成员方法
public class TestPerson { public static void main(String[] args) { // 1. 创建出一个Person类型对象 Person p = new Person(); // 2. 对象成员使用 // 成员变量: 对象名.成员变量名 = 值; // 变量 = 对象名.成员变量名; p.name = "张三"; p.age = 18; p.sex = "男"; p.telNo = "13867678989"; // 3. 对象中方法的调用 // 对象名.方法名(实际参数列表); p.eat(); p.sleep(); // 4. 当创建出一个对象时: JVM就会默认给对象中的成员变量进行默认赋初值动作 // 根据不同的数据类型有不同的初值 Person p1 = new Person(); p1.name = "李四"; p1.eat(); p1.sleep(); } }
小汽车案例代码
public class Car { String pinPai; String color; public void run(){ System.out.println(pinPai + "的" + color + "颜色的汽车正在跑"); } }
public class TestCar { public static void main(String[] args) { // 1. 创建出一个汽车对象, 类也是引用数据类型 Car c = new Car(); // com.ujiuye.duixiang.Car@1b6d3586 System.out.println(c); c.pinPai = "红旗"; c.color = "红"; c.run(); // 2. 再创建出一个小汽车类型 Car c1 = new Car(); // com.ujiuye.duixiang.Car@4554617c System.out.println(c1); c1.pinPai = "大众"; c1.run(); } }
(五) 对象内存图
创建对象内存执行过程:
1. 对象所在的类对应的.class字节码文件先加载到方法区(.class字节码文件中有.java文件中的一切), 字节码文件在方法区有内存地址
2. 创建对象的时候, JVM虚拟机就会通过new关键字到堆内存中开辟空间, 同时在堆空间中存储对应.class字节码文件的地址
1) 将类型中的所有非静态成员变量加载到对象所在的堆内存中, 同时默认的赋初值动作
2) 将这个对象的堆内存地址返回到栈内存的变量引用处
3. 当使用对象名.调用成员, 到对象堆内存中,进行成员变量赋值取值操作
4. 当使用对象名.调用方法, 方法进入到栈内存运行,同时记录调用该方法的对象内存地址. 后续有数据需求, 到指定对象中获取数据
1. 一个对象创建的内存图
2. 两个对象的内存图
3. 两个对象引用指向同一个内存空间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!