java初级第12天总结笔记

来源:互联网 发布:知乎手机客户端打不开 编辑:程序博客网 时间:2024/05/08 18:12
/**
 一、数组
1、数组是什么?
      数组就是一个容器,可以用来装【很多数据元素】,是一种特殊数据类型,引用数据类型。
      容器简单理解:容器就像一个装【冰块】的【冰格】,可以装很多的【冰块】。
      数组就是【冰格】,数组的元素就是【冰块】。
2、为什么需要它?
      之前学的数据类型,基本类型,String,自定义类型都是只能装一个值!!!
有时候我们定义的变量需要装多个数据的时候。
    例如:
    喜欢的食物,喜欢的明星,喜欢的数字,喜欢的运动,拥有的手机,拥有的朋友。这些数据 可以通过数组来存储。

3、数组的定义
        a)数组描述的是统一类型的若【长度固定】干个数据;
        b)数据按照一定的先后次序排列(位置:0到length-1)组合而成。 其中,每一个数据称作一个数组元素。
        
        
    
          数组的特点
          1)数组的元素-》统一类型
          2)数组的长度固定-》创建数组的时候长度就确定了
       数组是引用类型-》存储数据靠数组对象
      
      创建数组对象两种方式
      1)静态初始化创建对象:(a)知道数组长度b)知道数组内容)创建数组对象的时候,同时把数组内容放入到数组中。
      定义引用  指向      静态初始化创建对象
      语法:
          数组元素的类型 [] 引用变量名= new 数组元素的类型 []{元素值1,元素值2...};
      
      2)动态初始化创建对象        
动态初始化创建对象:a)只知道数组长度
      
      定义引用  指向      动态初始化创建对象
      语法:
          数组元素的类型 [] 引用变量名= new 数组元素的类型 [数组长度];
      
      注意点
      1)动态初始化后数组元素都有默认值-》规则和成员变量一致。
      怎么操作访问的数组的内容
          
          1)访问数组的元素:通过绑定的下标访问
          下标范围:0到len-1
              
            a)拿到数组指定位置的元素值:
                  语法:元素类型  接受元素值的变量=  数组引用[下标];
            b)往数组指定位置设置元素值:
                  语法:数组引用[下标]=元素值;
          2)访问数组的长度
              语法:数组引用.length属性;注意点:字符串中是length()方法
        
        
          3)数组遍历-访问数组的所有的元素--》for循环
          
          for(int idx=0;idx<=数组引用.length-1;idx++){
                  //得到当前元素
                  数组类型  变量= 数组引用[idx];
 二、数组的特点
    
    1)统一类型:存储的数组元素是统一的类型,可以类型兼容,自动类型转换
           a)基本类型:     小数据范围类型    转    大数据范围类型
           b)引用类型:     子类型    转    超类型
    2)长度固定:创建数组对象的时候,长度就设置好了以后不能改变
    3)数组下标-范围(0到len-1)-》访问的时候不能越界
     --》否则报错ArrayIndexOutOfBoundsException
    4)内存连续:数组底层内存区域是连续的,访问(读取和设置效率 高)
    5)存储在堆中:引用类型,每一个数组都是对象存储在堆中
    6)数组的元素类型是引用类型,那么数组所有元素位置存储的是对象地址
    7)数组的超类型指向子类型
    满足:数组引用的数组元素的类型  是数组对象 的数组元素的类型的超类型
    8)Object也是数组的超类型
三、冒泡排序:
          核心逻辑:
    1)每一趟确定一个数位置
    2)n个数需要(n-1)趟(每一趟确定一个数准确位置)
    3)每一趟需要进行(n-i(第几趟))次比较(每一次比较,确定比较的两个数的位置)
    4)前面和后面两个数的位置,升序和降序,从小到大(升序)就把大的放后面,反之(降序)把小的放后面。
四、二分法查找
        
             核心逻辑:
  1)先对容器的元素进行升序排列
  2)遍历容器 进行搜索元素,假设搜索的元素就在中间的位置
  3)把中间位置的元素与我们要找的元素进行比较,改变我们的开始和结束的查找位置    
              a) 中间位置大:结束位置设置为中间位置-1
              b)中间位置小:开始位置设置为中间位置+1
              c)相等:找到了,返回中间的下标   
五、二维数组
      二维数组动态初始化
      
      定义二维数组引用变量    指向        动态初始化的二维数组
      语法1:提供(行长度-二维数组的长度,列长度-二维数组的元素(一维数组)的长度)
      一维数组元素的类型[][] 二维数组名=new 一维数组元素的类型[行长度][列长度];
      
      注意点:
      a)二维数组的元素一维数组的元素-都有默认值-规则和成员变量一致。
      b)表格里每一个单元格都有默认值-规则和成员变量一致。
      
      语法2::提供(行长度-二维数组的长度)
      一维数组元素的类型[][] 二维数组名=new 一维数组元素的类型[行长度][];
      
      注意点:
      a)二维数组的元素-》都是默认存储的是null-(没有提供列长度不能创建一维数组)
      
      
      二维数组的访问
      
      1) 二维数组的长度
              二维数组名.length
      2)二维数组的元素(一维数组)
                二维数组名[二维数组下标(第几行)]    
      3)二维数组的元素(一维数组)的长度
               二维数组名[二维数组下标(第几行)].length
      4)二维数组的元素(一维数组)的元素
           二维数组名[二维数组下标(第几行)][一维数组下标(第几列)]
       二维数组静态初始化
      
      定义二维数组引用变量    指向        静态初始化的二维数组
      语法1:
      一维数组元素的类型[][] 二维数组名=new 一维数组元素的类型[][]{
              {一维数组元素1,一维数组元素2...},//二维数组的第一个元素-》一维数组
              {一维数组元素1,一维数组元素2...}//二维数组的第二个元素-》一维数组
      ...
      };
      语法2:
      一维数组元素的类型[][] 二维数组名=new 一维数组元素的类型[][]{
              {1行1列,1行2列...},//第1行
              {2行1列,2行2列...}//第2行
0 0