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.初始值:成员变量有默认值(值与数组默认值一致)
局部变量没有默认值,使用前必须先进行初始化