数组排序
冒泡排序:每一轮比较相邻的两个元素,小的在前,大的在后
public static void mp(int[] arr) {
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 t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
选择排序:
(1)将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素
(2)循环第 1 条规则,找出最小元素,放于第 1个位置
(3)经过 n-1轮比较完成排序
public static void select(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
int index = 0;
for(int j=1;j<arr.length-i;j++) {
if(arr[j]>arr[index]) {
index = j;
}
}
int temp =arr[index];
arr[index]=arr[arr.length-i-1];
arr[arr.length-i-1]=temp;
}
}
插入排序:将数组分成两部分,将后部分的第一个元素,和前部分的每一个元素进行比较,然后插入到合适的位置
public static void insert(int[] arr) {
int t,j;
for(int i=1;i<arr.length;i++){
t=arr[i];
for(j=i-1;j>=0;j--){
if(t<arr[j]){
arr[j+1]=arr[j];
}else{break;}
}
arr[j+1]=t;
}
}
快速排序
归并排序
希尔排序
...
面向对象
类和对象
1)对象:符合类的特征独立存在的个体
真实存在
2)类:所有同种类型的对象所有的特征/行为,抽象出来成为类
类是不真实存在的.
例如: 学生类 - 实体类
学生的特征: 属性/成员变量
姓名,学号,性别,年龄...
学生的行为: 成员方法
吃饭 睡觉 学习
3)类和对象的关系:
写java代码的时候: 先有类,才有对象
从逻辑分析:先有对象,在有类
类的定义
定义格式
public class Student {
// 成员变量
String name; // 姓名
int age; // 年龄
// 成员⽅法
// 学习的⽅法
publicvoid study() {
System.out.println("好好学习,天天向上");
}
// 吃饭的⽅法
publicvoid eat() {
System.out.println("学习饿了要吃饭");
}
}
对象的使⽤
public class Test01_Student {
public static void main(String[] args) {
// 创建对象格式:类名 对象名 = new 类名();
Student s = new Student();
System.out.println(" s: " + s); // com.bonnie.Student@100363
// 直接输出成员变量值
System.out.println("姓名:" + s.name); // null
System.out.println("年龄:" + s.age); // 0
System.out.println("----------");
// 给成员变量赋值
s.name = "赵丽颖";
s.age = 18;
// 再次输出成员变量的值
System.out.println("姓名:" + s.name); // 赵丽颖
System.out.println("年龄:" + s.age); // 18
System.out.println("----------");
// 调⽤成员⽅法
s.study(); // "好好学习,天天向上"
s.eat(); // "学习饿了要吃饭"
}
}
有默认初始值:
引用数据类型: null
基本数据类型: 0
对象内存图
局部变量和成员变量的区别:
1)声明位置的区别:
局部变量: 在方法中声明
成员变量: 类中声明
2)初始化的区别:
局部变量:
使用前必须初始化
成员变量:
可以不用初始化,因为有默认初始值
3)个数的区别:
局部变量:
由声明个数决定,声明多少个局部变量就有多少个
成员变量:
由对象决定
4)在JVM内存中的区别
局部变量: 在方法栈中,方法结束,方法栈消失,局部变量消失
成员变量:
和对象一起,存在堆中
注意: 类只加载一次,并且是在第一次创建类的对象之前,就已经加载到方法区中.
命名规范:
1.变量名:
a.只能出现: 英文 + 数组 + _ + $
b.不能以数字开头
c.可读性要好,第一个单词小写,第二字单词开始首字母大写
2.包名: 全小写 ,域名倒写
3.方法名: 小驼峰命名法,第一个单词小写,第二字单词开始首字母大写,可读性要好
4.类名: 首字母大写