栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

java数组详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java数组详解

java数组详解
  • 1.数组的初始化
  • 2.数组的赋值机制
    • 数组赋值机制
    • JVM内存区域
    • 值传递与引用传递
  • 3.数组拷贝
  • 4.For-Each 循环
  • 5.二维数组
    • 基本使用
    • 内存分析

1.数组的初始化

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar;   // 首选的方法
 
或
 
dataType arrayRefVar[];  // 效果相同,但不是首选方法

注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[]风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言

下面是这两种语法的代码示例:

double[] myList;         // 首选的方法
 
或
 
double myList[];         //  效果相同,但不是首选方法

创建数组的三种方式:

// 数组初始化创建
// 第一种方式,声明并分配空间
double[] scores = new double[5];
scores[0] = 77;
scores[1] = 78;
scores[2] = 99;
scores[3] = 100;
scores[4] = 52;
for (int i = 0; i < scores.length; i++) {
    System.out.println(scores[i]);
}
// 第二种方式,分步骤执行
int apples[]; // 声明数组,还没有分配空间
apples = new int[5]; // 分配空间
// 第三种方式,静态初始化
double[] hens = {3, 5, 1, 2.5, 7.8};
for (int i = 0; i < hens.length; i++) {
    System.out.println(hens[i]);
}

2.数组的赋值机制 数组赋值机制

数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用传达

示例:

// 数组的赋值机制
int[] arr1 = {1,2,3};
int[] arr2 = arr1; // 获得的其实是arr1的地址
System.out.println(arr1);
System.out.println(arr2);
----------------------
输出:(可以看到arr1与arr2的地址是一样的,本质上还是一个数组)
[I@4eec7777
[I@4eec7777
JVM内存区域

值传递与引用传递

值传递:

拷贝值,会新建一个空间

示例:

int n1 = 10;
int n2 = n1;
n2 = 80;

图示:

引用传递:

拷贝地址,不会新建空间

代码见上文

图示:


3.数组拷贝

for循环遍历拷贝即可:

// 数组拷贝
int[] a1 = {1,2,3};
int[] a2 = new int[arr1.length]; // 开辟一个新的数组空间
for (int i = 0; i < a1.length; i++) {
    a2[i] = a1[i];
}
for (int i = 0; i < a1.length; i++) {
    System.out.println(a2[i]);
}

4.For-Each 循环

JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

语法格式如下:

for(type element: array)
{
    System.out.println(element);
}

示例:

int[] dogs = {1,2,3,4,5};
for (int dog : dogs) {
    System.out.println(dog);
}

5.二维数组 基本使用

二维数组的基本使用示例:

// 二维数组
int[][] doubleArr = {{1,2,3},{4,5,6},{7,8,9}};
// 双重循环遍历
for (int i = 0; i < doubleArr.length; i++) {
    for (int j = 0; j < doubleArr[i].length; j++) {
        System.out.println(doubleArr[i][j]);
    }
}

动态创建二维数组:

// 动态创建二维数组,这个数组的第一维度没有指定大小,需要动态开辟空间
int[][] arr = new int[3][];
内存分析

当我们创建一个二维数组时,它在JVM内存中是这样表示的:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号