zoukankan      html  css  js  c++  java
  • Java学习之路(三):Java中的数组

    数组的概述和定义的格式

    数组的作用:

    • 用来存储同种数据类型的多个值

    数组的基本概念:

    • 数组是存储同一种数据类型多个元素的集合。就相当于一个容器。

    注意:数组既可以存储基本数据类型,也可以存储引用数据类型。

    数组的定义格式:

    • 数据类型[] 数组名 = new 数据类型[指定数组的长度]

    数组的初始化

    概念:

      就是为数组开辟连续的内存空间,并且为每个数的元素赋值

    如何初始化:

    • 动态初始化:指定长度,有系统给出初始化值  int[] arr = new int[5]
    • 静态初始化:给出初始化的值
      • 格式:数据类型[] 数组名 = new 数据类型[数组长度]

    如果打印一个数组的话,你会发现很好玩的事情

    int[] arr = new int[5];
    System.out.println(arr)
    //结果:【I@一个十六进制的内存地址

    [I@754e9654的解释:

    • 【代表是一个数组,有几个就代表是几维的
    •   I代表的是int类型
    • @一个固定的写法
    • 那一串的十六进制数字则是数组所在的内存地址

    数组的赋值和取值

    数组是通过下标、索引进行赋值和取值的

    当我们使用动态初始化时,系统会默认的给出一个默认值:

    • 整数类型:bytes,short,int,long默认的初始化的数值为0
    • 浮点类型:float,double的默认初始化值都是0.0
    • 布尔类型:boolean默认的初始化值为false

    Java中内存的分配

    在Java中,我们将内存分为了5个部分:

    • 栈:存储局部变量的部分
    • 堆:存储new出来的对象的部分
    • 方法区:类中的方法,想要调用一个方法的前提就是方法要在方法区
    • 本地方法区:?
    • 寄存器:给CPU使用的

     我们去创建一个数组:

    int[] arr = new int[5]

    其实计算机的内部会把arr这个变量名放在栈区,new int[5]放在堆区,在堆区中开辟了5个连续的空间,默认的int为0

    当我们将arr重新赋值给一个新的变量的时候,其实只是把他的内存地址又给了新的变量

     数组的静态初始化

     动态初始化: int[] arr = new int[5]

    静态初始化:

    格式:数据类型[] 数组名 = new 数据类型[]{元素......}

    简化:数据类型[] 数组名 = {元素....}

     数组的遍历

     这要是在Python,分分钟,一个for,啥条件都不用

    Java中:

      数组的最大索引:array.length-1

    //java中for循环数组
    
    int[] arr = new int[5];
    
    for(int i=0;i<=arr.length-1;i++){
        System.out.println(arr[i]);
    }

    二维数组的概述和定义

     定义:

    • 本质上是以数组作为数组元素的数组,即“数组的数组”

    二维数组的格式:

    • 数据类型[][] 数组名 = new 数据类型[m][n]
    • 数据类型 数组名[][] = new 数据类型[m][n]
    • 数据类型[] 数组名[] = new 数据类型[m][n]

    数组的声明:

      int[][] arr = {{1,2},{3,4}}

    补充:

    • 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量会随之消失
    • 引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内的数组还在,可以继续通过地址继续访问
    1.Java中的数组到时是传值还是传地址?
    //1.即使传值,也是传地址,基本数据类型传递值,引用数据类型传递地址。
    //2.Java中只有传地址,应为地址值也是值(官方说法)
  • 相关阅读:
    读书笔记----软件设计原则、设计模式
    程伟杰 | 2021软件代码开发技术作业一 | 自我介绍+课程6问
    团队作业3-需求改进&系统设计
    团队项目作业2-需求规格说明书
    【Android实习】20场面试斩获大厂offer,我学会了什么
    通俗易懂,android是如何管理内存的
    关于Handler同步屏障你可能不知道的问题
    清晰图解深度分析HTTPS原理
    这一篇TCP总结请收下
    深入浅出Java线程池:源码篇
  • 原文地址:https://www.cnblogs.com/smiling-crying/p/9295990.html
Copyright © 2011-2022 走看看