数组
即相同类型的数据有序集合
首先必须声明数组变量,才能在程序中使用,下面是声明数组变量的语法:
dataType[] arrayRefVar;//首选方法
dataType arrayRefVar[];//非首选方法
Java中使用new操作符来创建数组,语法如下
dataType[] arrayRefVar = new dataType[arraySize];//定义了什么数组就new一个什么样的数组
//声明和创建写到一起了,比如如下:
int[] num;//声明一个数组
num = new int[10];//创建一个数组
int[] num = new int[10];//声明与创建写一起了
写个例子:
package com.liyan;
public class Demo8 {
public static void main(String[] args) {
int[] num;//定义
num = new int[10];//可存放10个int类型的数字
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
num[4] = 5;
num[5] = 6;
num[6] = 7;
num[7] = 8;
num[8] = 9;
num[9] = 10;
int sum = 0;//计算所有元素的和
for (int i = 0;i < num.length;i++) {
sum += num[i];
}
System.out.println("元素的和为:" + sum);
}
}
有关数组下标越界问题:
package com.liyan;
public class Demo8 {
public static void main(String[] args) {
int[] num;//定义
num = new int[10];//可存放10个int类型的数字
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
num[4] = 5;
num[5] = 6;
num[6] = 7;
num[7] = 8;
num[8] = 9;
num[9] = 10;
System.out.println(num[10]);//出现错误:
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
//ArrayIndexOutOfBoundsException意思是:数组下标越界异常
}
}
数组的三种初始化
静态初始化:
int[] a = {1,2,3};//放多少个元素那么这个数组的空间就有多大
Man[] mans = {new Man(1,1),new Man(2,2)};
动态初始化:
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
写个例子:
package com.liyan;
public class Demo8 {
public static void main(String[] args) {
//静态初始化:
int[] a = {1,2,3,4,5,6,7};//放了7个元素,那么就有七个元素的空间
System.out.println(a[0]);
//动态初始化:
int[] b = new int[10];
b[0] = 10;
System.out.println(b[0]);//对于赋值的结果是10
System.out.println(b[1]);//对于没有赋值的默认值是0
}
}
数组的基本特点:
- 长度确定,一旦被创建,长度就不能被改变
- 元素必须是相同类型,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量,数组本身就是对象,Java中的对象是在堆中的,因此数组无论保存在原始类型还是其他对象类型
数组的使用
例子一:
package com.liyan;
public class Demo8 {
public static void main(String[] args) {
//打印所有的数组元素
int[] array = {1,2,3,4,5};
for (int i = 0;i < array.length;i++){
System.out.println(array[i]);
}
System.out.println("===========");
//计算所有数组元素的和
int sum = 0;
for (int i = 0;i < array.length;i++){
sum+=array[i];
}
System.out.println(sum);
System.out.println("==============");
//查找最大元素
int max = array[0];
for (int i = 0;i <array.length;i++){
if (max < array[i]){
max = array[i];
}
}
System.out.println(max);//打印输出最大值
}
}
例子二:
package com.liyan;
public class Demo8 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};//定义了静态数组
int[] abc = reverse(arrays);//引用了reverse方法,并将结果赋给名称为abc的变量
printArray(abc);//遍历abc并输出数组:{5,4,3,2,1}
}
//反转数组
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;
}
//遍历数组的每个元素
public static void printArray(int[] arrays){
for (int i = 0;i < arrays.length;i++){
System.out.println(arrays[i]);
}
}
}
二维数组
//格式:
int a[][] = new int[2][5];
package com.liyan;
public class Demo01 {
public static void main(String[] args) {
int[][] array = {{1,2},{2,3},{3,4},{4,5}};//二维数组的定义
System.out.println(array[0][0]);
for (int i = 0;i < array.length;i++){
for (int j = 0;j < array[i].length;j++){//注意这里是array[i].length而不是array.length
System.out.println(array[i][j]);//打印二维数组元素的值
}
}
}
}
Arrays类的讲解
这个类包含了许多开发者写的方法,我们直接拿来用就行,不需要自己写一些方法
package com.liyan;
import java.util.Arrays;
public class Demo01 {
public static void main(String[] args) {
int[] a = {1,54,75,13,458,42,156,985};
System.out.println(Arrays.toString(a));
//打印数组元素的方法是:Arrays.toString();
//自己写的方法打印输出数组:
printArray(a);
Arrays.fill(a,2,4,0);//数组填充,括号里面第一个是要填充的数组,第二个是要填充的数据,2到4之间的数据被0填充了
System.out.println(Arrays.toString(a));//输出数据:[1, 54, 0, 0, 458, 42, 156, 985]
//对数组进行排序的类:Arrays.sort(a);升序排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//输出结果:[1, 13, 42, 54, 75, 156, 458, 985]
}
//自己写个方法,也是打印数组元素:
public static void printArray(int[] a){
for (int i = 0;i < a.length;i++){
if(i == 0){//如果是数组的第一个元素,那就打印输出[
System.out.println("[");
}
if(i == a.length-1){
System.out.println("]");
}else {
System.out.println(a[i] + ",");
}
}
}
}
总结:
- 打印类的方法是:Arrays.toString();
- 对数组进行排序的类:Arrays.sort(a);升序排序
- Arrays.fill(a,2,4,0);数组填充,括号里面第一个是要填充的数组,第二个是要填充的数据,2到4之间的数据被0填充了