目录
一、数组
1、关于数组
2、关于二维数组
3、数组的拷贝
二、Array
一、数组
1、关于数组
存储一组相同类型数据的数据结构,属于对象,具有只读属性length。
声明数组变量、创建数组变量、初始化数组变量的的方法:
//动态初始化
char s[] = new char[2];
char[] s = new char[2];
s[0] = 'a';
s[1] = 'b';
//静态初始化
int[] array1 = {1,2};
int[] array2 = new int[]{1,2}
※声明数组的时候不能指定长度,例如:int num[5]; 这是错误的。
※数据创建时的默认初始化是(0,null)。
※数组创建后不能改变大小,运行时候动态确定数组大小。
2、关于二维数组
Java本质是没有多维数组的,只有一维数组,本质是数组的数组(一位数组的每一个元素,是一个数组对象)
不规则数组的定义不能省略行数只能省略列数:
int[][] odds = new int[3][];
odds[0] = new int[]{1};
odds[1] = new int[]{2,3};
odds[2] = new int[]{4,5,6};
3、数组的拷贝
String[] s = new String[]{"Bob","Peter"};
String[] t = s;
这并不是数组的拷贝,这只是赋值,两个数组的引用指向同一个对象,是同一个数组的不同名字而已。
String[] s = new String[]{"a","b"};
String[] t = new String[s.length];
for(int i = 0; i < s.length; i++)
{
t[i] = s[i];
}
这是数组的拷贝但是效率很低,Java提供了静态方法System.arraycopy()。
System.arraycopy(from,formindex,to,toindex,count);
//从from数组的fromindex位置开始拷贝count个元素到to数组中从toindex开始;
//应用
int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];//定义一个三行的不规则数组(实际上是一个一维数组,每一个元素是一个数组对象)
System.arraycopy(intArray,0,intArrayBak,0,intArray,length);//拷贝;
int ArrayBak[2][1] = 100;//赋值;
for(int i = 0; i < intArray,length; i++)
{
for(int i = 0; i < intArray[i].length; j++)
{
System.out.print(intArray[i][j]+" ");//遍历输出;
}
System.out.println();
}
//输出:
1 2
1 2 3
3 100
二、Array
是一种常用类,加强版数组,定义了多种数组操作的方法,实现了对数组元素的排序、转换成列表或者字符串形式等。
关于sort()、asList()、toString():
Type obj[] = {a,b,c,d}
Array.sort(obj)//对数组内容升序排序(默认)
Array.sort(obj,start,end);//对obj的[start,end)索引范围内进行排序;
//如果想改变sort的排序规则,需要数组类
// 继承接口implement Comparator,重写compare函数
// 或者
// 继承接口implement Comparable,重写compareTo函数
//以Integer为例,重写,compare函数
class Integer implements Comparator
{
.......
public int compare(Integer a,Integer b)
{
if(a < b)
return 1;
else if(a > b)
return -1;
else
return 0;
}
........
}
//以student为例,重写compareTo函数
class Student implements Comparable
{
..........
public int compareTo(Integer a,Integer b)
{
if(a < b)
return 1;
else if(a > b)
return -1;
else
return 0;
}
.........
}
List list = Array.asList(3,4,5);
//list : [3,4,5]
Array.toString(obj);
//output:[a,b,c,d]



