JAVA基础(五) 数组、二维数组以及内存中的数据存储问题

数组:

一、定义:是一种有序的元素序列,是存储同一种数据类型多个元素的集合。也可以看成是一种容器。
二、格式
       格式一:数据类型 []数组名;    int[] a; 
       格式二:数据类型   数组名[];   int a[];
三、初始化
1、初始化就是在内存中为数组元素分配内存空间,并且为每个数组元素赋值。JAVA要求,数组只有先初始化了,才能使用。
2、分类:动态初始化:初始化时只给出长度,初始化值由系统给出
               
                静态初始化:初始化时给出初始化值,由系统决定长度。
     注意:两种方式,只能使用一种,不能进行动静结合。
3、格式:
动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];(数组长度可以简单地理解为数组内存出元素的个数)
                     例如:int[] arr = new int[3];(定义了一个可以存放3个int类型的值)
静态初始化:数据类型[]数组名=new 数据类型[]{元素1,元素2....};
                    例如:int []arr=new int[]{1,2,3};
               简化形式:数据类型[]数组名={元素1,元素2,.....};
                    例如:int[] arr = {1,2,3};
数组操作中常见的问题:越界和空指针
               当显示ArrayIndexOutOfBoundsException:数组索引越界异常,产生这种异常的原因是放分了不存在的索引
              当显示NullPointerException:表示空指针异常,造成这种异常的原因是数组已经不再只想对内存了,此时如果还用数组名去访问元素


二维数组
含义:二维数组是每一个元素为一维数组的数组。

格式:(1)数据类型[][] 变量名 = new 数据类型[m][n];
                   其中m表示此二维数组中一维数组的个数,n为每一个一维数组中含有多少元素。
                    a:数据类型 数组名[][] = new 数据类型[m][n];
            b:数据类型[] 数组名[] = new 数据类型[m][n];
                    也可以用来定义二维数组,但是不推荐使用。
            例、int[][] arr = new int[3][2];定义了一个含有3个包含2个元素的一维数组的二维数组。
            (2)数据类型[][] 变量名 = new 数据类型[m][];
     m表示这个二维数组有多少个一维数组,没有直接给出一维数组的元素个数。可以之后动态的给出
       例如 
int[][] arr = new int[3][];
			arr[0] = new int[2];
			arr[1] = new int[3];
			arr[2] = new int[1];
             (3)数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}...};

                     简化版:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
   

内存的分配:

  栈:
局部变量存放在栈中局部变量:在方法定义中或者方法声明上的变量都是局部变量。(就是作用的范围在方法内部)

堆:
所有new 出来的东西都存放在堆中。
在堆中存储的特点:会为每一个new 出来的东西分配一个地址值,当时用完毕以后里面的东西就变成了垃圾,等待垃圾回收器的回收。
                              每个new出来的东西都有一个默认值。具体的数据类型和默认值如下。
                               byte,short,int ,long       默认为0
                              float,double                   默认为0.0
                              char                                  默认为‘\u0000’
                              boolean                            默认为 false
                              引用数据类型                     默认为null      
方法区:又叫静态区,跟堆一样,被所有线程所共享,方法区包含所有的class和static变量。
本地方法区:和系统相关
寄存器:CPU使用 
  
关于存储部分更加详细的内容可以参考 http://www.open-open.com/lib/view/open1432200119489.html
























  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值