欢迎来到我的博客

将来的你一定会感激现在拼搏的自己

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. 两个对象引用指向同一个内存空间

 

posted @   晴天般的微  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示

目录导航