java语言中数组中的每个数据称为_一、Java语言基础(4)_方法和数组——数组...

2024-02-12 22:10

本文主要是介绍java语言中数组中的每个数据称为_一、Java语言基础(4)_方法和数组——数组...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2018-04-25

不悔梦归处,只恨未尽心

数组

一、一维数组

597f474b8677fdd1fad844ceb2314684.png

数组的含义:具有相同类型的多个变量按有序形式组织起来的数据形式。(数组是用来存储固定大小的同类型元素。)

数组的定义:

方式1(推荐使用):数组元素类型[] 数组名称;  如:int[] ages;  (可以把 int[] 看成一个整体,看成一种数据类型,int类型的数组)

方式2:数组元素类型 数组名称[];  如:int ages[];

数组必须初始化才能使用,因为初始化表示在内存存中分配空间。

3.数组的初始化:

数组是定长的:一旦初始化完成,数组的长度(数组元素个数)就固定了,不能改变。如果需要更改,只能重新初始化。

88be7daa206eebf8e5982fcde39c3ef0.png

静态初始化

由程序员为每一个数组元素设置初始值,而数组的长度由系统自动分配

语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,...};  new关键字:在堆空间开辟一块内存区域,用来存储数据。

举例:int[] num = new int[]{1,3,5,7,9};

简单写法(必须申明的同时并初始化,不能先声明后初始化):int[] num = {1,3,5,7,9};

动态初始化

由程序员设置数组元素个数(数组长度),而每一个数组元素的初始值由系统决定。

语法:数组元素类型[] 数组名 = new 数组元素类型[length];

举例:int[] num = new int[100];

4.静态初始化内存分析

0aefcac9530dd050abc98110324f4cc9.png

5.动态初始化内存分析

63a27260d34eaafb17204bbf8f2320d0.png

6.数组的基本操作

获取数组元素

元素类型 变量 = 数组名[index];  index表示索引

设置元素

数组名[index] = 值;

遍历数组

建议使用for循环遍历

数组长度

int num = 数组名.length;  (length是属性,不是方法)

索引范围

[0,length-1]从0开始,逐一递增

数组基本操作的代码:

1 //数组的基本操作

2

3 classArrayDemo4 {5 public static voidmain(String[] args){6

7 int[] num1 = new int[]{1,3,5,7,9};8

9 System.out.println("数组的长度=" +num1.length);10 System.out.println("数组第一个元素=" + num1[0]);//获取数组元素11

12 //修改(设置)num1数组的第一个元素

13 num1[0] = 100;14 System.out.println("数组第一个元素=" + num1[0]);//获取数组元素

15

16 System.out.println("----------------------------");17

18 //遍历数组

19 System.out.println("数组第一个元素=" + num1[0]);20 System.out.println("数组第二个元素=" + num1[1]);21 System.out.println("数组第三个元素=" + num1[2]);22 System.out.println("数组第四个元素=" + num1[3]);23 System.out.println("数组第五个元素=" + num1[4]);24

25 System.out.println("----------------------------");26

27 //使用for循环遍历数组

28 for(int index = 0; index < num1.length; index++){29 System.out.println(num1[index]);30 }31 }32 }

输出结果:

0c8e44bba83ea39a20de0d9eaa2468a0.png

7. 操作数组常见异常

NullPointerException:空指针异常(空引用异常)

当数组没有初始化,就直接操作数组,就会出现空指针异常

如: int[] bs = null;

System.out.println(bs.length);

ArrayIndexOutOfBoundsException:数组的索引越界异常

如: int[] a = {100};

System.out.println(a[-1]);

8.获取数组最大和最小元素

输出结果:10

1 classArrayDemo22 {3

4 //获取数组最大元素

5 public static int getMax(int[] num){6 int max = num[0];//假设第一个元素是最大值

7 for(int index = 1; index < num.length; index++){8 if(num[index] >max){9 max = num[index]; //把最大值存储在max变量里

10 }11 }12 returnmax;13

14 }15

16 public static voidmain(String[] args)17 {18

19 int[] num = new int[]{-3,0,2,1,10};20

21 int max =ArrayDemo2.getMax(num);22 System.out.println(max);23 }24 }

9.按格式打印数组元素

2d2786d67ef4091543bb7753c3e2b835.png

1 classArrayDemo22 {3

4

5

6 public static voidmain(String[] args)7 {8

9

10 String[] arr = {"A","B","C","D","E"};11 ArrayDemo2.printArrary(arr);12 }13 static voidprintArrary(String[] arr){14 //如果数组为空,则输出null

15 if(arr == null){16 System.out.println("null");17 return; //结束方法

18 }19

20 String ret = "[";21 //遍历数组

22 for(int index = 0; index < arr.length; index++){23 ret = ret +arr[index];24 //如果当前index不是最后一个索引,则拼接“,”

25 if(index != arr.length-1){26 ret = ret + ", ";27 }28 }29 ret = ret + "]";30

31 System.out.println(ret);32 }33 }

输出结果:

277eb173600733010649bdddce6aa28b.png

10.逆序排列数组元素

