一、数组的声明
因为在Java中没有像C++中的指针,所以在声明数组是也会有一些不同。
方式1:类型[ ] array;
方式2:类型 array[ ];
注:一般都采用第一种方式进行声明,一个数组是一个对象,声明一个数组没有创建一个对象,声明时不需要指定长度(在C++中声明是必须指定数组长度,除了利用指针的动态数组)。
二、数组的创建
创建基本数据类型数组:int[ ] i=new int[2];
创建引用数据类型数组:Student[] s=new Student[100];
注:数组创建后其中的元素有默认的初始值:
类型 | 默认值 |
byte | 0 |
short | 0 |
int | 0 |
long | 0l |
float | 0.0f |
double | 0.0d |
char | \u0000 |
boolean | false |
reference types | null |
创建时一定要指定长度。
int[ ] i=new i[ ]; //error
三、数组的初始化
方法1:声明,创建,初始化分开
int[] i;
i=new int[10];
i[0]=0;
i[1]=1;
………
方法二:声明,创建,初始化同时
int[] i={0,1,2}; //显示初始化,{}中有几个值,则长度为几
int[] i=new int[]{0,1,2}; //后面的[]中不允许出现长度
三、二维数组
本质:二维数组其实是一个一维数组,他的每一个元素又是一个一维数组。
几种初始化方式:int[ ] i1=new int[2][3];
int[ ][ ]={{1,1,1},{2,2,2},{3,3,3}};
int[ ][ ]=new int[2][ ]; i2[0]=0;i2[1]=1; //不允许先给低维分配空间。例如:int[ ][ ]=new int[ ][3];
补充:length是数组的长度,数组的长度一旦确定不在改变。
四、数组的拷贝
一共提供三种方法:
1、自定义拷贝(i是源数组,i1是目标数组)
就是自己写方法实现拷贝,将数值一个一个放进目标数组中去,代码如下:
import java.util.Scanner;
public class TestArraysort {
public static void main(String[] args) {
int[] i=new int[10];
int[] i1=new int[10];
int j=0;
int s=j+1;
for(j=0;j<10;j++,s++)
{ System.out.println("请输入第"+s+"个数据,谢谢");
Scanner in=new Scanner(System.in);
i[j]=in.nextInt();
}
for(int m=0;m<10;m++)
{
i1[m]=i[m];
}
System.out.println("自定义方式复制已经成功,如下便是: ");
for(int m=0;m<10;m++)
{
System.out.println("我是数组i1中的数值,数值是 "+i1[m]);
}
}
}
2、System.arraycopy方法复制(i是源数组,i1是目标数组)
import java.util.*;
//import java.util.System;
public class TestArray {
/**
* @param args
*/
public static void main(String[] args) {
int[] i=new int[10];
int[] i1=new int[10];
int j=0;
int s=j+1;
for(j=0;j<10;j++,s++)
{ System.out.println("请输入第"+s+"个数据,谢谢");
Scanner in=new Scanner(System.in);
i[j]=in.nextInt();
}
System.arraycopy (i,0,i1,0,i.length);
System.out.println("System.arraycopy方式复制已经成功,如下便是: ");
for(int m=0;m<10;m++)
{
System.out.println("我是数组i1中的数值,数值是 "+i1[m]);
}
}
}
三、clone方法复制(i是源数组,i1是目标数组)
import java.util.Scanner;
public class TestArrayclone {
public static void main(String[] args) {
int[] i=new int[10];
int[] i1=new int[10];
int j=0;
int s=j+1;
for(j=0;j<10;j++,s++)
{ System.out.println("请输入第"+s+"个数据,谢谢");
Scanner in=new Scanner(System.in);
i[j]=in.nextInt();
}
i1=(int[])i.clone();
System.out.println("clone方式复制已经成功,如下便是: ");
for(int m=0;m<10;m++)
{
System.out.println("我是数组i1中的数值,数值是 "+i1[m]);
}
}
}
五、总结
如果有什么错误或者需要补充的地方希望大家多多指教和批评,如果大家有什么好的学习方法,还请不吝赐教,谢谢诸位了。