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。

相关内容

热门资讯

今天,宜爬“山”! 转自:珠海发布大家都说,父爱如山,母爱又何尝不是!它以山的姿态站在我们的人生坐标里,它用山的沉默垒出...
汽车车门把手将迎来国家标准,释... 转自:新华网  新华社北京5月10日电 题:汽车车门把手将迎来国家标准,释放什么信号?  新华社记者...
10日付费短剧热度大盘5650... 来源:新腕儿今天发布的是昨天(5月10日)短剧付费大盘日榜,整体大盘热度值为5650万。特别声明:以...
漂泊 53 年,苏联金星探测器... IT之家 5 月 11 日消息,俄罗斯国家航天集团宣布,近地空间危险情况自动预警系统监测显示,宇宙-...
加州州长再就关税批评特朗普政府 转自:海客新闻 【#加州州长再就关税批评特朗普政府#】#...
都有数|玩儿着就能挣钱?国家认... 转自:北京日报客户端人社部日前公示拟新增无人机群飞行规划员、装修管家等17个新职业,以及黄金鉴定估价...
我爱你,不止今天! 咿呀学语时当我第一次模糊地喊出“妈妈”你尚且青涩的眼眸中亮起柔软的光长大离家后一声“妈妈”成了电话里...
焦点访谈 | 突围拓展多元市场... 来源:央视网 央视网消息(焦点访谈):当前我国的外贸行业正面临前所未有的挑战。美国肆意挥舞关税大棒,...
雨水按下暂停键 阳光重返天气舞...     昨日19时许,南宁城区迎来降雨,体感稍凉。    本报记者宋延康 摄  本报讯(记者赵金玲)...
科普大篷车进乡村 科技体验零距...     科技辅导员为学生讲授科技知识。    本报通讯员肖重虎 摄  本报讯(记者凌剑伊 通讯员蒙蓓...
镇江人才吸引力升至全国37位 金山网讯 5月9日,智联招聘旗下专业研究机构智联研究院联合“泽平宏观”正式发布《中国城市人才吸引力排...
【加快落实“五大任务” 推动高... 来源:内蒙古新闻网-《内蒙古日报  5月7日,在位于乌兰察布市四子王旗忽鸡图乡小东营村灌木林退化修复...
时政微纪录丨习主席的俄罗斯时间 来源:央视新闻客户端 应俄罗斯联邦总统普京邀请,国家主席...
常见故障100%识别 我国货运... 记者今天(11日)从国家能源集团获悉,我国货运铁路首套智能巡检机器人在河北沧州投用,这对促进我国铁路...
中共太原市委组织部公示 现对市委研究拟任职干部予以公示。郭强,男,汉族,1981年10月生,在职大学,中共党员,现任太原物产...
苏丹一州首府遭无人机袭击,20... 苏丹政府当地时间10日说,苏丹北科尔多凡州首府欧拜伊德市当天遭无人机袭击,造成20名囚犯死亡。苏丹文...
陈钧书画金石题跋艺术作品展在铜...   本报讯 (记者 吴洋凯)5月7日,由铜川书画院主办,铜川书画公园文化艺术有限公司承办的“砚耕四十...
花季少女被限制高消费,原因竟然... 转自:上观新闻2024年的夏天,大一学生小赵攥着身份证站在高铁站售票厅,屏幕上“无法购买高铁票”的提...
新职业新工种,开启无限可能! 转自:新华网 早上叫醒你的不是闹钟,可能是睡眠健康管理师...
政策一经出台,便在金融市场激起... 2025 年 5 月 7 日,中国人民银行今日向市场释放重磅政策组合拳。潘功胜行长在国务院新闻办发布...