数组是一种数据结构,用来存储同一类型值且按照一定顺序排列的集合。
声明数组时,需要指出数组的数据类型,基本语法为:数据类型 [] 数组名称。例如:
//声明一个数组名为a的整型数组
int [] a;
但是,上面的定义仅仅是定义了一个数组,并没有真正初始化为一个整型数组。进行数组初始化时,使用关键字:new来完成。
//声明一个整型数组b并进行初始化,其中s为数组的长度
int [] b = new int [s];
特别注意:一旦创建了数组后,长度是无法改变的,若程序在运行的过程中需要经常扩展数组长度,应该使用另一种数据结构:数组列表(array list)。
1. 声明初始化并设定长度
//声明一个整型数组c并进行初始化可以存储100个整数的数组
int [] c = new int [100];
2.创建数组对象并提供初始值
//创建数组d,并提供初始值:1、2、3、4、5
int [] d = {1,2,3,4,5};
值得注意的是:这种方式没有使用new关键字,也不用指定长度,最后的一个值允许有逗号,方便为数组添加值。
3.匿名数组
匿名数组的基本语法为:new 数据类型 [] {初始值}。例如:
//创建一个整型匿名数组且初始值为:a、b、c、d、e
new int []{a,b,c,d,e};
//进一步应用
ss = new int []{1,2,3,4};
//等同于
int [] xx = new int []{1,2,3,4};
ss = xx;
这样的方式,会分配一个新的数组并填入大括号里的值,能自动统计初始值的个数,并设置相应数组的大小。这样的方式能达到重新初始化一个数组无须再创建新的变量的效果。
特别的,如果没有给创建的数组填入元素时,会使用初始默认值:整型数组为0,boolean数组为false,对象数组为null。
package chapter03;
/**
* @ClassName ArrayTest01
* @Description 普通的for循环进行元素的访问
* @Date 2021/3/27 21:33
* @Version 1.0
**/
public class ArrayTest01 {
public static void main(String[] args) {
int [] aa = new int[10];
//利用普通for循环往数组填入元素
//i <10 也可以用aa.length代替
for (int i = 0; i <10 ; i++) {
aa[i]=i;
}
//普通for循环往数组访问元素
for (int i = 0; i <aa.length ; i++) {
System.out.println(aa[i]);
}
}
}
效果图:
基本语法为:for(数据类型 参数: 集合表达式) {}
值得注意的,增强for循环里,集合表达式中必须是一个数组或者是实现了Iterable接口的类对象如(ArrayList),语句中循环变量将会遍历数组中的每个元素,而不是下标值。增强for循环相对于普通的for循环的优点在于:更加简洁、不易出错,不必为下标的起始位置和终止位置而考虑。
package chapter03;
/**
* @ClassName ArrayTest02
* @Description 增强for循环进行元素的访问
* @Date 2021/3/27 21:36
* @Version 1.0
**/
public class ArrayTest02 {
public static void main(String[] args) {
//定义一个名为aa的数组
int [] aa = new int[10];
//利用普通for循环往数组填入元素
for (int i = 0; i <aa.length ; i++) {
aa[i]=i;
}
//增强for循环来访问元素值
for (int ss: aa) {
System.out.println(ss);
}
}
}
效果图:
对于两者的选择上,需要处理集合中的所有元素不考虑下标时,优先选择增强for循环;如果不希望遍历整个数组或者是在循环内部需要下标值时,仍然使用传统的for循环。
在Java中,允许将一个数组变量拷贝到另一个数组变量。这个时候,两个变量将引用同一个数组:
package chapter03;
/**
* @ClassName ArrayCopyTest
* @Description 数组拷贝
* @Date 2021/3/27 22:52
* @Version 1.0
**/
public class ArrayCopyTest {
public static void main(String[] args) {
int [] aa = {1,2,3,4,5};
//把aa数组拷贝到vv中
int [] vv = aa;
vv[4] = 10;
int x = aa[4];
int y = vv[4];
System.out.println("aa[4]的值为:");
System.out.println(x);
System.out.println("----------");
System.out.println("vv[4]的值为:");
System.out.println(y);
System.out.println("----------");
System.out.println("aa数组的元素值为:");
for (int xx: aa
) {
System.out.println(xx);
}
System.out.println("----------");
System.out.println("vv数组的元素值为:");
for (int yy: vv
) {
System.out.println(yy);
}
}
}
效果图:
要想对数值型数组进行排序,可以使用Arrays类中的sort方法:
package chapter03;
import java.util.Arrays;
import java.util.Scanner;
/**
* @ClassName ArrayAsortTest
* @Description 抽彩游戏的随机组合
* @Date 2021/3/27 23:48
* @Version 1.0
**/
public class ArrayAsortTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("您想输入多少个数字?");
int k = sc.nextInt();
System.out.println("输入最高的数字是多少?");
int n = sc.nextInt();
int [] number = new int[n];
for (int i = 0; i < number.length ; i++) {
number[i] = i + 1;
}
int [] result = new int[k];
for (int i = 0; i < result.length; i++) {
int r = (int)(Math.random()*n);
result[i] = number[r];
number[r] = number[n - 1];
n--;
}
//数组的sort方式的调用
Arrays.sort(result);
System.out.println("最后的结果是:");
for ( int r: result
) {
System.out.println(r);
}
}
}
效果图:
原文:https://www.cnblogs.com/lyj-tec-blog/p/14588247.html