当前位置: 首页 > news >正文

java(3)数组的定义与使用


目录

1.前言

2.正文

2.1数组的概念

2.2数组的创建与初始化

2.2.1数组的创建

2.2.1数组的静态初始化

2.2.2数组的动态初始化

2.3数组是引用类型

2.3.1引用类型与基本类型区别

2.3.2认识NULL

2.4二维数组

2.5数组的基本运用

2.5.1数组的遍历

2.5.2数组转字符串

2.5.3矩阵的转置

2.5.4查找某元素

3.小结


1.前言

大家好,欢迎大家继续前来学习java的基本语法,今天要分享的内容是数组的定义与使用,数组在代码的实现过程中是非常常见的,因此我们需要熟练掌握数组的相关应用。

2.正文

2.1数组的概念

在Java中,数组是一种引用数据类型,用于存储固定大小的同类型元素的集合。数组可以存储任何类型的数据,比如整数、浮点数、字符、对象甚至其他数组。

数组的有以下三个特点:

  • 存放的数据类型均相同。
  • 空间是连续存放的。
  • 每一个空间都有自己对应的地址编号

2.2数组的创建与初始化

2.2.1数组的创建

创建数组时,需要指定数组的大小。数组的大小在创建时确定,之后不能改变。例如,创建一个包含10个整数的数组:

int[] Array = new int[10];

2.2.1数组的静态初始化

静态初始化是在声明数组的同时,直接指定数组中每个元素的初始值。静态初始化时,数组的大小是确定的,并且每个元素都会被初始化为指定的值。如果初始化的元素少于数组的长度,那么未指定的元素会被默认初始化为其类型的默认值(例如,整数默认为0,对象引用默认为null)。如果初始化的元素多于数组的长度,编译器会报错。

int[] myArray = new int {10, 20, 30, 40, 50}; // 静态初始化

2.2.2数组的动态初始化

动态初始化是在声明数组时,只指定数组的大小,而不指定每个元素的初始值。在动态初始化时,数组的大小是确定的,但是数组中的每个元素都会被自动初始化为其类型的默认值。

int[] myArray = new int[5]; // 动态初始化,数组大小为5

至于究竟选择那种初始化方式取决于每个人的代码习惯或者运用场景,这里再讲几个需要注意的点:

  •  静态初始化虽然没有指定数组长度,但在编译执行的过程中会根据元素数量来确定数组长度。
  • 初始化时数组内的数据类型一定要放置相同。
  • 静态初始化可以简写成int[] myArray ={10, 20, 30, 40, 50};,不影响结果。

2.3数组是引用类型

2.3.1引用类型与基本类型区别

数组是我们在java中接触到的一个引用数据类型,接下来我们就来详细讲解引用数据类型与基本数据类型的练习与区别。

基本数据类型:

  • 内存分配:基本数据类型直接存储在栈上,它们的大小是固定的。
  • 直接操作:基本数据类型直接存储数据值,不需要通过引用来访问。

引用数据类型:

  • 内存分配引用数据类型存储在堆上,而引用变量本身(即对象的地址)存储在栈上。
  • 间接操作:引用数据类型通过引用(即内存地址)来访问数据,而不是直接存储数据。

引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址,引用变量便可以去操作对象。有点类似C语言中的指针,但是Java中引用要比指针的操作更简单。

2.3.2认识NULL

null Java 中表示 " 空引用 " , 也就是一个不指向对象的引用。
  • 引用数据类型null 只能用于引用数据类型(如类、接口、数组),不能用于基本数据类型。

  • 默认值:引用类型的变量在声明时,如果没有显式初始化,那么它的默认值就是 null

2.4二维数组

二维数组由多个一维数组组成,可以视为数组的数组,下面是二维数组的基础概念与操作。

声明二维数组需要指定两个维度,即行数和列数。例如,声明一个整型的二维数组:

int[][] myArray;

二维数组的初始化与一维数组相同,也有静态初始化与动态初始化:

int[][] myArray = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};

int[][] myArray = new int[3][3]; // 创建一个3行3列的二维数组

至于二维数组的运用,相信你看完下文的应用就会有所了解了。

2.5数组的基本运用

2.5.1数组的遍历

int[] array = {1,2,3,4,5};
for(int i = 0;i<array.length;i++){System.out.println(array[i]);
}

2.5.2数组转字符串

int[] array = {1,2,3,4,5};
String array1 = Arrays.toString(array);
System.out.println(array1);

 这里我们使用Arrays.toString()方法使得数组被我们转换成字符串类型方便打印。

2.5.3矩阵的转置

int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0;i < 3;i++){for(int j = 0;j < 3;j++){System.out.print(array[i][j]+" ");}system.out.println();
}//打印原数组
System.out.println();
for (int i = 0;i < 3;i++){for(int j = 0;j < 3;j++){System.out.print(array[j][i]+" ");}System.out.println();
}//转置

2.5.4查找某元素

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[]array = {1,2,3,4,5,6,7,8,9};System.out.println("请输入待查找的数字");int n = scanner.nextInt();int flag = 0;//判断是否找到for(int i = 0;i < array.length;i++){if(n==array[i]){flag = 1;System.out.println("该数在"+ i + "个位置");break;}}if(flag==0){System.out.println("未找到该数");}}

3.小结

今天关于java数组的分享到这里就结束了,过几天就该到java的一个重难点,类和对象了,觉得有收获的小伙伴以及想要继续学习的朋友可以点点关注,让我们一起加油喔。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数值实验作业(第一章)
  • 鸿蒙OpenHarmony【轻量系统内核扩展组件(动态加载)】子系统开发
  • Python青少年简明教程目录
  • 混合开发应用侧-JSBridge,在加载的网页中调用原生能力
  • ARM驱动学习之7 驱动模块传参数
  • CentOS入门宝典:从零到一构建你的Linux服务器帝国
  • 64. 求 1+2+…+n
  • MOS工作的三种状态及其分析——亚阈值区(截至区),深三极管区(又叫深线性区)和饱和区
  • 基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图
  • 第五章 继承、多态、抽象类与接口 课后训练(3)
  • eureka.client.service-url.defaultZone的坑
  • Java是怎么处理死锁的
  • Python|OpenCV-实现识别目标图像中的圆圈(20)
  • 本地部署大模型并使用知识库Windows下Ollama+Docker+MaxKB安装的记录
  • VMware虚拟机经常性卡死,打开运行一段时间后卡死,CPU占比增至100%
  • 「面试题」如何实现一个圣杯布局?
  • 【技术性】Search知识
  • ECS应用管理最佳实践
  • ES6 学习笔记(一)let,const和解构赋值
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java编程基础24——递归练习
  • java小心机(3)| 浅析finalize()
  • java正则表式的使用
  • Node 版本管理
  • oldjun 检测网站的经验
  • php中curl和soap方式请求服务超时问题
  • Promise面试题2实现异步串行执行
  • Shadow DOM 内部构造及如何构建独立组件
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue学习第二天
  • 从0实现一个tiny react(三)生命周期
  • 基于Android乐音识别(2)
  • 检测对象或数组
  • 将回调地狱按在地上摩擦的Promise
  • 今年的LC3大会没了?
  • 前端面试之CSS3新特性
  • 深入 Nginx 之配置篇
  • 《码出高效》学习笔记与书中错误记录
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​configparser --- 配置文件解析器​
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (done) 两个矩阵 “相似” 是什么意思?
  • (待修改)PyG安装步骤
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (三)c52学习之旅-点亮LED灯
  • (四)c52学习之旅-流水LED灯
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • 、写入Shellcode到注册表上线
  • .java 9 找不到符号_java找不到符号
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】