数组

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);
}
}

二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值