Java基础记忆07(数组)

1:数组的定义。

       数组在内存中是若干个大小一致,类型一样,地址连续的存储空间  

2:数组的格式。

  • 数据类型[] 数组名=new 数据类型[长度];   →  int[] arr=new int[];
  • 数据类型[] 数组名=new 数据类型[]{元素1,元素2,....};  →  int[] arr=new int[]{1,2,3,4,5......}
  • 数据类型[] 数组名={元素1,元素2,....};  →  int[] arr={1,2,3,4,5......}

/*创建一个(new)整型数组(int[ ]),且长度为[  ] ,然后将这个对象的地址给变量arr,arr的数据类型 int[]
 [] 表示一维数组,一行。[][]表示二维数组,若干行                                                                                 */

3:数组的基本概念。

  • 数组的访问通过索引完成,即:"数组名称[索引]",但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息。

例:

class Hh{
    public static void main(String[] args){
        int[] arr=new int[3];
        System.out.println(arr[3]);
    }
}

  • Java中提供有一种动态取得数组长度的方式:数组名.length

例:

class Hh{
    public static void main(String[] args){
        int[] arr=new int[3];         //创建一个(new)的长度为3,变量为arr的int整型数组
        System.out.println(arr[arr.length-1]);//输出arr[2]的值
    }
}

  • 数组属于引用数据类型,所以在数组使用之前一定要开辟空间(实例化),如果使用了没有开辟空间的数组,则一定会出现 NullPointerException 异常信息。

例:

class Hh{
    public static void main(String[] args){
        int[] arr=new int[3];
        arr=null;                //将空集赋值给数组arr
        System.out.println(arr[arr.length-1]);
    }
}

 

4:数组内存流程解析。

解析范例:

class Hh{
    public static void main(String[] args){
        int[] arr1=null;          //创建一个空集的数组arr1
        int[] arr2=new int[3];    //创建一个长度为3的数组arr2
        int[] arr3={1,2,3};       //创建一个赋值1,2,3的数组arr3
        System.out.print("输出数组arr2的值:");  //提示
        for(int i=0;i<=arr2.length-1;i++){
            System.out.print(arr2[i]+" ");      //输出arr2集合的值
        }
        System.out.println();                   //换行
        System.out.print("输出数组arr3的值:");  
        for(int j=0;j<=arr3.length-1;j++){
            System.out.print(arr3[j]+" ");      //输出arr3集合的值
        } 
        arr1=arr2;                              //将数组arr2赋给arr1
        arr2[1]=6;                              //将常量6赋给arr2[1],意为证明arr1[1]改变
        System.out.println();
        System.out.println("输出arr1数组arr1[1]的值:"+arr1[1]);//输出arr1[1]的值
    }
}

栈内存

arr1      

堆内存 

arr1       

栈内存

arr2       

堆内存

arr2       

栈内存

arr3        

堆内存

arr3      

栈内存

arr1=arr2

堆内存

arr1=arr2

  arr2[0]0arr3[0]1arr1[0]0
null arr2[1]0arr3[1]2arr[1]6
  arr2[2]0arr3[2]3arr[2]0

      

 

 

 

 

 

 

 

5:Java中内存大致分布情况。

  • 寄存器:存储CPU计算的一些临时数据。
  • 本地方法区:存储操作系统执行的部分代码
  • 方法区:存储应用软件执行的部分代码
  1. 又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
  2. 方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
  • 栈内存:把类似指针的地址数据放在同一块内存区域这块区域遵守栈的存取规则我们就称之为栈。简单地说,栈内存存储所                运行函数的代码!
  • 堆内存:把主要的数据放在同一块内存区域并遵守堆的存取规则。同理,堆内存是存储对象的!
  • 基本数据类型->常量->常量池->方法区
  • 引用数据类型->对象->堆内存


 

             

 

 


 
       

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值