Java 数组的基本用法
创始人
2024-05-29 16:41:32
0

Java 数组的基本用法

    • 1 数组的基本理论
    • 2 数组的创建
      • 2.1 一维数组的创建
          • 2.1.1数组的声明:
          • 2.1.2 数组的初始化
            • 静态初始化:
            • 动态初始化:
          • 2.1.3 数组的访问
      • 2.2 二维数组的创建
    • 2 数组的内存分析
    • 3 数组的操作(Arrays的使用)
      • 3.1 填充替换数组元素
      • 3.2 数组排序
      • 3.3 将数组的元素以字符串的形式返回
      • 3.4 查询数组

1 数组的基本理论

数组是最为常见的一种数据结构,是相同类型的用一个标识符封装到一起的基本类型数据序列或对象序列。实质上,数组是一个简单的线性序列,因此访问速度很快。

数组是具有相同数据类型的一组数据的集合。 例如,水果的集合:苹果、梨、桃、葡萄等;编程语言的集合:Java、Python、C/C++、C#、PHP等。在程序设计中,可以将这些集合称为数组。数组中的每个元素具有相同的数据类型。

2 数组的创建

2.1 一维数组的创建

2.1.1数组的声明:
数组元素类型 数组名字[ ];
数组元素类型[ ] 数组名字;

符号“[ ]”指明该变量是一个数组类型变量。单个“[ ]”表示要创建的数组是一个一维数组。

例:

 int arr[];int[] arr;  //声明int型数组,数组中的每个元素都是int型数值
2.1.2 数组的初始化

初始化:就是在内存中为数组分配内存空间,并将数据存入。

静态初始化:

格式:

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

例:

int[] arr=new int[]{1,2,3};
double[] arr2=new double[]{1,2,3};

由于上述表述比较复杂,因此在Java中还有一种简化表示。

简化格式:

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

例:

 int[] arr={1,2,3};double[] arr2={1,2,3};
动态初始化:

格式:

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

例:

int[] arr=new int[10];
double[] arr2=new double[10]; //定义数组长度为10的数组
2.1.3 数组的访问

for语句:

public class test {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}

foreach语句:

public class test {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};for (int i:arr) {System.out.print(i+" ");}}
}
1 1 2 3 5 8 13 21 34 

2.2 二维数组的创建

二维数组可以看作是特殊的一维数组,因此二维数组的创建与一维数组很相似。

int arr[][] = {{1,2},{3,4}};//静态初始化
int arr2 = new int[2][4]    //动态初始化

for语句:

public class test {public static void main(String[] args) {int arr[][] = {{1,2},{3,4}};for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j] + " ");}}}
}

foreach语句:

public class test {public static void main(String[] args) {int arr[][] = {{1,2},{3,4}};for (int[] x : arr) {for (int y : x) {System.out.print(anInt + " ");}}}
}
1 2 3 4 

2 数组的内存分析

数组是一个引用数据类型,他的元素可以是任何数据类型包括基本数据类型,引用数据类型。数组长度确定后是不可以修改的。数组里的数据是有序的排列,创建一个数组时会在内存中开辟连续的空间,数组名是数组的首地址,就是指向数组中第一个元素的地址。

