Java基础day04

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 ~ 4

    int 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 ~ 3

    int 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 ~ 2

    int 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 = 1

    int 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. 类和对象
    1)对象:符合类的特征独立存在的个体(真实存在)

    2)类:所有同种类型的对象所有的特征/行为,抽象出来成为类
    类是不真实存在的.

    例如: 学生类 - 实体类
    学生的特征: 属性/成员变量
    姓名,学号,性别,年龄…
    学生的行为: 成员方法
    吃饭 睡觉 学习

    3)类和对象的关系:
    写java代码的时候: 先有类,才有对象
    从逻辑分析:先有对象,在有类

  2. 类的定义:
    1)分类:
    a. 有实际意义的类 - 实体类
    例如: 人/桌子/学生…

    b. 没有实际意义的类
    作用: 放主方法
    2)定义实体类:
    成员变量
    有默认初始值:
    引用数据类型: null
    基本数据类型: 0

    成员方法
    3)类的使用
    a.创建类的对象 - 在主方法中创建
    b.调用类的成员变量
    对象名(引用名).name
    c.调用类的成员方法
    对象名(引用名).sleep()

    通过 对象名. 来调用

  3. 局部变量和成员变量的区别:
    1)声明位置的区别:
    局部变量: 在方法中声明
    成员变量: 类中声明

    2)初始化的区别:
    局部变量:
    使用前必须初始化
    成员变量:
    可以不用初始化,因为有默认初始值

    3)个数的区别:
    局部变量:
    由声明个数决定,声明多少个局部变量就有多少个
    成员变量:
    由对象决定

    4)在JVM内存中的区别
    局部变量: 在方法栈中,方法结束,方法栈消失,局部变量消失
    成员变量:
    和对象一起,存在堆中

    注意: 类只加载一次,并且是在第一次创建类的对象之前,就已经加载到方法区中.

3.命名规范:

  1. 变量名:
    a.只能出现: 英文 + 数组 + _ + $
    b.不能以数字开头
    c.可读性要好,第一个单词小写,第二字单词开始首字母大写
  2. 包名: 全小写 ,域名倒写
  3. 方法名: 小驼峰命名法,第一个单词小写,第二字单词开始首字母大写,可读性要好
  4. 类名: 首字母大写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值