下面我要向大家介绍一下我不打不相识的好朋友-数组,让大家也好好认识一下它。
下面是声明一维数组并分配内在给该数组的一个范例:
int score [ ] = null;// 1、声明整形数组score(开辟栈内存空间)
score = new int [3];// 2、为整形数组score分配内在空间,其元素个数为3(开辟堆内存,将使用权交给对应的栈空间)
整形的数组score时,score可视为数组类型的变量。
提问:数组声明为什么要加上一个 null 呢?
回答:数组在数据类型上属于引用数据类型,其默认值是 :null,表示还没有任何指向的堆内在空间。当然在JDK1.5之后可以不用给数据默认值。
……
2、堆栈
一个堆内存空间可以同时被多个栈内存空间所指向,即一个人可以有多个名字,一个具体的人就相当于堆内存,名字就相当于栈内存。
3.数组的引用传递
/*************向方法中传递数组的过程********************/
public class ArrayRefDemo01{
public static void main(String args[]){
int temp[] = {1,3,5} ; // 利用静态初始化方式定义数组
fun(temp) ; // 传递数组
for(int i=0;i<temp.length;i++){
System.out.print(temp[i] + "、") ;
}
}
public static void fun(int x[]){ // 接收整型数组的引用
x[0] = 6 ; // 修改第一个元素
}
};
4、Java新特性对数组的支持
用可变参数定义数组 :
public static void fun(int ... arg){ // 可变参数
for(int i=0;i<arg.length;i++){ // 循环输出
System.out.print(arg[i] + "、") ;
}
}
foreach输出数组内容:
public static void fun(int ... arg){ // 可变参数
for(int x:arg){ // 使用foreach输出输出
System.out.print(x + "、") ;
}
}
5、对象数组
6、Java类库中的数组操作类--Arrays类
数组元素的查找、数组内容的填充、排序
public class Test{
public static void main(String []args){
int temp[] = {5, 4, 3, 2, 1};
Arrays.sort(temp);
System.out.println("排序后的数组:");
for(int s : temp){
System.out.println(s + "、");
}
System.out.println("排序后的String数组:");
System.out.println(Arrays.toString(temp));
System.out.println("4在位置是:"+Arrays.binarySearch(temp, 4));
Arrays.fill(temp, 0, 3, 8);
System.out.println("填充后的String数组:");
System.out.println(Arrays.toString(temp));
}
}
结果:
排序后的数组:
1、
2、
3、
4、
5、
排序后的String数组:
[1, 2, 3, 4, 5]
4在位置是:3
填充后的String数组:
[8, 8, 8, 4, 5]