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

Java数组创建与使用

一.创建和初始化

1.数组是怎么创建的?

直接举例子:

int[] arr = new int[10];

这里只简单的举一个int开辟数组的例子。

可见java数组的创建于C语言是不同的。前面是一个int[ ]就是一个数组的数据类型,后面的arr是数组名,最后[ ]里的数字10是开辟10个这样的空间。

2.数组的初始化

数组的初始化分为两种:一种是静态初始化,一种是动态初始化。

2.1动态初始化

这种就是上面举的例子那样:

int[] arr = new int[10];

直接开辟十个空间,只指定元素个数,但不指定元素是谁。

2.2静态初始化

不需要指定元素个数,据情况而定。像这样:

int[] arr1=new int[]{1,3,2,4};
int[] arr2={1,2,3,4};

上面是完整版本,下面的arr2是上面的简化版本。

当然还可以分成两步:

int[] arr;
//arr = new int[]{1,2,3,4};
//或者arr = new int[13];

这种初始化是不行的:

int[] arr4;
arr4={1,2,3,4};
2.3如果不初始化,数组会取默认值。
类型默认值
byte0
short0
int0
long0
float

0.0f

double0.0
char/u0000
booleanfalse

二.数组的使用

遍历数组的方法

第一种,手动打出每个要访问的元素,比较笨。

第二种,用for循环遍历。

第三种,这个C语言没有,用的是for-each遍历。例子:

int[] arr = {1,2,3,4};
for(int x : arr){System.out.println(x);
}

三.数组是引用类型

1.JVM内存分布

其中方法区和堆区是由所有线程共享的数据区,剩下的三个是线程隔离的数据区。

各区的简介:

程序计数器 (PC Register): 只是一个很小的空间,保存下一条执行的指令的地址;

虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息,保存的都是与方法执行时相关的一 些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了;

本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似.,只不过保存的内容是Native方法的局部变量,在有些版本的 JVM 实现中(例如HotSpot),本地方法栈和虚拟机栈是一起的;

堆(Heap): JVM所管理的最大内存区域。使用 new 创建的对象都是在堆上保存(例如前面的new int[]{1, 2, 3} ),堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁;

方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。方法编译出的的字节码就是保存在这个区域。

2.引用数据类型

引用数据类型存储的不是变量的值,而是存储对象所在空间的地址,有点指针那味儿。

上图是两个数组演示图,arr1与arr2各自储存一个空间的地址。

上图是arr2=arr1后,两个数组储存的地址是一样的,因此指向同一个空间。

像这种情况,0X34这块空间没有引用类型指向,会被JVM垃圾回收。

相关文章:

Java数组创建与使用

