![](https://img-blog.csdnimg.cn/a868658007cd4301ac933eadddb1fe18.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiA5Liq6aOO6L275LqR5reh,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/a076b736c6ba431588554830fd4fbaa7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiA5Liq6aOO6L275LqR5reh,size_20,color_FFFFFF,t_70,g_se,x_16)
要想理解数组还得是从内存层面去理解消化他们,多说无益,上解释
public class Test{
public static void main(String args[]){
int[] s;
s = new int[10];
//int[] s=new int[10];
//基本数据类型数组在显式赋值之前,
//Java会自动给他们赋默认值。
for ( int i=0; i<10; i++ ) {
s[i] =2*i+1;
System.out.println(s[i]);
} } }
在执行int[]s的时候内存解析如下:
在执行s = new int[10]时内存解析如下:
for循环赋值以后:
到这里我们也可以看看java程序里面的内存结构:
我们在使用数组的时候应该注意什么:
一个比较俗的玩意是什么?就是我们每new一个东西,给一个变量,该变量就会指向新new对象的地址!!!注意java和c语言不同,c语言中的数组名是不可变的,相当于一个常量指针;而java中的数组名就相当一个可以变化的指针,如果不理解,请看以下图示:
看到这里,相信你已经理解了一维数组了,那么接下来就是多维数组了
和c语言不一样的数组不同,c语言的数组肯定是也该规则的矩阵!!
多维数组的使用
二维数组的内存解析是特别的重要的理解,理解这部分很重要!!!!
少说废话上图上代码
到这里二维数组的基本解释也差不多了,下面我们,我们再说一下数组中的易错点吧:
如下图我们定义了俩个数组,然后对arry1进行了new,而对arry2没有new,接着将arry1的值赋给了arry2,在这里我们需要的注意这里的赋值是地址赋值!!!即arry1和arry2指向了同一个空间!!!,共享内存!!!
想要实现赋值的话,我们可以通过for循环一个一个的去赋值!!!
对于数组我们有工具类可以对它进行操作。
import java.util.Arrays;
public class text {
public static void main(String[] args) {
int a[]= {4,3,5,1};
int b[]= {2,4,5,6};
Arrays.sort(a);
System.out.println(Arrays.equals(a, b));
System.out.println(Arrays.toString(a));
}
}
最后的最后是一些数组的异常:
(资料参考尚硅谷)