Análisis de memoria
Ver imagen:
Tres tipos de inicialización de matriz
Inicialización estática
int[] a = {
1,2,3};
Man[] mans = {
new Man(1,1),new Man(2,2)};
Inicialización dinámica
int[] a = new int[2];
a[0]=1;
a[1]=2;
Inicialización predeterminada de la matriz
- Array es un tipo de referencia y sus elementos son equivalentes a las variables de instancia de la clase, por lo tanto, una vez que se asigna espacio para la matriz, cada elemento en él se inicializa implícitamente de la misma manera que las variables de instancia.
public class A0122Array {
public static void main(String[] args) {
//静态初始化,创建+赋值
int nums[] = {
1,2,3,4,5};
System.out.println(nums[2]);
//动态初始化,包含默认初始值
//int[] nums1;
//nums1 =new int[5];
int[] nums1 = new int[5];
nums1[0]=2;
nums1[1]=4;
nums1[2]=6;
nums1[3]=8;
System.out.println(nums1[3]);
System.out.println(nums1[4]);//有默认初始值 int的初始值为0
}
}
run:
3
8
0
Cuatro características básicas de las matrices:
Límite de matriz
public class A0122ArrayBounds {
public static void main(String[] args) {
int[] a=new int[5];
System.out.println(a[5]);
}
}
run:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at com.lingxiang.data.January.A0122ArrayBounds.main(A0122ArrayBounds.java:6)
Process finished with exit code 1
Uso de matrices
En bucle
public class A0122ArrayDemo1 {
public static void main(String[] args) {
//打印所有元素
int[] a = new int[5];
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
for (int i = 0; i <a.length; i++) {
System.out.println(a[i]);
}
System.out.println("=================");
//计算所有元素的总和
int sum =0;
for (int i = 0; i < a.length; i++) {
sum += a[i]; // sum=sum+a[i]; 和 sum += [i];是一样的意思
}
System.out.println(sum);
System.out.println("=================");
//查找最大的数
int max =a[0];
for (int i=1;i<a.length;i++){
if (a[i]>max){
max=a[i];}
}
System.out.println(max);
}
}
run:
1
2
3
4
5
=================
15
=================
5
Para cada bucle
public class A0122ArrayDemo2 {
public static void main(String[] args) {
int[] a = {
1,2,3,4,5};
//JDK1.5之后开始 没有下标
for (int i : a) {
System.out.println(i);
}
}
}
Matriz como entrada de método
Matriz como valor de retorno
public class A0122ArrayDemo2 {
public static void main(String[] args) {
int[] a = {
1, 2, 3, 4, 5};
//JDK1.5之后开始 没有下标
for (int i : a) {
System.out.println(i);
}
System.out.println("==============");
int[] b = {
2, 4, 6, 8};
printarray(b);
System.out.println("==============");
int[] reverseb = reverse(b);
printarray(reverseb);
System.out.println("==============");
int[] reverse1b = reverse1(b);
printarray(reverse1b);
}
//打印数组元素的方法
public static void printarray(int[] b) {
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + "\t");
}
System.out.println();
}
//反转数组 写法一
public static int[] reverse(int[] b) {
int[] c = new int[b.length];
for (int i = 0; i < b.length; i++) {
c[b.length - i - 1] = b[i];
}
return c;
}
//反转数组 写法二
public static int[] reverse1(int[] b) {
int[] c = new int[b.length];
for (int i = 0,j=c.length-1; i < b.length; i++,j--) {
c[j]=b[i];
}
return c;
}
}
run:
1
2
3
4
5
==============
2 4 6 8
==============
8 6 4 2
==============
8 6 4 2