2021-7-19 Java课堂笔记Day04

1.API的初始

JRE中包含的java自身带

2.常见算法

算法 :指解决问题方法的准确而完整的描述,是解决问题的一系列清晰指令,代表用系统的方法描述解决问题的策略机制。 不同算法能用不同时间、空间或效率完成同样的任务,算法的优劣,可以用时间复杂度和空间复杂度来衡量。

2.1递归算法

递归:在方法中使用方法自身。

递归的基本原理:

1.每一级函数调用都有自己的变量。

2.每一次函数调用都会有一次返回。

3.递归函数中,位于递归调用前的语句和每级调用时的语句执行顺序相同;位于递归调用后的语句和每级调用时的语句执行顺序相反。

4.每级递归的变量不同,但代码不会复制。

递归的三大要素:

1.明确函数的功能

2.明确递归的结束条件

3.找出等价的函数关系式

2.2排序算法

选择排序:直接选择排序 堆排序

交换排序:冒泡排序 快速排序

插入排序:直接插入 折半插入 shell排序

归并排序

桶式排序

基数排序

2.2.1冒泡排序***

思想:

1 比较相邻元素,如果元素1大于元素2就交换位置

2 对每对相邻元素进行比较,

3 对所有元素进行重复比较,但要排除已排序的元素

4 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

代码的重构:

1 让代码的结构更清晰,便于阅读和维护(养成写注释的习惯)

2 使代码能够复用,减少代码的冗余

2.2.2快速排序

快速排序采用分治思想 快速排序可视为冒泡排序的升级

思想:

1.选择任意数为“基准元素”

2.大于“基准元素”的放右边,小于的放左边(分区操作)

3 对分区的元素用递归方法进行循环排序

4 递归的最底部的情形 是数列的大小是零或 1 也就是永远都已经被排序好了 虽然这样一直递归下去,但是这个算法总会要结束,因为在每次的迭代中,他至少会把一个元素摆在他最后的位置。

注意:以基准元素寻找时必须先从右往左找,再从左往右找,否则结果会错误。

2.2.3选择排序

是一种简单直观的排序算法。

思想:

1 找出数组中最大(最小)的元素与第一个元素交换

2 对下一个元素进行循环

选择排序和冒泡排序的区别:

冒泡排序通过多次交换,将当前循环中最大的元素放到最后。选择排序对元素进行遍历,记录最大(最小)元素位置,最后进行交换将元素放到合适位置

2.3二分查找法

二分检索法(折半检索)。二分检索法的基本思想是:假设数组中的元素是有序存放(排序)。首先确定我们要查找的值(key)。将key与数组中的中间位置的元素进行比较,如果key< 中间值,则说明要查找的元素位于左半部分,如果key > 中间值,则说明要查找的元素 位于右半部份。如果key=中间值,则说明中间的元素就是我们要找的元素。

二分检索法是一种效率较高的检索方法。

2.4Arrays工具类

数组排序 Arrays.sort()

数组填充 Arrays.fill()

数组查找(二叉法)Arrays.binarySearch()(只能查找已排序数组,否则先排序)

有的代码类,通过引用这些代码类可以方便的对代码进行编写。

3.面向对象

3.1何为“面向对象”的编程思想

思想:

3.2表格结构和类结构

表格思维 就是一种典型的面向对象的思维

学号姓名专业年龄

3.3面向对象

了解事物的详细信息并关注的过程称为面向对象。

面向一个具体的事物进行操作,称为面向对象编程。

两大核心:

  • 类:对显示生活中具有共同属性和行为的事物的抽象

    • 特点:

      • 是对象的数据类型

      • 是有相同属性和行为的一组对象的集合

  • 对象 类的具体化

    • 属性 对象具有的各种特征,每个对象的每个属性有特点的值

    • 行为 对象能够执行的操作

类和对象的关系:

类:对具有共同属性和行为的事物的抽象

对象:该类下的一个真实存在的实体。

3.4面向过程和面向对象

面向对象和面向过程都是对软件分析、设计、开发的一种思想。

面向对象开发的阶段:分析阶段(OOA)、设计阶段(OOD)、编程阶段(OOP)

C是典型的面向过程的语言,Java是典型的面向对象的语言

面向过程着重数据方面,是一种执行者的思维;面向对象着重属性方面,是一种指挥者的思维。

面向过程和面向对象是相辅相成的,宏观上通过面向对象进行整体的设计,微观上通过面向过程进行数据的处理。

3.5类的定义

类的重要性: java程序的基本组成单元

类可以看作同一类对象的模板,对象可以看作是该类的一个具体实例

类是用于描述同一类型的对象的抽象概念,类中定义了这一类对象所具有的共同属性和方法。

类的组成是由属性和行为两部分组成:

属性:在类中通过成员变量来体现

成员变量: 定义在类的内部,方法的外部的变量

行为:在类中是通过成员方法来体现的。

成员方法:和前边讲过的方法相同 只是去掉方法上的static

定义步骤:

1 定义一个类

2 编写类的成员变量

3 编写类的成员方法

3.6对象的创建和使用

创建对象:类名(类型) 对象名(变量) = new 类名();

使用对象:

1.使用成员变量:

格式:对象名.属性名;//获取属性 对象名.属性名 = 对应类型的值;//给属性赋值

2.使用成员方法:

格式:对象名.方法名(实参列表);

3.7对象的内存分析

3.7.1单个对象

main方法入栈,创建new对象,在堆内存中存放对象的成员变量,可通过对象对变量进行赋值和操作,若对象中有成员方法且在main方法中有使用,则成员方法入栈执行完后出栈,最后main方法出栈。

3.7.2多个对象

与单个对象相似,多个对象在内存中有不同的划分,成员变量储存在各自的内存区域,成员方法是多个成员共有。

3.7.3多个对象指向相同内存

当多个对象的引用指向同一个内存空间,只要有一个指向对内存数据进行了修改,之后无论用哪个进行引用结果都是修改后的数据(引用类型数据的引用)

4成员变量和局部变量

4.1区别

1.代码位置:成员变量位于类的内部,方法的外部 局部变量位于方法内部(方法形参)

2.内存位置:成员变量位于堆内存中 局部变量位于栈内存中

3.从生命周期来说:成员变量随对象的产生而产生,随对象的消失而消失

局部变量随方法的调用而产生,随方法执行完毕(出栈)而消失

4.初始值:成员变量有默认值(值与数组默认值一致)

局部变量没有默认值,使用前必须先进行初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值