public class test {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};double[] arr1={3.14,0.681,37.78,0.0255};System.out.println(arr); //访问数组的地址值System.out.println(arr1);}
}
[I@119d7047
[D@776ec8df

这串地址值作为int类型数组在内存中存放的地址。其中有几个[就表示几维数组,此处一个[就表示一维数组,I就表示是一个int类型,后面的数字就表示一个16进制的数字,中间的@符号起到分隔作用。

JVM体系结构:
在这里插入图片描述
栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
堆:存储对象或数组,new来创建,都存储在堆内存
方法区:存储可以运行的class文件。
本地方法栈:管理本地方法的调用,JVM在使用操作系统功能时使用。
程序计数器:存放下一条指令所在单元的地址的地方。
例如:
在这里插入图片描述

3 数组的操作(Arrays的使用)

3.1 填充替换数组元素

数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成对任意类型的数组元素的替换。
格式:

fill(int[] a,int fromIndex,int toIndex,int value)1.a:要进行填充的数组。
2.fromIndex:要使用指定值填充的第一个元素的索引(包括)。
3.toIndex:要使用指定值填充的最后一个元素的索引(不包括)。
4.value:要分配给数组指定范围中的每个元素的值。

例:

import static java.util.Arrays.fill;
public class test {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};fill(arr,2,5,1000);  //索引为2~5(不含)的数替换为1000for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
1 1 1000 1000 1000 8 13 21 34 

3.2 数组排序

通过Arrays类的静态方法sort()可以实现对数组的排序。
格式:

Arrays.sort(object)object是指进行排序的数组名称

例:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import static java.util.Collections.sort;public class a {public static void main(String[] args) {List list=new ArrayList();  //可以改变大小的ArrayList数组Random b=new Random();System.out.print("排序前的数列:"+"[");for (int i = 0; i < 10; i++) {int number=b.nextInt(100);list.add(number);sort(list);System.out.print(number+",");}System.out.println("]");System.out.println("排序后的数列:"+list);}
}
排序前的数列:[8,26,42,70,37,34,19,67,97,57] 
排序后的数列:[8, 19, 26, 34, 37, 42, 57, 67, 70, 97]

3.3 将数组的元素以字符串的形式返回

toString() 将数组的元素以字符串的形式返回。

 import java.util.Arrays;
public class 实验 {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};System.out.println(Arrays.toString(arr));}
}
[1, 1, 2, 3, 5, 8, 13, 21, 34]

3.4 查询数组

Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的索引值。
格式:

binarySearch(Object[] a, int fromIndex, int toIndex, Object key)1.a:要搜索的数组。
2.fromIndex:要搜索的第一个元素的索引(包含fromIndex)。
3.toIndex:要搜索的最后一个元素的索引(不包含toIndex)。
4.key:要搜索的值。

如果key包含在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。
例:

import java.util.Arrays;
public class 实验 {public static void main(String[] args) {int[] arr={1,1,2,3,5,8,13,21,34};int index=Arrays.binarySearch(arr,0,5,5);int index1=Arrays.binarySearch(arr,0,5,10);System.out.println(index);System.out.println(index1);}
}
4
-6

上面的代码中变量index的值是元素“5”在数组arr中索引在0~5内的索引位置。index的值是“5”的索引位置4。变量index的值是元素“10”在数组arr中索引不在0~5内的索引位置。元素“10”应该在“13”的前面,因此插入点应是元素“13”的索引值6,所以index的值是-6。

相关内容

热门资讯

快评丨放大区位优势 发展赛事经... 转自:河北新闻网2025京津冀第七届公开水域游泳挑战赛暨千人横渡滹沱河活动,1000多名来自京津冀等...
纺织工业碳排放强度大幅降低 记者日前从中国纺织工业联合会获悉,近两年纺织服装行业平均碳排放强度降幅超14%,行业绿色发展步伐加快...
马里多地遇袭 军方打死80多名... 新华社达喀尔7月1日电(记者司源)巴马科消息:马里军方1日发表声明说,马里中部和西部多地当天遭到恐怖...
民航局回应充电宝新规未设缓冲期 【#民航局回应充电宝新规未设缓冲期#】日前,中国民航局发布紧急通知,自6月28日起,禁止旅客携带没有...
【方正金工】6月行业组合战胜基... (转自:市场投研资讯)本文来自方正证券研究所于2025年7月1日发布的报告《6月行业组合战胜基准0....
兰州市城关区今年将试点“均衡入... 城关区将试点“均衡入学”“派位入学”每日甘肃网7月2日讯 据兰州晚报报道 2025年城关区小学招生方...
“最讨厌的功能终于取消了”,微... 7月1日下午,#微信可以不接收共同好友点赞提醒了#冲上热搜第一。近日,微信朋友圈灰度上线“不接收共同...
扬帆新材:暂未了解到产品可直接... 投资者提问:行业内众多企业都在积极探索巯基化合物在固态电池中的应用。扬帆新材在巯基化合物应用于固态电...
国内成品油价“三连涨” 机构:... 中国网财经7月2日讯 国家发展改革委7月1日发布通知,根据近期国际市场油价变化情况,按照现行成品油价...
国泰海通证券:长期看好固态电池... 每经AI快讯,国泰海通证券研报表示,固态电池具备高能量密度、高安全性,能够满足车端、低空、人形机器人...