首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Java】数组的定义与使用详解!!!

【Java】数组的定义与使用详解!!!

作者头像
喜欢做梦
发布2024-11-25 17:58:34
发布2024-11-25 17:58:34
1.3K0
举报
文章被收录于专栏:学习学习

一、数组的基本概念

1.为什么要使用数组?

为了方便储存相同类型的数据,不用对多个数据的类型在进行多次定义

2.什么是数组?

数组是相同数据类型的一个集合

  • 数组中的数据类型都是相同的;
  • 数组的空间是连在一起的;
  • 数组的每个空间都有编号,下标是由0开始的。

二、数组的创建及初始化

1.数组的创建

T [] 数组名=new T[N];

  • T:表示数组元素类型;
  • T[]:表示数组的类型;
  • new:创建新的对象;
  • N:表示数组的长度。
代码语言:javascript
复制
int[] array1=new int[3];//表示可以容纳三个整形类型的元素的数组,默认值都为0
2.数组的初始化

数组的初始化分为静态初始化动态初始化

动态初始化

动态初始化:在创建数组时,直接指定数组元素的个数

代码语言:javascript
复制
        int[] array1=new int[3]//元素值都默认为0
静态初始化

静态初始化:在创建数组时,不直接指定数组元素的个数,而直接将具体的数据内容进行指定

代码语言:javascript
复制
        int[] array={1,2,3};
        int[] array2=new int[]{1,2,3};
  • 动态初始化和静态初始化可以分为两步,但不可以省略new T [];
  • 静态初始化时,T数组元素类型要对应相同;
  • 静态初始化时,T数组元素类型要与{}中的元素类型对应相同;
  • 静态初始化时,new T[]可以省略;
  • 初始化时,不能既静态初始化又动态初始化,即不能又指定数据个数又指定数据具体内容;
  • 如果没有对数组初始化指定具体内容,数组中的数据有其默认值。

三、数组的使用

1.数组中元素的访问

我们知道数组的空间是连续的,每一块空间都有自己的编号,编号由0开始,依次递增,编号也就是下标,数组的下标是由0开始,所以我们访问通过数组的下标来访问数组元素。

代码语言:javascript
复制
 int[] array=new int[]{1,2,3};
        System.out.println(array[0]);//1
        System.out.println(array[1]);//2
        System.out.println(array[2]);//3
  • 由于下标由0开始,所以下标的范围在[0,N),而N表示元素个数,不要越界,否则报错;
2.如何快速遍历数组?

遍历数组:访问数组中的所有的元素个数

  • 为了方便,我们可以通过 数组名.length 来获取数组长度;
代码语言:javascript
复制
       int[] array=new int[]{1,2,3}
        //while循环遍历
        int j=0;
        while(j<array.length){
            System.out.print(array[j]+" ");
            j++;
        }
        System.out.println();
        System.out.println("=======");
        //do...while循环遍历
        j=0;
        do{
            System.out.print(array[j]+" ");
            j++;
        }while(j<array.length);
        System.out.println();
        System.out.println("=======");
        //for循环遍历
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }

此外还可以利用for-each循环遍历数组

代码语言:javascript
复制
       int[] array=new int[]{1,2,3};
       for(int x:array){
            System.out.print(x+" ");
       //将array数组中的每个放到x元素中
        }
3.以字符串的形式输出

使用Arrays的toString方法将数组以字符串的形式输出

代码语言:javascript
复制
        int[] array=new int[]{1,2,3};     
        String ret= Arrays.toString(array);
        System.out.println(ret);//[1,2,3]

三、数组是引用类型

1.初始JVM内存分布

内存是一段连续的空间,主要用来储存程序运行时的数据

内村划分:

现在我们只需简单的关心虚拟机栈和堆就好:

虚拟机栈: 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含:局部变量表、操作数栈、动态链接、返回地址以及一些其他信息。当运行结束时,栈帧就被销毁了,即栈帧中保存的数据也会被销毁。

:JVM所管理的最大的内存区,使用new创建的对象都是在堆上保存的,堆是随着程序开始运行时而创建的,随程序的退出而销毁,堆中的数据只要还在使用就不会被销毁。

2.基本变量与引用变量的区别

基本变量:该变量空间存放的是其对应的值

引用变量:该变量空间储存的是其所在的地址

代码语言:javascript
复制
    int a=1;
    int b=2;
    int[] array=new int[]{4,5,6};
  • a,b是内置类型的变量,其空间保存的值是其初始化的值;
  • array是数组类型的引用变量,其空间保存的是其在堆空间的首地址;

3.引用变量

代码语言:javascript
复制
            int[] array=new int[]{1,2,3};
            int[] array1=new int[]{4,5,6};
代码语言:javascript
复制
public static void main(String[] args) {
            int[] array=new int[]{1,2,3};
            int[] array1=new int[]{4,5,6};
            array=array1;
            for(int x:array1){
                System.out.print(x+" ");//4,5,6
            }
            array1[0]=11;
        System.out.println(array1[0]);//11
        System.out.println(array[0]);//11
    }
  • 将array1中的地址给了array,也就是array的地址之后都指向array1的地址,与array共用一个地址,里面的值也相同
  • 所以array1里面内容的改变array也会随之改变
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组的基本概念
    • 1.为什么要使用数组?
    • 2.什么是数组?
  • 二、数组的创建及初始化
    • 1.数组的创建
    • 2.数组的初始化
      • 动态初始化
      • 静态初始化
  • 三、数组的使用
    • 1.数组中元素的访问
    • 2.如何快速遍历数组?
    • 3.以字符串的形式输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档