zoukankan      html  css  js  c++  java
  • Java 之 一维数组

    一、声明与初始化一维数组

      1、声明(两种方式)

    数组元素类型 数组名称[];
    数组元素类型[] 数组名字;

         数组元素类型:决定了数组的数据类型,即数组要存放什么类型的数据,可以是基本数据类型和引用数据类型;

         Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
        Demo:

    int a[];
    int[] a1;
    double b[];
    String[] c; //引用类型变量数组
    

      

      2、初始化(两种方式)

         数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值,再用 new 运算符进行内存分配。

         两种初始化方式:

        (1)动态初始化(指定长度):数组声明且为数组元素分配空间与赋值的操作分开进行

    数组名称 = new 数据类型[数组长度];

           数据类型:也就是数组当中保存的数据,全都是统一的什么类型,与声明时要一致;

           数组长度:也就是数组当中,到底可以保存多少个数据,是一个int数字;

           注意:数组有定长特性,数组一旦初始化完成,其长度就确定了,不可更改。

        (2)静态初始化(指定内容):在定义数组的同时就为数组元素分配空间并赋值。

    数组名称 = new 数据类型[]{元素1,元素2,……};

          注意:虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。

          Demo:

        int[] ids;//声明
        //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
        ids = new int[]{1001,1002,1003,1004};
        //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
        String[] names = new String[5];
    

      

      3、声明并初始化数组

        声明的同时使用 new 关键字为数组分配内存空间:

    数据类型 数组名字 = new 数组元素的类型[数组元素的个数]
    数据类型 数组名字 = new 数组元素的类型[元素1,元素2,……]

        注意使用 new 关键字分配数组时,必须指定数组元素的类型数组元素的个数数组元素

      4、省略new的方式(类型推断)

    数据类型[] 数组名称 = { 元素1, 元素2, ... };

        使用这种方式,会根据元素类型推断中所创建的数组中的数据类型,此时声明和初始化必须在同一行!

      Demo:

    int[] arr = {1,2,3,4,5};//类型推断
    
    int[] arr2;
    arr2 = {1,2,3,4,5};  //编译不通过,这样必须写在同一行
    

      

    二、一维数组的访问与数组长度

      1、打印数组名称

        当使用 System.out.println 打印数组的名称时,得到的数组对应的:数组对象的类型@内存地址哈希值。(十六进制的地址值)

        Demo:

    int[] arr2 = new int[3];
    System.out.println(arr2);     //结果是:[I@6d06d69c

      2、数组的长度

        每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的 长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。

        由次可以推断出,数组 的最大索引值为 数组名.length-1 。

        注意:数组一旦初始化,其长度是不可变的。

      3、访问数组中的元素

        定义并用运算符new为之分配空间后,才可以引用数组中的每个元素
        索引(下标):每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素;

          数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
          数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1int a[]=new int[3]; 可引用的数组元素为a[0]a[1]a[2]
        格式:

    数组名[索引] = 数值,     //为数组中的元素赋值
    变量 = 数组名[索引]       //获取出数组中的元素
    

    三、遍历数组

      数组遍历就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。  

      方式一:使用索引下标方式

    1 int[] array = { 15, 25, 30, 40, 50, 60, 75 };
    2 System.out.println(array[0]); // 15
    3 System.out.println(array[1]); // 25
    4 System.out.println(array[2]); // 30
    5 System.out.println(array[3]); // 40
    6 System.out.println(array[4]); // 50
    7 System.out.println(array[5]); // 50

        这种方式需要依次根据索引进行频繁重复的操作,不推荐使用,只做了解。

      方式二:使用for

    int[] arr = new int[5];
    for(int i = 0;i < arr.length;i++){
        System.out.println(arr[i]);
    }
    

        对于一个数组,每次对每个元素的操作都是相同的,用循环是最好的方法。而且就算数组的长度发送了改变代码也不需要改动。

      方式三:使用 foreach 循环

    1 for (int i: array){
    2      System.out.println(array[i]);
    3 }

         这种循环是增强形式的 for 循环,其中 i 即代表数组中的每一个元素。

     

    四、数组元素的默认初始化值

        数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式
    初始化。

        对于基本数据类型而言,默认初始化值各有不同;

        对于引用数据类型而言,默认初始化值为null(注意与0不同!)
        

         整数类型:默认是 0;

        浮点类型:默认是 0.0;

        字符类型:默认为 'u0000',字符编码为0的空字符;

        布尔类型:默认是 false;

        引用类型:默认是 null。

         注意:静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。

    五、一维数组的内存解析

      1、内存概述

        内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

        Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

      2、Java 虚拟机的内存划分

        为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

        JVM 的内存划分:

        

                          

      3、数组在内存中的存储

        (1) 一个数组与内存关系

        

       程序执行流程:

        a、main 方法进入方法栈执行;

        b、创建数组,JVM会在堆内存中开辟空间,存储数组;

          c、数组在内存中会有自己的内存地址,以十六进制数表示;

        d、数组中有3个元素,默认值为 0

        e、JVM 将数组的内存地址赋值给引用变量 array;

        f、变量 array 保存的是数组内存中的地址,而不是一个具体是数值,因此称为 引用数据类型;

      (2)两个数组与内存关系 

        

      (3)两个变量指向一个数组

        

      4、数组内存图

        (1)声明数组类型

          

        (2)数组的默认值

          

        (3)数组的动态初始化

          

      5、数组内存案例

        (1)案例一

          

        (2)案例二

          

        (3)案例三

          

  • 相关阅读:
    淘票票项目总结
    淘票票 Model制作过程
    黄金梅丽号第四次讨论会议
    淘座座用户需求调查问卷的调查结果
    淘座座用户需求调查问卷
    淘座座需求分析报告
    淘座座软件工程技术说明书
    淘座座软件项目计划书
    利用hutool配置发送邮件的问题 及 阿里企业邮箱526 Authentication failure 错误问题
    DispatcherServlet和ContextLoaderListener,还有spring+servlet3.0 无web.xml启动问题
  • 原文地址:https://www.cnblogs.com/niujifei/p/13621739.html
Copyright © 2011-2022 走看看