1、数组的声明
int[] array
或
int array[] //意义相同,不推荐
2、数组的初始化
2.1静态的初始化
int[] array = {1 2 3 4 5};
int[] array = new int[] {1 2 3 4 5}; //给方法传参数 或者 匿名数组
2.2动态的初始化
int[] array = new int[数组的长度];
2.3不初始化数组
int[] array = null; //只是指向空,但里面无内容
未初始化的数会有默认值,
不同类型默认值:
byte/short/int/long/ 0
double/folat 0.0
char 0x0000
boolean false
reference null
并不是所有的都有默认值,
拥有默认值的:数组内元素、属性、静态属性
没有默认值的:局部变量、参数
3、数组的属性
数组是引用类型属性,是引用传递,改变形参,实参会感受到变化
内存储存(简单化分):
1.栈:局部变量、形参
2.堆:对象(数组的对象)
class TestIt
{
public static void main ( String[] args )
{
int[] myArray = {1, 2, 3, 4, 5};
ChangeIt.doIt( myArray );
for(int j=0; j<myArray.length; j++)
System.out.print( myArray[j] + " " );
}
}
class ChangeIt
{
static void doIt( int[] z )
{
z = null ;
}
}
输出是:1 2 3 4 5
这段代码中的数组虽然是引用传递 ,但是将引用 z = null 只是将引用z不指向任何对象 ,
并不会对原先指向的对象数据进行修改 。
class ChangeIt
{
static void doIt( int[] z )
{
int[] A = z;
A[0] = 99;
}
}
class TestIt
{
public static void main( String[] args )
{
int[] myArray = {1, 2, 3, 4, 5};
ChangeIt.doIt(myArray);
for (int i = 0; i < myArray.length; i++)
{
System.out.print(myArray[i] + " ");
}
}
}
输出是:99 2 3 4 5
引用传递,改变形参数组中具体的值,实参可以感受到变化
4、数组的处理
基本循环处理
class testarray
public static void main(String[] args){
int[] array = {1 2 3};
//打印所有元素
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
//计算所有元素的总和
int sum = 0;
for(int i = 0; i< array.length; i++){
sum += array[i];
}
System.out.println("总和是" + sum);
//查找最大元素
int max = array[0];
for(int i = 0; i < array.length; i++){
if(max < array[i]){
max = array[i];
}
System.out.println("最大值是" + max);
}
}
for-each循环处理:
for(type element: array)
{
System.out.println(element);
}
实例代码:
class testarray
public static void main(String[] args){
int[] array = {1 2 3};
//打印所有数组元素
for(int element: array){
System.out.println(element);
}
}
5、Arrays类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。