Java基础day04
1.数组排序:
冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序
-
冒泡排序:
每一轮比较相邻的两个元素,小的在前,大的在后
第一轮:9,7,3,6,1 -> i = 0
arr[j] > arr[j + 1]1: 7,9,3,6,1 -> j =0 arr[0] 和 arr[1]
2: 7,3,9,6,1 -> j =1 arr[1] 和 arr[2]
3: 7,3,6,9,1 -> j =2 arr[2] 和 arr[3]
4: 7,3,6,1,9 -> j =3 arr[3] 和 arr[4]第二轮:7,3,6,1,9 i = 1
1: 3,7,6,1,9 -> j =0
2: 3,6,7,1,9 -> j =1
3: 3,6,1,7,9 -> j =2第三轮:3,6,1,7,9 i = 2
1: 3,6,1,7,9 -> j =0
2: 3,1,6,7,9 -> j =1第四轮:3,1,6,7,9 i = 3
1: 1,3,6,7,9 -> j =0
for (int i = 0; i <arr.length-1 ; i++) { for (int j = 0; j <arr.length-1-i ; j++) { if (arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
-
选择排序:
每一轮都找出最大(最小值),放在数组最后(最前)第一轮:9,7,3,6,1 -> 结果: 1,7,3,6,9
i = 0
j = 1 ~ 4int index = 0
1: arr[index] 和 arr[1],
arr[1] 和 arr[index]
得出最大值,index=0
2: arr[2] 和 arr[index]
得出最大值,index=0
3: arr[3] 和 arr[index]
得出最大值,index=0
4: arr[4] 和 arr[index]
得出最大值,index=0交换位置: arr[index] 和 arr[length - 1 - 0]
第二轮:1,7,3,6,9 -> 结果: 1,6,3,7,9
i = 1
j = 1 ~ 3int index = 0
1: arr[0] 和 arr[1]
得出最大值,index=1
2: arr[2] 和 arr[index]
得出最大值,index=1
3: arr[3] 和 arr[index]
得出最大值,index=1交换位置: arr[index] 和 arr[length - 1 -1]
第三轮:1,6,3,7,9 -> 结果: 1,3,6,7,9
i = 2
j = 1 ~ 2int index = 0
1: arr[0] 和 arr[1]
得出最大值,index=1
2: arr[2] 和 arr[index]
得出最大值,index=1交换位置: arr[index] 和 arr[length - 1 -2]
第四轮:1,3,6,7,9 -> 结果: 1,3,6,7,9
i = 3
j = 1int index = 0
1: arr[0] 和 arr[1]
得出最大值,index=1
交换位置: arr[index] 和 arr[length - 1 -3]//选择排序 for (int i = 0; i <arr.length-1 ; i++) { int index=0; for (int j = 0; j <arr.length-i ; j++) { if (arr[index]<arr[j]) index=j; } int temp=arr[index]; arr[index]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; }
2.面向对象: OOP
java -> 一切皆对象
-
类和对象
1)对象:符合类的特征独立存在的个体(真实存在)2)类:所有同种类型的对象所有的特征/行为,抽象出来成为类
类是不真实存在的.例如: 学生类 - 实体类
学生的特征: 属性/成员变量
姓名,学号,性别,年龄…
学生的行为: 成员方法
吃饭 睡觉 学习3)类和对象的关系:
写java代码的时候: 先有类,才有对象
从逻辑分析:先有对象,在有类 -
类的定义:
1)分类:
a. 有实际意义的类 - 实体类
例如: 人/桌子/学生…b. 没有实际意义的类
作用: 放主方法
2)定义实体类:
成员变量
有默认初始值:
引用数据类型: null
基本数据类型: 0成员方法
3)类的使用
a.创建类的对象 - 在主方法中创建
b.调用类的成员变量
对象名(引用名).name
c.调用类的成员方法
对象名(引用名).sleep()通过 对象名. 来调用
-
局部变量和成员变量的区别:
1)声明位置的区别:
局部变量: 在方法中声明
成员变量: 类中声明2)初始化的区别:
局部变量:
使用前必须初始化
成员变量:
可以不用初始化,因为有默认初始值3)个数的区别:
局部变量:
由声明个数决定,声明多少个局部变量就有多少个
成员变量:
由对象决定4)在JVM内存中的区别
局部变量: 在方法栈中,方法结束,方法栈消失,局部变量消失
成员变量:
和对象一起,存在堆中注意: 类只加载一次,并且是在第一次创建类的对象之前,就已经加载到方法区中.
3.命名规范:
- 变量名:
a.只能出现: 英文 + 数组 + _ + $
b.不能以数字开头
c.可读性要好,第一个单词小写,第二字单词开始首字母大写 - 包名: 全小写 ,域名倒写
- 方法名: 小驼峰命名法,第一个单词小写,第二字单词开始首字母大写,可读性要好
- 类名: 首字母大写