2019/04/28 小雨
一、可变参数:参数的个数不确定,可以是0个可以是多个,参数的数据类型必须相同
可变参数必须要写在参数列表的最后
... ,数据类型 ... 参数名-->可变参数*
*操作可变参数,要通过使用数组的方式,编译器会隐藏的在内部为我们构建一个数组,存储可变参数的值*
二、数组排序
数组:
int[] arr={9,10,5,7,4}
冒泡排序: 每两个相邻数之间进行比较,找到一个最小的或者最大的进行交换,把它放在这一轮的最后一个位置
i=1~arr.length-1 两个数中的第一个j的变化范围
第一轮: 9,5,7,4,10 [0,arr.length-1) 能确定一个最大值,放在最后,下一轮不用比较
第二轮: 5,7,4,9 [0,arr.length-2)
第三轮: 5,4,7 [0,arr.length-3)
第四轮: 4,5 [0,arr.length-4)
选择排序: 拿主场数和后面的每一个位置的数据比较大小,确保这一轮结束后,主场位置存放的是这一轮中的最大或最小者
轮数 i 1~arr.length-1 主场数的索引 i 与主场数比较的数的范围:
0 第一轮: 1,9,5,7,4 ,18 0 [i+1,arr.length-1]
1 第二轮: 3,5,7,4 ,8 1
2 第三轮: 7,5,4 ,8 2
3 第一轮: 5,4 3
三、二分法查找:
数组已经升序排序
查找数组中指定的数据,找到返回它的索引,没有找到返回-1
三、1.面向对象和面向过程区别:
都是一种思维方式,是一种思想
面向过程:“我应该怎么去做?” 然后一步一步去实现
面向对象:“我应该让谁来做?” 不关注具体如何实现,关注的是对象
2.面向对象的优点:
1.更贴近于现实生活
2.面向对象可以将复杂的问题简单化
3.面向对象贴近管理者的角度,面向过程体现于执行者
3.如何使用面向对象的思维方式进行编程:
想要程序和现实生活挂上关系,所以提供的两个概念,类 对象
类:现实生活中一系列事物的模板
对象:具体的某个事物
4.自定义类|模板类|javabean
1)手机能做什么??? 打电话,上网,发短息,刷抖音... 动词 ---功能 成员方法
2)手机的特征??? 颜色 价钱 品牌 尺寸... 名词 ---属性 成员变量
事物:属性 功能
public class 类名{
成员变量
修饰符 数据类型 变量名=赋值;
成员方法
修饰符 返回值类型 方法名([参数]){
方法体
使用引用数据类型:
1.导包 1)java.lang包下的内容 2)同包下的类不需要导包
2.创建类型的引用
数据类型 引用名|变量名 = new 数据类型(); --创建一个对象,new是用来创建对象的
3.使用功能|属性
引用.功能名字()|属性名字
练习: 自定义小汽车类并测试使用
五、 Arrays 工具类(了解)
static boolean equals(int[] a, int[] a2) 如果两个指定的 int 型数组彼此相等,则返回 true。
static String toString(int[] a) 返回指定数组内容的字符串表示形式。
static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。
static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组的每个元素。
static int binarySearch(int[] a, int key) 使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
static int[] copyOf(int[] original, int newLength)
static int[] copyOfRange(int[] original, int from, int to) 将指定数组的指定范围复制到一个新数组。
static boolean deepEquals(Object[] a1, Object[] a2) 如果两个指定数组彼此是深层相等 的,则返回 true。
static String deepToString(Object[] a) 返回指定数组“深层内容”的字符串表示形式