一、数组的概述
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");
}else
System.out.println("学生"+(j+1)+",的等级是D");
}
}
}
*
*
特加:
数组的复制
array2 = array1;//假的复制,array2的存储地址依然和array1相同
array2 = new int[array1.length]}; //真复制