zoukankan      html  css  js  c++  java
  • 数组

    通常什么情况下使用数组?
    当存储相同数据类型的一组数据的时候使用数组


    为什么需要数组?
    当同一数据类型的变量过多时,会造成变量繁琐,不利于数据处理
    所以需要数组来将同一数据类型的变量放在一块存储空间内

    什么是数组?
    数组是相同数据类型元素的集合
    数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。
    数组是一种线性数据结构

    数组是一个变量,存储相同数据类型的一组数据

    声明一个变量就是在内存空间划出一块合适的空间
    声明一个数组就是在内存空间划出一串连续的空间


    数组基本要素
    标识符:数组的名称,用于区分不同的数组
    数组元素:向数组中存放的数据
    元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
    元素类型:数组元素的数据类型


    数组长度固定不变,避免数组越界


    使用数组的好处
    同时开辟多个空间,语句更加简洁,且提高效率
    分类存储,而且数据中的空间都是连续的,所以查找比较方便
    数组的最大好处就是能都给存储进来的元素自动进行编号.
    注意编号是从0开始。方便操作这些数据。


    如何定义一个int数组?
    int[]a;


    如何使用数组?
    声明数组:int[]a; int[]a;
    分配空间:a=new int[5];
    赋值:a[0]=8;
    处理数据:a[0]=a[0]*10;

    声明数组:告诉计算机数据类型是什么
    int[ ] score1; //Java成绩
    int score2[ ]; //C#成绩
    String[ ] name; //学生姓名
    数据类型 数组名[ ] ;
    数据类型[ ] 数组名 ;

    分配空间: 告诉计算机分配几个连续的空间
    score = new int[30];
    avgAge = new int[6];
    name = new String[30];
    数据类型[ ] 数组名 = new 数据类型[大小] ;

    赋值:向分配的格子里放数据
    score[0] = 89;
    score[1] = 79;
    score[2] = 76;
    ……

    方法1: 边声明边赋值
    int[ ] score = {89, 79, 76};
    int[ ] score = new int[ ]{89, 79, 76};
    不能指定数组长度
    方法2:动态地从键盘录入信息并赋值
    Scanner input = new Scanner(System.in);
    for(int i = 0; i < 30; i ++){
    score[i] = input.nextInt();
    }

    处理数据
    对数据进行处理:计算5位学生的平均分
    (使用聚合函数进行计算)

    常见错误:编译出错,没有写明数组的大小
    编译出错,数组越界
    编译出错,创建数组并赋值的方式必须在一条语句中完成


    怎样引用一个数组中的元素?(如何获得数组中指定位置的元素值?)
    通过数组下标进行数组元素的引用
    eg:a(10)
    其中10为数组下标

    数组元素的访问:
    数组名字[索引] 例如:a[0],a[1];
    注意:
    1.数组的索引从0开始。
    2.索引的数据类型是整型
    3.索引最大值和数组长度始终差1

    数组使用三步骤
    数组的创建
    数组的创建有三步:
    1 、定义“类型 [] ” :指定数组里保存的值都是什么类型的
    2 、定义大小 :指定数组只能保存多少个元素
    3 、填充元素:每个元素的值是什么

    数组创建的三种方式:
    1.声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
    int[] ary0 = new int[10];
    2.声明数组并分配内存,同时将其初始化
    int[] ary1 = new int[]{1, 2, 3, 4, 5};
    3.与前一种方式相同,仅仅只是语法相对简略
    int[] ary2 = {1, 2, 3, 4, 5};

    一、定义类型 :
    变量的定义大家都知道:类型 变量名
    数组的定义也是很简单:类型 [] 变量名
    就是在变量的定义以后,在类型后加一“ [] ”即可。
    也可以这样定义:“类型 变量名 [] ”,但显示不直观。因为只看类型时,并不能一目也然地看到这是一个数组。
    示例:
    int[] age :定义一个 int 类型的 age 数组
    Student[] allStu :定义一个 Student 类型数组
    二、定义大小 (2/3):
    类型 数组名称 = new 类型 [ 大小 ];
    或者在“数组名称”创建以后,也可以这样:
    数组名称 = new 类型 [ 大小 ];
    示例:
    int[] age = new age[5] : age 数组中只能保存 5 个元素
    int[] age ;
    age = new age[5]
    Student stu = new Student[3];

    三、填充元素
    一次性填充:
    age = {10,11,12,13,14,15};
    allStu = {stu1,stu2,stu3}
    逐个填充:
    age[0] = 10; age[1]=20;
    allStu[0]= new Student( );allStu[1] = new Student( );

    数组使用要点:
    两个下标的区别
    类型名称 [5] :表示该数组的元素一共有 5 个。如: age = new int[5]
    数组名称 [5] :表示该数组的第 6 个元素。如: age[5]
    数组的循环
    普通的 for 循环即可:
    for(int i=0,i<age.length;i++){ …… }
    什么时候用数组
    同一个类型的变量有很多个时,而且对每个变量的处理方法相同,
    这个时候就要用数组。
    一维数组最常用。
    二维数组使用的关键是:类型 [R][C] 。 R 代表行号, C 代表列号。


    陷井提醒:数组 [ 数字 ] :数组的第一个元素为“数组 [0] ”。
    所以数组元素的是这样数的:第 0 个、第 1 个……。而创建数组“ new 类型 [5] ”,
    表示的是该数组一共有 5 个元素,不要混淆了。

    如何为数组元素赋值?
    a [0] = 8;


    Arrays的使用

    遍历: toString()    将数组的元素以字符串的形式返回

    排序: sort()        将数组按照升序排列

    查找: binarySearch()在指定数组中查找指定元素,返回元素的索引,
    如果没有找到返回(-插入点-1) 注意:使用查找的功能的时候,数组一定要先排序。


    数组排序:
    使用java.util.Arrays类
    java.util包提供了许多工具类
    Arrays类提供操作数组的方法
    如排序、查询
    Arrays类的sort()方法:对数组进行升序排列
    Arrays.sort(数组名);

    eg:
    import java.util.*; //导入包
    ……
    int[] scores = new int[5]; //成绩数组
    Scanner input = new Scanner(System.in);
    System.out.println("请输入5位学员的成绩:");
    for(int i = 0; i < scores.length; i++){
    scores[i] = input.nextInt();
    }

    Arrays.sort(scores);
    System.out.print("学员成绩按升序排列:");
    for(int i = 0; i < scores.length; i++){
    System.out.print(scores[i] + " ");
    }


    数组遍历:
    public static void main(String[] args) {

    int[] x = { 1, 2, 3 };

    for (int y = 0; y < 3; y++) {

    System.out.println(x[y]);

    // System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

    } // 那么这就是数组的第一个常见操作.遍历

    }

    数组中有一个属性可以获取到数组中元素的个数,也就是数组的长度. 数组名.length


    public static void main(String[] args) {

    int[] x = { 1, 2, 3 };

    for (int y = 0; y < x.length; y++) {

    System.out.println(x[y]);

    // System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

    } // 那么这就是数组的第一个常见操作.遍历

    }


    数组迭代的两种方式:
    第一种:for循环
    第二种:增强for循环


    数组的常见异常
    数组中最常见的问题:

    1. NullPointerException 空指针异常
    原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。


    2. ArrayIndexOutOfBoundsException 索引值越界。
    原因:访问了不存在的索引值。

    一数组角标越界异常:,注意:数组的角标从0开始。

    二维数组:实质就是存储是一维数组。

    数组定义:
    数组类型[][] 数组名 = new 数组类型[一维数组的个数][每一个一维数组中元素的个数];

    数组的初始化:
    静态初始化:
    int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
    动态初始化:(数组迭代)
    int [] [] a=new int [3] [4]; //3*4=12
    for (int i =0; i<a.lenght; i++){
    for (int j=0;j<a[i].lenght; j++){
    a[i] [j]=++value; //a[1][0]=4
    }
    }

    数组创建
    int [][]a = new int[][]{{1,2,3},{1,2,3},{1,2,3}};
    int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
    int [][] c = new int[3][5];
    int[][] arr = new int[3][5];—定义了一个整型的二维数组 ,这个二维数组有3个一维数组,每一个一维数组包含5个元素.

  • 相关阅读:
    react native打包后不能请求到数据
    webpack学习记录
    RN 与 Native (Android) 之间的通信
    linux常用指令--防火墙
    制作nodejs项目镜像,实现docker下的快速部署
    centos7+ docker1.12 实践部署docker及配置direct_lvm
    C# mvc中动态压缩文件发送给前端
    [转载] 全方位提升网站打开速度:前端、后端、新的技术
    Android Listview 去除边框
    SSH初体验系列--Hibernate--3--单值与分页查询
  • 原文地址:https://www.cnblogs.com/zjx-959/p/14599931.html
Copyright © 2011-2022 走看看