

一、数组的概述
1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排序的集合,并使用一个名字命名,
并通过编号的方式对这些数据进行统一管理。
2.数组的相关概念:
>数组名
>元素
>角标、下标、索引
>数组的长度:元素的个数
3.数组的特点:
 ①数组是有序排列的
 ②数组属于引用数据类型的变量。数组的元素,即可以是基本数据类型,也可以是引用数据类型
 ③创建数组对象会在内存中开辟一整块连续的空间
 ④数组的长度一旦确定,就不能修改
4.数组的分类:
 ①按照维数:一维数组、二维数组、……多维数组
 ②按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
5.一维数组的使用
 ①一位数组的声明和初始化
 ②如何调用数组的指定位置的元素
 ③如何获取数组的长度
 ④如何遍历数组
 ⑤数组元素的默认初始化值
 ⑥数组的内存解析
**
1.一维数组的声明和初始化
  int[] ids; //声明
  //1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
  ids = new int[]{1001,1002,1003,1004};
正确: ids = {1001,1002,1003,1004};//类型推断<br /> //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行<br /> String[] name = new String[5]; <br /> 总结:数组一旦初始化完成,其长度就确定了。<br /> <br /> 2.如何调用数组的指定位置的元素:通过角标的方式调用。<br /> //数组的角标(或索引)从0开始的,到数组的长度-1结束。<br /> name[0] = "小明";<br /> name[1] = "小王";<br /> name[2] = "小张";<br /> name[3] = "小李";<br /> name[4] = "小黑";
3.如何获取数组的长度。
  //属性:length
       System.out.println(name.legth); //5
4.如何遍历数组
  for(int i = 0;i
  }
5.数组元素默认初始化值
      >数组元素是整型: 0
      >数组元素是浮点型: 0.0
      >数组元素是boolean型: false (false的二进制是0)
       >数组元素是char型: ’0‘(或‘\u0000’)是ascll码
      >数组元素是引用(String)数据类型:null(空值的意思)
   6.数组的内存解析
 **
/
  以下代码是一个人留下的联系方式:
 */
package com.atguigu.java;public class ArrayTest {public static void main(String[] args) {int[] arr = new int[] { 8, 2, 1, 0, 3 };int[] index = new int[] { 2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3 };String tel = "";for (int i = 0; i < index.length; i++) {tel += arr[index[i]];}System.out.println("联系方式:" + tel);}}
/
  从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
  成绩>=最高分-10  等级为‘A’
  成绩>=最高分-20  等级为‘B’
  成绩>=最高分-30  等级为‘C’
  其他                          等级为‘D’
 */
package test2;import java.util.Scanner;public class test2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入学生人数:");int i = scan.nextInt();System.out.println("请输入" +i +"个学生成绩:");//创建数组int[] scores = new int[i];//输入学生的成绩,并赋值给数组int num = 0;for(int j = 0;j<i;j++){num = scan.nextInt();scores[j] = num;}//获取最大成绩int maxScores = 0;for(int j = 0;j<scores.length;j++){if(maxScores<scores[j]){maxScores = scores[j];}}System.out.println("最高成绩为:"+maxScores);//给成绩排等级for(int j = 0;j<scores.length;j++){if(maxScores - scores[j] <=10 ){System.out.println("学生"+(j+1)+",的等级是A");}else if(maxScores - scores[j] <=20){System.out.println("学生"+(j+1)+",的等级是B");}else if(maxScores - scores[j] <=30){System.out.println("学生"+(j+1)+",的等级是C");}elseSystem.out.println("学生"+(j+1)+",的等级是D");}}}
*
*
特加:
数组的复制
 array2 = array1;//假的复制,array2的存储地址依然和array1相同
 array2 = new int[array1.length]}; //真复制