一.创建和初始化 1.数组是怎么创建的? 直接举例子: int[] arr new int[10]; 这里只简单的举一个int开辟数组的例子。 可见java数组的创建于C语言是不同的。前面是一个int[ ]就是一个数组的数据类型,后面的arr是数组名,最后[…...

EMAP如何建数据源

新建数据源: EMAP底座的数据源,名称为“DB_EMAP_BIZ_BASE",不可随意更改. 新建业务系统数据源,名称为”DB_STUDY_BIZ_BASE". 支持的数据库: 支持两种类型数据库:H2 和 oracle 新建H2数据源&am…...

在 Linux 中创建文件

目录 ⛳️推荐 前言 使用 touch 命令创建一个新的空文件 使用 echo 命令创建一个新文件 使用 cat 命令创建新文件 测试你的知识 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…...

高德地图+HTML+点击事件+自定心信息窗体

代码如下 <!doctype html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scalableno, width…...

流畅的python-学习笔记_协议+继承优缺点

接口和协议 python动态语言&#xff0c;没有interface等概念&#xff0c;接口和协议方法有的也有替代品&#xff0c;所以类似于鸭子类型&#xff0c;只关注行为像鸭子&#xff0c;不关注它是不是鸭子。不是每个接口都得实现&#xff0c;这是允许的 猴子补丁 可动态给对象添加…...

哪个文件加密软件好?迅软加密软件特性解析

哪个文件加密软件好&#xff1f; 这里推荐一款好用的文件加密软件&#xff0c;迅软DSE加密软件&#xff0c;有17年的加密经验了&#xff0c;已为三十万企业解决信息安全问题。简单易用&#xff0c;兼容性强&#xff0c;各类型文件都可加密。完善的售后保障&#xff0c;各地有服…...

Ubuntu 根目录扩容

环境 物理机&#xff1a;MacBook Air M2 Sonoma 14.4.1 虚拟机&#xff1a;VMware Fusion Player 13.5.0 镜像&#xff1a;Jammy Desktop ARM64 步骤 删除所有快照&#xff0c;关闭镜像&#xff0c;在 vm 上找到该镜像的硬盘设置&#xff0c;进行扩容&#xff1b; 开启镜像&am…...

人证比对API接口如何对接

人证比对API接口全称叫人脸身份证比对API接口也叫人脸实名认证API接口、实人认证API接口&#xff0c;指的是输入姓名、身份证号码和头像照片&#xff0c;与公安库身份证头像进行权威比对&#xff0c;返回比较结果。那么人脸身份证比对API接口该如何对接呢&#xff1f; 首先我们…...

NIO(非阻塞I/O)和IO(阻塞I/O)详解

文章目录 一、NIO&#xff08;Non-blocking I/O&#xff0c;非阻塞I/O&#xff09;1、Channel&#xff08;通道&#xff09;2、Buffer&#xff08;缓冲区&#xff09;1、ByteBuffer 读取文件2、ByteBuffer 的常用方法2、ByteBuffer 的结构详解3、ByteBuffer 与字符串互转4、Sca…...

【网络】传输层的特点总结

1传输层协议 传输层主要有两个常见的协议&#xff1a;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;。TCP 提供可靠的、面向连接的通信服务&#xff0c;适用于对数据传输可靠性要求高的场景&#xff0c;如网页浏览、文件传输等。而 UD…...

Scala 多版本下载指南

Scala&#xff0c;这一功能丰富的编程语言&#xff0c;结合了面向对象和函数式编程的精华&#xff0c;为开发者提供了强大的工具来构建高效、可扩展的应用程序。随着Scala社区的不断壮大和技术的演进&#xff0c;多个版本的Scala被广泛应用于不同的项目与场景中。本文旨在为您提…...

已经安装tensorflow,仍报错No module named ‘tensorflow‘

在安装某些python虚拟环境的教程文章中&#xff0c;经常看到有评论区说安装了但是调用显示无模块&#xff0c;例如pytorch和tensorflow等等。 其实跟之前我写过的一篇文章解决方法类似&#xff0c;就是python项目中需要应用哪个虚拟环境&#xff0c;这个项目的python解释器就选…...

五一 作业

#include <iostream>using namespace std; class Num { private:int a; public:Num() {}Num(int a):a(a){}//设置a的值void set(int a){this->aa;}//1-a的和void Sum(){if(a<1){cout<<"a<1"<<endl;return;}int sum0;for(int i1;i<a;i)…...

TesseractOCR安装及使用

1. 基本概念 1.1 Tesseract Tesseract 是一款基于 C 语言开发并开源的光学识别工具&#xff0c;提供底层的文字识别能力。 1.2 Tess4J Tess4J 是对 Tesseract OCR API 的 Java 封装&#xff0c;有了 Tess4J 之后 Java 就可以直接调用本地安装的 Tesseract 进行文字识别。 …...

npm安装指定版本,npm删除依赖,卸载依赖

安装指定版本 npm中安装指定的版本号&#xff0c;格式为 ‘包名版本号’ npm install 包名称版本号 --save 例如安装jquery: npm install jquery3.0.0 --save在package.json里面可以看到对应的包&#xff1a; "jquery": "^3.0.0"注意&#xff1a;已有…...

从代码到洞察:使用API接口深入分析商品详情数据

在电子商务的世界中&#xff0c;商品详情数据是企业做出明智决策的基石。API&#xff08;应用程序编程接口&#xff09;提供了一种强大的方式来获取这些数据&#xff0c;不仅可以简化数据获取过程&#xff0c;还可以为深入分析和业务洞察提供丰富的信息。本文将探讨如何使用API…...

数字旅游以科技创新为核心:推动旅游服务的智能化、精准化、个性化,为游客提供更加贴心、专业、高效的旅游服务

目录 一、引言 二、数字旅游以科技创新推动旅游服务智能化 1、智能化技术的应用 2、提升旅游服务的效率和质量 三、数字旅游以科技创新推动旅游服务精准化 1、精准化需求的识别与满足 2、精准化营销与推广 四、数字旅游以科技创新推动旅游服务个性化 1、个性化服务的创…...

HTTP深度指南:协议结构、请求方法与状态码

详解HTTP HTTP教程HTTP消息结构HTTP状态码HTTP和HTTPS HTTP教程 HTTP&#xff08;超文本传输协议&#xff0c;HyperText Transfer Protocol&#xff09;是一种用于分布式、协作式、超媒体信息系统的应用层协议。* HTTP是一个基于TCP/IP通信协议来传递数据的&#xff08;HTML文…...

负载或反向代理服务器如何配置XFF以获取终端真实IP

文章目录 XFF介绍工作原理注意事项 配置方式1. Nginx2. HAProxy3. F5 BIG-IP4. Radware注意事项 本文介绍如何在反向代理或负载中配置XFF&#xff0c;方便后端服务获取请求来源的真实IP XFF介绍 X-Forwarded-For&#xff08;简称XFF&#xff09;是一个非标准的HTTP头部字段&a…...

Satellite Communications Symposium(WCSP2022)

1.Power Allocation for NOMA-Assisted Integrated Satellite-Aerial-Terrestrial Networks with Practical Constraints(具有实际约束的 NOMA 辅助天地一体化网络的功率分配) 摘要&#xff1a;天地一体化网络和非正交多址接入被认为是下一代网络的关键组成部分&#xff0c;为…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...