数组
-
定义数组
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
-
创建数组
Java语言使用new操作符来创建数组,语法如下:
arrayRefVar = new dataType[arraySize];
-
上面的语法语句做了两件事:
- 一、使用 dataType[arraySize] 创建了一个数组。
- 二、把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
package com.study.array;
import java.util.Scanner;
public class ArrayDemo01 {
//数组
public static void main(String[] args) {
int[] numbers; //1、声明一个数组
numbers = new int[10]; //2、给声明的数组开辟一个能存放10个int型数据的空间
//声明创建一条语句完成
int[] aaa=new int[10];
//3、给数组元素赋值:未赋值会给默认初始值
//数组通过下标访问,下标从0开始
//获取数组长度:数组名.length
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < numbers.length; i++) {
System.out.println("请输入第" +
(i+1)+
"个元素的值:");
numbers[i]= scanner.nextInt();
}
scanner.close();
//计算所有元素的和
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
System.out.println("所有元素的和为:" + sum);
}
}
java内存
声明的时候数组并不存在,只有创建之后才存在。(多数时候将声明与创建一句完成)
package com.study.array;
public class ArrayDemo02 {
public static void main(String[] args) {
//静态初始化
int[] a = {1, 2, 3};
System.out.println(a[0]);
//动态初始化:包含默认初始化
int[] num = new int[10];
num[4] = 88;
System.out.println(num[4]);
//默认初始化
//数组是引用类型,它的元素相当于类的实例变量
// 因此数组已经分配空间,其中每个元素也按照实例变量同样的方式被隐式初始化
int[] b=new int[3];
System.out.println(b[2]);
}
}
package com.study.array;
import java.util.Scanner;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] numbers; //1、声明一个数组
numbers = new int[10]; //2、给声明的数组开辟一个能存放10个int型数据的空间
//声明创建一条语句完成
int[] aaa = new int[10];
//3、给数组元素赋值:未赋值会给默认初始值
//数组通过下标访问,下标从0开始
//获取数组长度:数组名.length
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < numbers.length; i++) {
System.out.println("请输入第" +
(i + 1) +
"个元素的值:");
numbers[i] = scanner.nextInt();
}
scanner.close();
//计算所有元素的和
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
System.out.println("所有元素的和为:" + sum);
//输出元素最大值
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("max="+max);
}
}
遍历数组可以用增强型的for循环
JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
arrays数组的每个元素赋给array,循环赋值并输出array
数组也可以当做方法的参数和返回值。
package com.study.array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5};
System.out.println("打印数组:");
printArrays(arrays);
// //arrays.for:自动生成增强型for循环
// //没有下标
// for (int array : arrays) {
// System.out.println(array);
// }
System.out.println("\n打印反转数组:");
printArrays(reverse(arrays));
}
//打印数组元素
public static void printArrays(int[] arrays) {
for (int array : arrays) {
System.out.print(array + " ");
}
}
//反转数组
public static int[] reverse(int[] arrays) {
int[] result = new int[arrays.length];
for (int i = 0,j=arrays.length-1; i < arrays.length; i++,j--) {
result[i]=arrays[j];
}
return result;
}
}
多维数组
package com.study.array;
public class ArrayDemo05 {
public static void main(String[] args) {
//多维数组:四行两列array
/*
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/
int[][] array={{1,2},{2,3},{3,4},{4,5}};
System.out.println(array.length);
System.out.println(array[0].length);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
//打印一维数组元素
public static void printArrays(int[] arrays) {
for (int array : arrays) {
System.out.print(array + " ");
}
}
}