课堂笔记04.数组(2)、类与对象

数组排序:
    冒泡排序
    选择排序
    插入排序
        将数组分成两部分,将后部分的第一个元素,
                                和前部分的每一个元素进行比较,然后插入到合适的位置
        7,9|3,6,1

    快速排序
        7,9,3,6,1
        1 , 3, 7,6,9 
                6

    归并排序
    希尔排序
    ...

冒泡排序:
    每一轮比较相邻的两个元素,小的在前,大的在后    
int[] arr = {9,7,3,6,1} length(5)

for(int i = 0; i < arr.length -1){
    for(int j = 0; j < arr.length -1 -i ;j ++){

    }
}


第一轮: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


________________________________________
选择排序:
    每一轮都找出最大(最小值),放在数组最后(最前)
int[] arr = {9,7,3,6,1} length(5)

for(int i = 0; i < arr.lenth - 1; i++){
    for(int j = 1; j < arr.length - i; j++){

    }
}


第一轮:9,7,3,6,1 -> 结果: 1,7,3,6,9
    i = 0
    j = 1 ~ 4

    int index = arr[0]

  1: arr[index] 和 arr[1], 
     arr[1] 和 arr[index]
  得出最大值,定义一个变量arr[index] = arr[0]
  2: arr[2] 和 arr[index] 
  得出最大值,arr[index] = arr[0]
  3: arr[3] 和 arr[index]
  得出最大值,arr[index] = arr[0]
  4: arr[4] 和 arr[index] 
  得出最大值,arr[index] = arr[0]

      交换位置: arr[index] 和 arr[length - 1 - i]

第二轮:1,7,3,6,9 -> 结果: 1,6,3,7,9
    i = 0
    j = 1 ~ 3

  1: arr[0] 和 arr[1] 
  得出最大值,arr[index] = arr[1]
  2: arr[2] 和 arr[index] 
  得出最大值,arr[index] = arr[1]
  3: arr[3] 和 arr[index]
  得出最大值,arr[index] = arr[1]

  交换位置: arr[index] 和 arr[length - 1 -i]


第三轮:1,6,3,7,9 -> 结果: 1,3,6,7,9
    i = 0
    j = 1 ~ 2

  1: arr[0] 和 arr[1] 
  得出最大值,arr[index] = arr[1]
  2: arr[2] 和 arr[index] 
  得出最大值,arr[index] = arr[1]

  交换位置: arr[index] 和 arr[length - 1 -i]


第四轮:1,3,6,7,9 -> 结果: 1,3,6,7,9
    i = 0
    j = 1

  1: arr[0] 和 arr[1] 
  得出最大值,arr[index] = arr[1]
  交换位置: arr[index] 和 arr[length - 1 -i]
_________________________________________
复习:

1.变量
     使用前:声明 + 初始化
         声明: 类型 + 变量名

2.类型: 基本数据类型 + 引用数据类型
基本数据类型: 8个
    整型:byte/short/int/long
            -2 ^ 15 ~ 2 ^ 15-1
    浮点:float/double
    布尔:boolean
    字符:char 
        0 ~ 65535

二进制: 
    原码:
    反码:
    补码:

3.运算符:
    逻辑运算符
        &  &&
        |  ||
    算数运算符
    三目运算符
         boolean表达式    ?  true : false
    位运算符
        &: 0 和 1 与上都是0
        |: 0 和 1 或上都是1
        ^: 相同为0,不同为1

    位移运算符
        >>  >>>
    赋值运算符
    比较运算符

4.逻辑控制语句
    顺序
    分支
        if
        if - else 
        if - else if -else

        switch/case

    循环
        for
        while
        do - while

5.数组
    声明 + 初始化

    初始化方式:
        两种静态赋值
        一种动态赋值
            int[] arr = new int[5];

    依次获取数组中的元素 -> 数组的遍历

    数组的属性: length

    数组下标范围: 0 ~ length -1

    数组的扩容 -> 数组的复制
        数组的复制:
            Arrays.copyOf()
            System.arrayCopy()

    数组排序:

6.JVM内存:
    方法区: 类相关的信息
    方法栈: 局部变量/临时变量
    堆: 引用类型的真正数据,对象

    类加载:将类文件中类相关的信息加载到JVM内存中的方法区的过程

7.方法:
    修饰词 + 返回值类型 + 方法名 + 方法参数 + 方法体

    使用方法的目的: 代码的复用
_________________________________________________
面向对象: 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内存中的区别
        局部变量: 在方法栈中,方法结束,方法栈消失,局部变量消失
        成员变量:
            和对象一起,存在堆中

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

命名规范:
    1.变量名:
        a.只能出现: 英文 + 数组 + _ + $
        b.不能以数字开头
        c.可读性要好,第一个单词小写,第二字单词开始首字母大写
    2.包名: 全小写 ,域名倒写
    3.方法名: 小驼峰命名法,第一个单词小写,第二字单词开始首字母大写,可读性要好
    4.类名: 首字母大写
        String Math Scanner Arrays

1.对象内存图

2.方法参数是基本数据类型

 

 3.方法参数是引用数据类型

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值