Java-数组的定义和使用

2023-10-26

一,数组的基本用法
1, 什么是数组
数组本质上就是让我们能 “批量” 创建相同类型的变量.
2, 创建数组
// 动态初始化 数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
// 静态初始化 数据类型[] 数组名称 = { 初始化数据 };
代码示例

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

3, 数组的使用
代码示例: 获取长度 & 访问元素

int[] arr = {1, 2, 3}; 
// 获取数组长度 
System.out.println("length: " + arr.length); 
// 执行结果: 3 
// 访问数组中的元素
System.out.println(arr[1]); // 执行结果: 2 
System.out.println(arr[0]); // 执行结果: 1
arr[2] = 100; 
System.out.println(arr[2]);

二,数组作为方法的参数
.1 .基本用法
代码示例: 打印数组内容

 int[] arr = {1, 2, 3}; 
 for (int i = 0; i < arr.length; i++) { 
    System.out.println(arr[i]);
 }
 // 执行结果 123
 int[] arr = {1, 2, 3};
 for (int x : arr) { 
     System.out.println(x);  
 }// 执行结果 123
 public static void main(String[] args) {
     int[] arr = {1, 2, 3};
     printArray(arr);
 }
 public static void printArray(int[] a) {
     for (int x : a) { 
        System.out.println(x);
     }
  }

2,什么是引用?
引用相当于一个 “别名”, 也可以理解成一个指针.
创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址.
3,初识 JVM 内存区域划分
1)程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址.
2)虚拟机栈(JVM Stack): 重点是存储局部变量表(当然也有其他信息). 我们刚才创建的 int[] arr 这样的存储地址的引用就是在这里保存.
3)本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的. 堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2, 3} )
4)方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据. 方法编译出的的字节码就是保存在这个区域.
5)运行时常量池(Runtime Constant Pool): 是方法区的一部分, 存放字面量(字符串常量)与符号引用. (注意 从 JDK
1.7 开始, 运行时常量池在堆上)

三,数组作为方法的返回值
代码示例: 写一个方法, 将数组中的每个元素都*2

// 返回一个新的数组 
class Test {
    public static void main(String[] args) { 
       int[] arr = {1, 2, 3};
       int[] output = transform(arr); 
       printArray(output); 
    }
    public static void printArray(int[] arr) { 
       for (int i = 0; i < arr.length; i++) {
          System.out.println(arr[i]);
       }
    }
    public static int[] transform(int[] arr) { 
       int[] ret = new int[arr.length]; 
       for (int i = 0; i < arr.length; i++) { 
          ret[i] = arr[i] * 2;
       }
          return ret;
    }
 }

这样的话就不会破坏原有数组了.
另外由于数组是引用类型, 返回的时候只是将这个数组的首地址返回给函数调用者, 没有拷贝数组内容, 从而比较高
效.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java-数组的定义和使用 的相关文章

