不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java数组
数组是在内存中存储相同数据类型的连续的空间;
数组名中引用的是这块连续空间的首地址;
通过首地址可以依次访问数组所有元素;
数组的长度一旦确定,就不能修改。
一维数组的声明:
type var[] 或 type[] var
静态初始化
int arr[] = new int[]{1,2,3}; 或 int arr[] = {1,2,3};
动态初始化
int arr[] = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3;
注意:左边int arr[]中不能写值。
每个数组都有一个length属性指明它的长度,对于上述声明的数组,长度为 arr.length。
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,每个元素就会被初始化。
示例:
import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int arr[] = new int[10]; for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); System.out.println("依次输入10个数:"); for (int i = 0; i < arr.length; i++) { arr[i] = scanner.nextInt(); } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
二维数组
静态初始化:
int a[][]={{1,2,3},{4,5},{6}}; 或 int a[][]=new int[][]{{1,2,3},{4,5},{6}};
动态初始化:
int arr[][] = new int[3][2]; 或 int arr[][] = new int[3][];
如果是第一个,则表示:二维数组中有三个一维数组,每个一维数组中有两个元素。
如果是第二个,则表示:二维数组中有三个一维数组,每个一维数组都是默认初始化值null。
注意:
int arr[][] = new int[][2];//非法
多维数组不一定都是规则矩阵形式,长度可不同。
二维数组的长度:
//定义一个整型数组:3行4列 int a[][] = new int[3][4]; //获取行数(3行) int x = a.length; //获取列数(4列) int y = a[0].length;
使用For-Each循环遍历数组:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = new int[]{1,2,3}; int b[] = {4,5,6}; for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); for (int temp : b) { System.out.print(temp + " "); } } }
数组的Arrays类
常用的三种方法功能:
1.通过 fill 方法,给数组赋值。
原型:
Arrays.fill(int a[], int value)
Arrays.fill(int arr[], int fromIndex, int toIndex, int value)
示例:
import java.util.Arrays; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = new int[5]; int b[] = new int[5]; Arrays.fill(a, 1); Arrays.fill(b, 1,2,3); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); for (int i = 0; i < b.length; i++) { System.out.print(b[i] + " "); } } }
结果:
1 1 1 1 1 0 3 0 0 0
2.通过 sort 方法,将数组按升序。
原型:
Array.sort(arr);
示例:
import java.util.Arrays; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = {2,3,1,6,4,5}; Arrays.sort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }
结果:
1 2 3 4 5 6
3.通过copyOf方法,拷贝数组。
原型:
Arrays.copyOf(arr, int newArrayLength);
Arrays.copyOfRange(arr,int fromIndex, int toIndex);
示例:
import java.util.Arrays; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = {2,3,1,6,4,5}; int b[] = Arrays.copyOf(a, a.length); int c[] = Arrays.copyOfRange(a, 1, 3); for (int i = 0; i < b.length; i++) { System.out.print(b[i] + " "); } System.out.println(); for (int i = 0; i < c.length; i++) { System.out.print(c[i] + " "); } } }
结果:
2 3 1 6 4 5 3 1