数组

xiaoxiao2021-02-28  48

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”异常。

数组的初始化

1.动态初始化

数组定义与为数组元素分配空间和赋值的操作分开进行

int a[ ]; //定义数组,即声明一个int类型的数组a[]

 a=new int[3]; //给数组元素分配内存空间。 

a[0]=3; a[1]=9; a[2]=8; //给数组元素赋值。

2.静态初始化

在定义数组的同时就为数组元素分配空间并赋值。

int a[ ] = { 3, 9, 8}; //在定义数组的同时给数组分配空间并赋值。

数组一旦创建,就不能再改变它的大小(不妨碍改变每一个元素),如果需要在运行过程中扩展数组的大小,就应该使用另一种数据结构--数组列表(array list)。

未赋值,默认初始化为0或者null;

 

 

For each循环

一种功能很强的循环,依次处理数组中每一个元素(其他类型也可以)。

语句格式: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); } }

二维数组

转载请注明原文地址: https://www.6miu.com/read-2630241.html

最新回复(0)