随机推荐

  • 程序流图画法详解

    程序流图一般是软件评测师考试中的第一道大题 同时也是必考大题 多层嵌套的循环程序绘制流程图时十分繁琐 本人在经过练习真题以及查阅资料后有了一些绘制控制流图的小经验 如有不对请指出 下面以2017年的软件评测师下午第一套真题为例进行讲解 1
  • 3.Spring Boot + Security初步使用(覆盖配置的两种方式 配置类和XML注入以自定义页面为例)

    1 Spring Security简介 Spring Security 是一个基于 Spring 框架 提供了一套 Web 应用安全性的完整解决方案 一般来说 Web 应用的安全性包括用户认证 Authentication 和用户授权 Au
  • c++ 错误收集

    1 clang tidy Non const lvalue reference to type basic string lt gt cannot bind to a temperary of type basic string lt gt
  • pandas把一个excel的特定数据写到另一个excel_pandas指南:做更高效的数据科学家...

    摘要 Python是开源的 所以有很多开源固有的问题 如果你是Python新手 很难知道针对特定任务的包哪个是最好的 你需要有经验的人来告诉你 今天我要告诉你们的是 在数据科学中 有一个软件包是你们绝对需要学习的 那就是pandas 而pa
  • SQl查询数据库表名、表的列名

    SQl查询数据库表名 表的列名 1 获取所有用户名 SELECT name FROM Sysusers where status 2 and islogin 1 islogin 1 表示帐户islogin 0 表示角色status 2 表示
  • 如何使用聊天GPT自定义说明

    推荐 使用 NSDT场景编辑器 快速搭建3D应用场景 OpenAI ChatGPT正在席卷全球 一周又一周 更新不断提高您可以使用这种最先进的语言模型做什么的标准 在这里 我们深入研究了OpenAI最近在ChatGPT自定义指令上发布的公告
  • 搭建eureka集群

    使用spring boot1 5 16版本 spring cloud版本选择Edgware SR4 添加eureka server的依赖
  • 蓝桥杯16届第十题——最大比例(处理double类型,等比数列,预处理)

    最大比例题目 X星球的某个大奖赛设了M级奖励 每个级别的奖金是一个正整数 并且 相邻的两个级别间的比例是个固定值 也就是说 所有级别的奖金数构成了一个等比数列 比如 16 24 36 54 其等比值为 3 2 现在 我们随机调查了一些获奖者
  • amd cpu不能在cmd环境下运行java代码_2020重新出发,JAVA基础,多线程编程

    多线程编程 如果一次只完成一件事情 很容易实现 但是现实生活中很多事情都是同时进行的 所以在 Java中为了模拟这种状态 引入了线程机制 简单地说 当程序同时完成多件事情时 就是所谓的多线程程序 多线程的应用相当广泛 使用多线程可以创建窗口
  • Chrome浏览器同一窗口每次请求sessionId不同问题的一种解决办法分享

    最近在调试一些浏览器请求页面的时候 在其他浏览器都正常 唯独只有谷歌chrome浏览器不行 问题的最直接现象就是每次请求在后台过滤器里通过request getSession getId 拿到的id都是不同的 导致后面出现一些不正常的结果
  • 大数据:图数据库介绍--v1.0

    数据库数据模型大体分为两类 关系型数据库 和 非关系型数据库 分类一 关系型数据库 代表 Oracle MySQL SqlServer 分类二 NoSQL非关系型数据库 分为四种 键 值存储库 Key Value stores BigTab
  • SQL Server无法连接到本地数据库

    当我们超过一天没有使用SQL Server时 可能会出现无法连接到本地数据库的现象 如下图 无法连接到 其他信息 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误 未找到或无法访问服务器 请验证实例名称是否正确并且
  • 15个C++项目列表

    实验楼上有很多C 的实战项目 从简单到进阶 学习每个项目都可以掌握相应的知识点 如果你还是C 新手的话 那么这个C 的项目列表你可以拿去练手实战开发 毕竟学编程动手实践是少不了的 如果你不知道C 可以用来做哪些项目 可以应用在哪些地方 那么
  • 从 相对路径 说开来(从C++到Qt)

    在Qt论坛经常看到网友抱怨 QPixmap dbzhang800 png 加载图片不成功 QFile dbzhang800 txt 打开文件失败 遇到这种问题 我一般回答 请注意区分进程的 工作目录 与程序所在的目录 但这种回答似乎还是显得
  • paddleocr np.array(padding.Execute(distance)[0]) IndexError: list index out of range

    报错 File I project jushi shuini PaddleOCR release 2 4 ppocr data imaug make border map py line 61 in call self draw borde
  • 容器部署HertzBeat监控系统

    HertzBeat是开源的监控系统 支持网站 API PING 端口 数据库 操作系统等监控类型 拥有易用友好的可视化操作界面的开源监控告警项目 同时也支持邮件 钉钉 微信 飞书 等告警通知 环境和配置要求 软件类别 软件名称与版本 配置要
  • 防御第八次作业

    一 根据以下问题总结当天内容 1 什么是数据认证 有什么作用 有哪些实现的技术手段 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密 数字签名和签名验证 确保网上传递信息的安全性 完整性 使用了数字证书 即使您
  • 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友 拥有这一篇博文就够了 深入浅出 里面包含了寄存器 外部中断 定时器中断 中断嵌套等的讲解 还有代码实战 快一万字 写得不容易 还请大家点赞支持一下 后续持续更新 一 寄存器 1 什么是寄存器 2 寄存器怎么用 二
  • Pcap文件详解

    Pcap文件详解 一 简介 pcap文件是常用的数据报存储格式 可以理解为就是一种文件格式 只不过里面的数据是按照特定格式存储的 所以我们想要解析里面的数据 也必须按照一定的格式 普通的记事本打开pcap文件显示的是乱码 用安装了HEX E
  • Java-数组的定义和使用

    一 数组的基本用法 1 什么是数组 数组本质上就是让我们能 批量 创建相同类型的变量 2 创建数组 动态初始化 数据类型 数组名称 new 数据类型 初始化数据 静态初始化 数据类型 数组名称 初始化数据 代码示例 int arr new