- JAVA基础复习-数组
- 声明数组
- 访问数组元素
- 数组代码实例:
理解:多个相同类型的数据按一定的顺序排列,并使用一个名字命名,通过下标的方式进行管理的集合我们可以表示为数组。(Array)
特点:
- 有序排列的。
- 数组属于引用数据类型,数组中的元素,既可以是基本数据类型也可以是引用数据类型。
- 创建数组对象会在内存空间中开辟出一整块连续的空间。
- 数组长度一旦确定,就不可修改。
声明数组
声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字,下面声明了整型数组a:
int[] a;
不过上面语句,只相当于声明了变量a,并没有将a真正初始化为一个数组,我们需要使用new来对数组进行初始化:
- 动态初始化
int[] a = new int[5]; //初始化了一个容量为5的int型数组a
- 静态初始化
int[] a = new int[]{1,2,3,4,5}; //同样初始化了一个容量为5的int型数组a
上述两种初始化方式,可以看出还是有一点区别的,动态初始化只指明了数组大小,对数组元素没有进行赋值 *** 作,而静态初始化是在数组初始化的基础上再进行了元素赋值。
访问数组元素
数组一旦创建完成,其数组长度大小即为确定的,此时我们可以通过数组下标(数组下标从0开始)开始获取数
中的每一个元素。
在我们初始化数组后,如果没有对数组中的元素进行赋值 *** 作,不同类型的数组之间,元素的初始化值是不同的
例如:数字型数组,所有元素初始化都为0;boolean型数组,所有元素初始化为false;对象数组的元素初始值为null;
//通过for循环对数组进行赋值或输出
int[] a = new int[5];
for(int i = 0; i < a.length; i++){
a[i] = 1; //对数组上不同位置的元素进行赋值 *** 作
System.out.println(a[i]); //输出每一个位置上的元素
}
//举例对象数组
String[] s = new String[10];
//此时数组s里面的元素没有进行赋值 *** 作,元素初始值为null
数组代码实例:
有一个抽彩游戏,从1~100之间抽取6个不同的随机数,抽取出来的6个随机数可获得奖励。
package com.liulin.array;
public class RandomNumber {
public static void main(String[] args) {
//初始化大小为100的数组a
int[] a = new int[100];
int n = a.length;
for (int i = 0; i < n; i++){
//for循环对数组每一个元素进行赋值 *** 作
//[1,2,3,4,5.....99,100]
a[i] = i+1;
}
//初始化大小为6的数组,用来保存抽到的数据
int[] b = new int[6];
for (int i = 0; i < 6; i++){
//Math.random()从[0.0,1.0)随机返回一个数
//此时index范围为[0,100)
int index = (int) (Math.random() * n);
//将随机出来的下标值,带入数组a中
//把此数组下标下的元素赋值给b数组
b[i] = a[index];
//避免抽到重复数据,我们将抽中下标元素的值修改为a数组中最后一个元素的值
a[index] = a[n-1];
//然后对n进行-- *** 作,之后的随机数范围则会避免抽到最后一个元素位置下标
n--;
}
for (int i = 0; i < b.length; i++){
System.out.println(b[i]);
}
}
}
杨辉三角代码实例:
package com.liulin.array;
import java.util.Scanner;
public class NewArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入需要几行的杨辉三角");
int i = scanner.nextInt();
//初始化数组,确定数组一共有几行
int[][] array = new int[i][];
//循环,对每一行进行数组赋值,长度根据行数确定
for (int x = 0; x < array.length; x++){
for (int j = 0; j <= x; j++){
array[x] = new int[j+1];
}
}
for(int x = 0; x < array.length; x++ ){
for (int j = 0; j <= x; j++){
//判断此时位置是否为,开头或结尾
if (j==0 || j==x){
array[x][j] = 1;
}else{
//杨辉三角赋值 *** 作
array[x][j] = array[x-1][j-1] + array[x-1][j];
}
}
}
//增强for循环遍历
for (int[] x:array){
for (int z: x){
System.out.print(z+"\t");
}
System.out.println();
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)