1¥ Java中的数组
数组是一个变量,用于将相同数据类型的数据存储在存储单元中(所有元素必须属于相同的数据类型)
数组的基本结构
1. 数组中存储的数据称为数组元素。
2. 不论元素多少,该数组都只有一个名称,即数组名称。
3. 数组元素在数组里顺序排列编号,首元素编号规定为0,其它元 素顺序编号。 数组元素的编号也称为元素下标。依次为0,1,2,3,4……(n-1)
4. 数组中的每个元素都可以通过下标来访问。
5. 数组的大小(长度)是数组可容纳元素的最大数量,定义一个数 组的同时也定义了它的大小。
6. 数组越界:数组已满但是还继续向数组中存储数据,程序会出错
2¥ 如何使用数组
1)声明数组
语法: 数据类型 数组名[ ]; //声明数组 如: double height[ ]; 或者 数据类型[ ] 数组名; //声明数组 如: int[ ] score;
注意:此种方法声明数组不需要规定数组长度 如: int score[30] //错误!!!!!!!!!!
2)分配空间 声明了数组,只是得到了一个存放数组的变量,并没有为数组元素分配内存空间,还不能使用。
声明数组后,使用new关键字给数组分配空间
语法: 数组名 = new 数组类型[数组长度]; //分配空间 如: int [ ] score; //声明数组 score = new int[30]; //分配空间 double height[ ]; //声明数组 height = new double[30]; //分配空间 String[ ] nam;; //声明数组 name = new String[30]; //分配空间
声明数组的同时给数组分配内存空间
语法: 数据类型[ ] 数组名 = new 数据类型[数组长度];
注意:
一旦声明了数组长度,就不能再修改。
创建了数组,又没有赋初值,此时,必须声明数组的长度
数组整体属于引用数据类型,当你声明了一个数组对象,它也具有方法和属性。
3)赋值
访问数组元素语法: 数组名[下标值];
向声明好的数组中存放数据,如: score[0]=87;
使用循环给数组赋值,如: Scanner input = new Scanner(System.in); for (int i=0; i<30; i++) { score[i] = input.nextInt( );//从控制台接收键盘输入进行循环赋值 }
4)声明数组、分配空间和赋值在同一语句中一并完成的方法:
语法: 数组类型[ ] 数组名 = { 值1,值2,值3,。。。。。。,值n}; 如: int[] score = { 60,70,98,90,76} //创建一个长度为5的数组score或ó: int[] score = new int[] {60,70,98,90,76};//类似于类的实例化
注意:直接创建并赋值得方式一般在数组元素比较少的情况下使用。 而且,方括号中不能有值。 此时,三项工作必须一并完成,分行实现是不合法的。
5)对数据进行处理
获取数组长度
语法: 数组名.length; //使用数组对象的默认属性之一
数组元素默认初值表(无论是成员,还是局部)
定义数组后,若没有指定初值,则依据数据类型不同,给数组元素赋予一个默认值: int 0; double 0.0; char ‘u\0000’; Boolean false;
3¥ 数组应用
使用java.util.Arrays类操作数组 Java中提供的Arrays类可以对数组进行像排序、搜索、比较等常见的基本操作。 Arrays类位于java.util包中。
Arrays类中的方法(此类中的方法均为静态方法,无需对象,直接使用类 名调用)
排序(sort( )):将数组中的元素按照从小到大的升序进行排序
第一步 导入java.util.Arrays包
第二步 调用Arrays的sort方法。
语法: Arrays.sort(数组名)如: import java.util.Arrays; import java.util.Scanner; public class test11111111 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int str[]={9,8,7,6,5,4}; Arrays.sort(str); for(int i=0;i<str.length;i++){ System.out.print(str[i]+" "); } }输出结果为:4 5 6 7 8 9
为什么使用Arrays类中的方法不需创建Arrays类的对象?这是因为Arrays类将它的sort方法定义为静态方法
查询 (binarySearch( )) : int binarySearch(int[], int ch); 对已经进行排序的数组进行二元搜索, 第一元为已经排好序的数组名第二元是要在数组中查找的元素值 如果找到指定的值就返回该值所在的位置(数组元素 的下标),如没有返回 -1 . 如: import java.util.Arrays; import java.util.Scanner; public class test11111111 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int str[]={9,8,7,6,5,4}; Arrays.sort(str); // 必须先排好序 int re=Arrays.binarySearch(str, 5); // 查找数组中 5 的位置 for(int i=0;i<str.length;i++){ System.out.print(str[i]+" "); } System.out.print("\n"+re); } } 输出结果为: 4 5 6 7 8 9 1