1. 数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。a[i]就是数组中下标为i的整数。声明时,需要指出数组类型(紧跟[])和数组变量的名字,如 :
int[] s;//声明整型数组a,声明时不能指定长度,如int s[5]是错误的
这条语句没有将a初始化为一个真正的数组,应该使用new运算符创建数组。
int[] s=new int[5];//创建了一个可以存储5个整数的数组。
下标为0-4.之后可以给数组元素赋值。
int []s=new int[5]; for(int i=0;i<5;i++) s[i]=2*i+1;array.length可以获取数组的大小
本例中,如果试图访问s[5],程序就会引发“array index out of bounds”异常。
数组的初始化
数组定义与为数组元素分配空间和赋值的操作分开进行。
int a[ ]; //定义数组,即声明一个int类型的数组a[]
a=new int[3]; //给数组元素分配内存空间。
a[0]=3; a[1]=9; a[2]=8; //给数组元素赋值。
在定义数组的同时就为数组元素分配空间并赋值。
int a[ ] = { 3, 9, 8}; //在定义数组的同时给数组分配空间并赋值。
数组一旦创建,就不能再改变它的大小(不妨碍改变每一个元素),如果需要在运行过程中扩展数组的大小,就应该使用另一种数据结构--数组列表(array list)。
未赋值,默认初始化为0或者null;
一种功能很强的循环,依次处理数组中每一个元素(其他类型也可以)。
语句格式:for(variable :collection)statement
定义一个变量用于暂存集合中的每一个元素,并执行相应的语句。collection 这一集合表达式必须为一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)。 例如,
for(int element:s) System.out.println(element);//打印数组s的每一个元素,一个一行,即循环数组a中每一个元素(For each element in s),做到了不需要使用下标更加便捷的打印数组方法,System.out.println(Array.toString(a))
如何重新初始化一个数组:
int []a={2,3,4,5,6}; b=a;数组的长度也可以为0(与null不同)
3.数组拷贝
可以将一个数组变量拷贝给另一个数组变量。这两个变量将引用同一个数组:
int[]luckyNumbers=smallPrimes; luckyNumbers[5]=12;//samallPrimes[5]=12如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的CpoyOf方法:
int []copiedLuckyNumbers=Array.copyOf(luckyNumbers,2*luckyNumbers.length);//第二个参数表示增加数组大小如果数组元素是数值型,那么多余的元素被赋值为0.如果是布尔型,那么多出的元素被赋值为false,如果元素长度小于原始长度,那么只拷贝最前面的数据
4.数组排序 使用Array类中的sort方法: int[]a=new int[10000]; .. Array.sort(a)
import java.util.*; import java.math.*; /** * code 随机抽奖 * @author asus * */ public class Test1 { public static void main(String[] args) { Scanner in=new Scanner(System.in); System.out.println("抽多少?"); int k=in.nextInt(); System.out.println("一共多少?"); int n=in.nextInt(); //创建一个数组1,2,3...n int[] numbers=new int[n]; for (int i=0;i<numbers.length;i++) {numbers[i]=i+1;} int[] result=new int[k]; for (int i=0;i<result.length;i++) { //出现0到n-1的随机数 int r = (int) (Math.random()*n); result[i]=numbers[r]; numbers[r]=numbers[n-1]; n--; } System.out.println("恭喜下列号码中奖"); Arrays.sort(result); for(int r:result) System.out.println(r); } }
