一、数组的声明和开辟空间
数组的声明一共分为两种形式
1.动态的声明
int []arry= new int[5];
解读:定义了一个数据类型为int的数组,它的空间是5个int的大小
2.静态的声明
int []arry={1,2,3,4,5};
//或者还有第二种
int[]arry=new int[]{1,2,3,4,5};
解读:定义了一个int类型的数组,并且他有5个值,5个值都分别和中括号里面的值所对应
二、数组的赋值
首先,数组的赋值需要遵守下面的规则
1.同一个数组元素的数据类型一定要相同。
2.也可以利用java里面的数据类型相互转化的原则来进行赋值
double[] arry={1.1,2.2,3.3,5};
解读:在上面这句话中,虽然5是int类型的,但是在java中int类型可以自动转化为double类型,所以也是可以的。
3.假如对数组没有进行初始化,那么就是默认值
整型:0
浮点类型:0.0
char:\u000
boolean:false
string:null
4.重点:数组的赋值机制
首先,要讲两种赋值方式:值拷贝和地址拷贝。
值拷贝:对于普通的基本数据类型而言,赋值就是一种值得拷贝
地址拷贝:其实数组存放的是一个空间的地址,在赋值时进行的是地址拷贝。
从计算机内存的结构方面来看,我们所常见的那些赋值,其实都是在栈中。
值拷贝:在栈中,将数据赋值给另外一个数据。
地址拷贝:数组名其实存放的是一个在堆中的地址,拷贝其实是将地址赋值给另外一个,一个改变了,另外一个也会相应的改变。
三、数组的一些操作
在数组中可以使用数组名.length来代表数组的长度
1.数组拷贝
思路
1.重新定义一个数组,遍历,一个又一个的赋值
2.数组反转
方式一
for(int i=0;i<arry.length/2;i++)
{
temp=arr[lenth-1-i];
arr[length-1-i]=arr[i];
arr[i]=temp;
}
方式二:逆序赋值
int[] arry2=new int[arry1.length];
for(int i=0;i<=arry1.length;i++)//开始赋值
{
arry2[i]=arry1[arry1.length-1-i]; //逆序赋值
}
arry1=arry2;
也根据前面的地址赋值的原理,在java程序中,arry1原本的空间因为没有变量来指向它,而变成了无用的变量,在java程序中,会被自动销毁
3.数组的添加和扩容
思路:1.定义一个数组,长度为arry.length+1
2.赋值,遍历拷贝
3.令原本的数组,指向新数组所对应的空间。
4.常规输入你要添加的数据
5.使用dowhile循环,和break来控制你要添加多少个空间
6.记得while(true)这样来写,这样写的目的是使得你的循环可以保持无限的循环,而将你的控制权限给了break