zoukankan      html  css  js  c++  java
  • 1-Java基础回顾整理_06_数组

    1、数组介绍

      数组其实就是相同类型的有序集合。(关键字:相同类型、有序、集合)

      它有两种写法:

        1)int[] arrays:Java的默认写法,推荐首选

        2)int arrays[]:这个其实是C、C++的语法,只是早期为了让C、C++的程序员快速的熟悉Java语言才有了这种写法,不推荐使用。

    2、Java内存分析

      Java的内存分为:堆、栈、方法区

        堆:是用来存放new出来的对象和数组;它可以被所有的线程共享,不会存放其他的对象引用;

        栈:用来存放基本变量类型(会包含这个变量的具体值);存放引用对象的变量(会存放这个引用对象在堆里面的具体地址)

        方法区:可以被所有线程共享;包含了所有的class(类)和static变量;

    3、数组的默认值

      当数组被创建出来后,其实是有默认值的,默认值为0;  如:int[] arr = new int[10];  默认里面的元素都为0

    4、数组的特点

      1)长度确定,数组一旦被创建出来,那么它的长度大小是不能改变的;

      2)数组中的所有元素数组类型都是相同的,(不然的话是无法进行存储的),有序的(有下标索引,存的时候按什么顺序存,就是什么样)

      3)数组中元素的类型可以使任意的,包括基本数据类型和引用数据类型,但是必须保持一致;

      4)数组整体可以看做一个变量,它本身是一个对象,数组中的每个元素相当于该对象本身的局部变量,因此不管它里面存的什么样类型的数据元素,数据对象本身都是在堆中的;

    5、数组下标

      数组下标的合法区间:[0,length - 1],若下标越界,则会报数据下标越界异常:ArrayIndexOutofBoundException;

    6、数组的遍历

      数组的遍历有两种方式:普通for循环、增强for循环

      实现数组的遍历反转输出所有元素:自己写一个反转的方法

        public static int[] reverse(int[] array){

          int[] result = new int[array.length];

          for(int i = 0, j = array.length; i < array.length; i ++, j --){

            result[ j ] = array[ i ];

          }

          return result;

        }

    7、Arrays工具类

      首先通过查看源码,我发现Atrrays工具类里面的方法都是有static修饰符的,所以它才可以直接通过类名.方法名()来进行调用,不需要通过创建对象的方式来调用方法;

      Arrays工具类常用的功能方法:

        1)给数组赋值:file(),如果里面不添加任何条件,使用此方法后会默认进行全部填充和替换,默认元素为0;可以通过制定开始下标,结尾下标,填充元素来自定义填充;

        2)数组排序:sort(),给数组里面的元素进行排序操作,升序排列;

        3)数组比较:equals(),比较数组里面的元素是否相等;

        4)查找数组元素:binarySearch(),对排序好的数组进行二分查找操作;

    8、冒泡排序

      一共有8中排序,主要是在数据结构中涉及,包括:直接插入排序、希尔排序、直接选择排序、快速排序、堆排序、冒泡排序、归并排序、基数排序 8种

      冒泡排序的本质:

        有2层循环,外层循环冒泡的轮数,内层用来依次进行元素的大小比较

        如:public int[] numSort(int[] array){

            int temp = 0;

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

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

                if(array[j + 1] < array[j]){

                  temp = array[j + 1];

                  array[j + 1] = array[j];

                  array[j] = temp;

                }

              }

            }

            return array;

          }

          main(){

            int[] arrays = {1,3,2,17,19,13,15,47,89,53};

            numSort(arrays).sout;

          }

      冒泡排序的优化:因为我们发现,即使当传入的数组是有序的,还是依然会进行比较排序操作; 

          public int[] numSort(int[] array){

            int temp = 0;

            boolean flag = false;

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

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

                if(array[j + 1] < array[j]){

                  temp = array[j + 1];

                  array[j + 1] = array[j];

                  array[j] = temp;

                  flag = true;

                }

              }

            }

            if(flag = false){

              break;

            }

            return array;

          }

    9、稀疏数组

      它是一种数据结构,本质是一个二维数组,因为它的里面要用来存放值;

      介绍:

        1)当一个二维数组中的大部分元素为0,或者为同一值时,可以使用稀疏数组来保存数组(起到一定的压缩作用)

        2)处理方式:

          ①记录数组中有几行、几列、多少个不同的值;

          ②把具有不同值元素的行、列及对应的值记录在一个小规模的数组中,从而缩小程序的规模,达到压缩的作用。

  • 相关阅读:
    筛选法求素数
    正整数N是否是素数
    前N个自然数的随机置换
    【数据结构与算法分析——C语言描述】第二章总结 算法分析
    【数据结构与算法分析——C语言描述】第一章总结 引论
    递归打印头文件
    选择符
    选择器
    认识CSS样式
    表单-续
  • 原文地址:https://www.cnblogs.com/hand-blog/p/13097282.html
Copyright © 2011-2022 走看看