1 classArrayDemo22 {3

4 public static voidmain(String[] args)5 {6 String[] arr = {"A","B","C","D","E"};7 ArrayDemo2.printArrary(arr);8 String[] newArr =ArrayDemo2.reverse(arr);9 ArrayDemo2.printArrary(newArr);10 }11 static voidprintArrary(String[] arr){12 //如果数组为空,则输出null

13 if(arr == null){14 System.out.println("null");15 return; //结束方法

16 }17

18 String ret = "[";19 //遍历数组

20 for(int index = 0; index < arr.length; index++){21 ret = ret +arr[index];22 //如果当前index不是最后一个索引,则拼接“,”

23 if(index != arr.length-1){24 ret = ret + ", ";25 }26 }27 ret = ret + "]";28

29 System.out.println(ret);30 }31

32 staticString[] reverse(String[] oldArr){33

34 //创建一个新数组,用来存放就数组逆序之后的元素

35 String[] newArr = newString[oldArr.length];36 for(int index = oldArr.length-1; index >= 0; index--){37 newArr[oldArr.length-1-index] =oldArr[index];38 }39 returnnewArr;40 }41 }

输出结果:

c6d59057d7d650414e02d3b026c0b76a.png

11.元素出现索引(线性搜索)

classArraySearchDemo

{public static voidmain(String[] args)

{int[] arr = {10,20,30,10,50,-30,10};int beginIndex = ArraySearchDemo.indexOf(arr,10);

System.out.println(beginIndex);int endIndex = ArraySearchDemo.lastIndexOf(arr,10);

System.out.println(endIndex);

}/*查询key元素在arr数组中第一次出现的位置

参数:

arr:从哪一个数组中去做查询

key:当前去查询的元素

返回:如果key存在于arr数组中,则返回第一次出现的索引

如果key不存在于arr数组中,则返回-1*/

static int indexOf(int[] arr,intkey){for(int index = 0; index < arr.length; index++){if(arr[index] ==key){returnindex;

}

}return -1;

}//获取key参数在arr数组中最后出现的索引位置

static int lastIndexOf(int[] arr,intkey){for(int index = arr.length-1; index >= 0; index--){if(arr[index] ==key){returnindex;

}

}return -1;

}

}

输出结果:

3ad63802797e5f2abac04f484b40697f.png

这篇关于java语言中数组中的每个数据称为_一、Java语言基础(4)_方法和数组——数组...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703729

相关文章

JVM(6)

JMM JVM定义了一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果.在此之前,C/C++直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台下的内存模型差异,有可能导致程序在一套平台上并发完全正常,而在另一套平台上并发访问经常出错. 主内存和工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在

58、Visual studio 2019/2022+C#传递Mat数据给C++动态包处理,并将处理结果Mat返回给C#显示、保存

基本思想:使用c#调用c++的动态包,进行图像帧传入和处理,然后返回结果;这样就可以独立的写c++算法,使用c#进行前端界面和布局开发了  注意:vs2022的安装CSharp只能从命令行安装 一、创建C#工程  然后简单测试一下工程  二、在C#中先把OpenCV调用起来 (1)在C#中打开搜索NuGet(库程序包管理器)

55、进行关键数据解析和boost函数应用

基本思想:最近涉及到一个项目,需要应用到boost的库使用,具体厂家提供数据文件,因为涉密原因,无法提供,因此只涉及代码编写和效果展示 #include <iostream>#include <vector>#include <fstream>#include "opencv2/core.hpp"#include "opencv2/imgproc.hpp"#include "opencv

基于Springboot的人事管理系统 (有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的人事管理系统 (有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring + SpringBoot + Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的

数据开发流程图

背景:公司处于数仓开发的起步阶段,需要构建一个数据开发的流程 分析:原有业务采集混乱,不受调度管理监控,数据不存储不统一,需要频繁转换 行动:改造原有业务,数据开发流程图如下 结果:统一了数据采集方式和数据入仓方式   数仓分层架构图:

js字符串转json的3种方法

1.eval方式解析 function strToJson(str){var json = eval("(" + str + ")");return json;}console.log(strToJson("{'int':1, 'string':'demo'}")); 运行截图: 注: 记得别忘了str两旁的小括号。 永远不要使用 eval !!! eval() 是一个危险的函数, 它

前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

一、前缀和的原理和特点 prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足: prefix有一个重要的特性,可以用于快速生成prefix: prefix可以O(1)的求数组a[]的一段区间的和: 但是注意,prefix是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素在区间和查

Linux系统源代码数据防泄密加密软件

数据防泄密系统 是一套从源头上保障数据安全和使用安全的软件系统。包含了文件透明加解密、内部文件流转功能、密级管控、离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。从根本上严防信息外泄,保障信息安全。 www.weaem.com 功能介绍: 文件透明加密模块是防止电子文件由于单位内部员工泄露而开发的内核驱动层加密、图纸加密、文档加密系统。在不影响员工对

UI设计师需要掌握的平面设计基础!

平面设计中牵涉到的物料(印刷品)设计非常多,这里给大家简单梳理一些比较常见的类型,让大家有个大概的认知。(来源:千锋UI) ​   画册:一般为产品手册和企业宣传册等,起到宣传产品、品牌形象的目的。装订方式有骑马钉、蝴蝶钉,无线胶装、琐线胶装、精装。设计的时候页数能被 4 整除,骑马钉必要要是 4 的倍数,不然就会出现空白页,浪费成本。   单页/折页:这个在市场推广中非常常见,单页分为

第1讲 | 谈谈你对Java平台的理解?

谈谈你对Java平台的理解? “Java是解释执行”,这句话正确吗? Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力; 另外就是垃圾收 集(GC, Garbage Collection), Java通过垃圾收集器(Garbage Collector)回收分配内存,大部分