zoukankan      html  css  js  c++  java
  • Java——数组


    数组简介:

    • 数组是一组变量集合,存储相同数据类型的一组数据。 连续的空间。
    • 声明一个变量就是在内存空间划出一块合适的空间。
    • 声明一个数组就是在内存空间划出一块连续的空间。
    • 数组名,即标识符,连续空间的首地址。 —数组只有一个名字。
    • 元素下标标明了元素在数组中的位置,从0开始。
    • 数组中的每个元素都可以通过下标来访问。
    • 数组长度固定不变,避免数组越界。

    如何使用数组?

    使用数组四步走:

    • 1.声明数组 int [ ]a; —告诉计算机数据类型是什么?
      声明的数组变量: —声明数组的时候不告诉长度。
      dataType[] arrayRefVar; // 首选的方法 或者 dataType arrayRefVar[]; // 效果相同,但不是首选方法
      eg:double[] myList; // 首选的方法

    • 2.分配空间 a = new int[5]; —告诉计算机分配几个连续的空间。

    • 3.赋值 a[0] = 8; —向分配的格子里放数据
    • 4.处理数据 a[0] = a[0] * 8;

    数组赋值:

    • 方法一:边声明边赋值
      int[] score = {89,79,76};
      int[] score = new int[]{89,79,76}; //不能指定数组长度
    • 方法二:使用循环
      for(int i=0;i<30;i++){
      score[i]=input.nextInt();
      }

    数组的创建:

      数组创建的格式是:
      数据类型[ ]   数组名称=new 数据类型[ 数组的长度 ]   
      数据类型[ ]   数组名称={元素1,元素2...}
    
    • Java语言使用new操作符来创建数组。

    语法:arrayRefVar = new dataType[arraySize];

    • 1:使用dataType[arraySize]创建了一个数组。
    • 2:把新创建的数组的引用赋值给变量 arrayRefVar。
     数组变量的声明,和创建数组可以用一条语句完成,如下所示:
     dataType[] arrayRefVar = new dataType[arraySize];
     还可以使用如下的方式创建数组。
     dataType [] arratRefVar = {value0,value1,...,valuek};
     数组的元素是通过索引访问的。数组索引从0开始,所以索引值从0到arrayRefVar.length-1。
    

    处理数组(数组的遍历):

     当处理数组元素时候,我们通常使用基本循环或者foreach循环。
    

    foreach循环:

    foreach循环又称加强型循环,能在不使用下标的情况下遍历数组。
    显示数组myList中的所有元素:
    double[] myList = { 1,2,3,4,5,2,1};
    for(double element:myList){
    System.out.println(element); //打印所有数组元素
    }
    ~~~~~~~~~~~
    实例:*从第一个开始遍历到最后一个,不能控制范围。

     for(int score:scores){
        //第一个score是每一次遍历到的元素
        //第一个表达式是声明一个变量去接受每次循环得到的元素
        //第二个scores是要遍历的对象
        //第二个表达式是需要变量的数组或集合
        //定义的变量类型必须跟数组的类型一致(表达式一的数据类型必须跟表达式二的数据类型一致)
        System.out.println(score);
        }

    数组作为函数的参数:

      数组可以作为参数传递给方法。
      eg:打印int数组中元素的方法。
    
      for(int i=0;j<array.length;i++){
      System.out.println(array[i]+" ");
      }
    

    数组作为函数的返回值:

    public static int[] reverse(int[] list) {
      int[] result = new int[list.length];
    
      for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
        result[j] = list[i];
      }
      return result;
    }

    result数组作为函数的返回值。


    Arrays类:

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
    给数组赋值:通过fill方法。

    对数组排序:通过sort方法,按升序。

    比较数组:通过equals方法比较数组中元素之是否相等。

    查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。


    多维数组:

    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
    String str[][] = new String[3][4];

    多维数组的动态初始化(以二维数组为例):
    1.直接为每一维数组分配空间:

        type arrayName = new typ[arraylenght1][arraylenght2];
       type 可以为基本数据类型和复合数据类型,arraylenght1 和 arraylenght2 必须为正整数,arraylenght1 为行数,arraylenght2 为列数。
              例如:`int a[][] = new int[2][3];`
    

    2. 从最高维开始,分别为每一维分配空间,例如:

        String s[][] = new String[2][];
           s[0] = new String[2];
           s[1] = new String[3];
           s[0][0] = new String("Good");
           s[0][1] = new String("Luck");
           s[1][0] = new String("to");
           s[1][1] = new String("you");
           s[1][2] = new String("!");

    解析:s[0]=new String[2] 和 s[1]=new String[3] 是为最高维分配引用空间,也就是为最高维限制其能保存数据的最长的长度,然后再为其每个数组元素单独分配空间 s0=new String(“Good”) 等操作。

    多维数组的引用(以二维数组为例)
    对二维数组中的每个元素,引用方式为 arrayName[index1][index2],例如:
    num[1][0];


    ArrayList类:

    数组的长度不固定时,需要通过List来实现不固定长度的数组操作。

    List是一个无限制长度的数组接口,ArrayList类和LinkedList类实现了接口来满足数组无限长度的需求。

    二者的区别是:ArrayList方便获取指定位置的值,但是不方便修改指定位置的值;LinkedList类方便修改指定位置的值,不方便获取指定位置的值。

    ArrayList类实现了Serializable, Cloneable, Iterable, Collection, List, RandomAccess等接口。可以用于保存不限长度的数组元素,

    ArrayList常用的方法有:add、clear、contains、get、isEmpty、remove、size等。
    add(参数):将指定的元素添加到此列表的尾部。
    clear():移除此列表中的所有元素。
    contains(参数):如果此列表中包含指定的元素,则返回 true。
    get(参数):返回此列表中指定位置上的元素。
    isEmpty():如果此列表中没有元素,则返回 true。
    remove(参数):移除此列表中指定位置上的元素。
    size():返回此列表中的元素数。
    
  • 相关阅读:
    将中文字符串分割为数组 解决str_split中文乱码php
    %25%37%DD 。。。上述形式不是乱码。 这是urlencoding。 你可以使用js内置的方法 encodeURIComponent进行编码, 而使用decodeURIComponent把上述形式再解码为普通字符
    浏览器 cookie session
    javascript:void(0)与#区别
    $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)
    HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
    HBuilder的默认工作空间的修改
    Spring和Mybatis的整合
    嵌套查询--------关联一对多关系----------collection
    InputStream和OutputStream的一遍博客 分析非常到位
  • 原文地址:https://www.cnblogs.com/aixing/p/13327747.html
Copyright © 2011-2022 走看看