数组
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组而成
- 其中,每一个数据称作一个数组元素,每一个数组元素可以通过一个下标来访问它们
数组声明创建
- 首先必须声明数组变量,才能在程序中使用数组。
dataType[] arrayRefVar;//首选的方法
int[] nums;
//或
datType arrayRefVar[];//效果相同,但不是首选方法,因为该声明多用于C和C++
int nums[];
//Java语言使用new操作符来创建数组
dataType[] arrayRefVar = new dataType[arraySize];
int nums = new int[10];
//获取数组长度
arrays.length
for(int i = 0;i < nums.length;i++){
......
}
//组合
public class ArrayDemo01 {
public static void main(String[] args) {
int[] num;//1.声明一个数组
num = new int[10];//2.创建一个数组
//3.给数组元素中赋值
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
//计算所有元素的和
int sum = 0;
//获取数组长度:arrays.length
for (int i = 0; i < num.length; i++) {
sum+=num[i];
}
System.out.println("总和为:"+sum);
}
}
三种初始化
//静态初始化
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;
//数组的默认初始化
为赋值之前Sting:null
int:0
数组使用
- 普通的For循环(用的最多,用于取数据和下标进行操作)
- For-Each循环(多用于打印结果)
- 数组作方法入参
- 数组作返回值(反转数组,对数组内容修改)
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//遍历111111111
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
//增强for遍历222222222
for (int array : arrays) {
System.out.println(array);
}
printArrays(arrays);
System.out.println();
int[] reverse = reverse(arrays);
printArrays(reverse);
}
//反转数组444444444444
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
result[j] = arrays[i];
}
return result;
}
//打印数组,数组做参数33333333
public static void printArrays(int[] arrays){
for (int array : arrays) {
System.out.print(array + " ");
}
}
}
二维数组
public class ArrayDemo04 {
public static void main(String[] args) {
//二维数组声明+创建
int[][] array = {{1,2},{3,4},{5,6}};
/**
* 1,2 array[0]
* 3,4 array[1]
* 5,6 array[2]
*/
System.out.println(array[1][1]);
printArrays(array[0]);
System.out.println();
System.out.println("=============");
//遍历二维数组
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
//打印数组,数组做参数
public static void printArrays(int[] arrays) {
for (int array : arrays) {
System.out.print(array + " ");
}
}
}
Arrays类
- 数组的工具类java.util.Arrays
- 由于数组对象类本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用从,从而可以对数据对象进行一些基本的操作
- 查看JDK帮助文档(需要自己上百度下载)
- Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”
- 具有以下常用功能:
- 给数组赋值:通过fill方法
- 对数组进行排序:通过sort方法,按升序
- 比较数组:通过equals方法比较数组中的元素是否相等
- 查找数组元素:通过bina’r’ySearch方法能对排序好的数组进行二分法查找法操作
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
public class ArrayDemo05 {
public static void main(String[] args) {
int[] a = {1,2,14,12,4,56,334,4545};
System.out.println(a);//[I@1b6d3586
//打印数组Arrays.toString()
System.out.println(Arrays.toString(a));
printArrays(a);
Arrays.sort(a);//数组排序:升序
System.out.println();
System.out.println(Arrays.toString(a));
System.out.println("==================");
Arrays.fill(a,2,4,0);//赋值
System.out.println(Arrays.toString(a));
}
//自己写的打印方法
public static void printArrays(int @NotNull [] a){
for (int i = 0; i < a.length; i++) {
if (i==0){
System.out.print("[");
}
if (i==a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
}
多看各种各样的源代码可以学到很多不一样的编程思想!
比如toString(打印数组)