java创建数组的方式_Java创建数组的几种方式总结

2023-11-12

1、一维数组的声明方式:

type[] arrayName; 或 type arrayName[];

附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不是type类型。建议不要使用第二种方式

下面是典型的声明数组的方式:

// 声明整型数组

int[] intArray0 ;

int intArray1 [];

// 声明浮点型数组

float floatArray0 [];

float[] floatArray1 ;

// 声明布尔型数组

boolean boolArray0 [];

boolean[] boolArray1 ;

// 声明字符型数组

char charArray0 [];

char[] charArray1 ;

// 声明字符串数组

String stringArray0[];

String[] stringArray1;

// 错误的声明数组的方式,声明数组的时候不能指定其大小

// int [5] intErrorArray0;

// int intErrorArray1[5];

注:Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅只是定一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。

2、一维数组的创建

Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]

// 创建数组,如果在创建的同时不初始化数组则必须指定其大小

intArray0 = new int[3];

// 错误的创建数组的方式,如果创建数组时不指定大小则必须初始化

// intArray1 = new int[];

// 创建数组时,不指定数组大小则必须在创建的同时初始化数组

intArray1 = new int[]{0,1,2};

使用new创建数组对象但是分配数组时会自动为数组分配默认值,具体如下:

System.out.println( "intArray0[0]=" + intArray0 [0]);

floatArray0 = new float[3];

System. out.println("floatArray0[0]=" + floatArray0[0]);

boolArray0 = new boolean[3];

System. out.println("boolArray0[0]=" + boolArray0[0]);

charArray0 = new char[3];

System. out.println("charArray0[0]=" + charArray0[0]);

stringArray0 = new String[3];

System. out.println("stringArray0[0]=" + stringArray0[0]);

输出如下:

intArray0[0]=0

floatArray0[0]=0.0

boolArray0[0]=false

charArray0[0]=

stringArray0[0]=null

附:一旦使用new关键字为数组分配了内存空间,每个内存空间存储的内容就是数组元素的值,也就是数组元素就有了初始值,即使这个内存空间存储的内容是空,这个空也是一个值null。也就是说不可能只分配内容空间而不赋初始值,即使自己在创建数组对象(分配内容空间)时没有指定初始值,系统也会自动为其分配

附:诸如基础数据类型的包装类,其默认的初始化值均为null,因为基础数据类型的包装类创建的数组属于引用数组(对象数组),对象数组默认的初始化值都是null

3、一维数组的初始化

数组的初始化分为静态初始化、动态初始化和默认初始化:

静态初始化是数组在初始化时由程序员显式指定每个数组元素的初始值而数组长度由系统决定。

动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值。

a、数组静态初始化的语法格式:

arrayName = new type[]{element1,element2,element3...}

或者使用简化的语法格式:

arrayName = {element1,element2,element3...}

b、数组动态初始化的语法格式:

arrayName = new type[length];

附:静态初始化时不能指定元素个数,而动态初始化时则必须指定元素个数。静态初始化时数组能够知道元素的个数所以不需要指定,而动态初始化时数组元素个数未知因此必须指定。

// 静态初始化

int intArray2 [] = new int[]{20,21,22};

// 静态初始化简化方式

int intArray3 [] = {30,31,32};

// 动态初始化

int[] intArray4 = new int[3];

// 错误写法:静态初始化不能指定元素个数

// int intErrorArray5[] = new int[3]{50,51,52};

// 错误写法:动态初始化必须指定元素个数

// int intErrorArray6[] = new int[];

注:一维数组这一块记住两点,数组声明的时候是不能指定大小的,也就是说等号左边的中括号中不能包含数字。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。数组是对象数据类型

注:不要静态初始化和动态初始化同时使用,也就是说不要再进行数组初始化时,既指定数组长度,也为每个数组元素分配初始值。

4、数组进行动态初始化时系统分配初始值的规则

数组元素类型是基本类型中的整数类型(byte、short、int、long),则数组元素的值是0

数组元素类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0

数组元素类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'

数组元素类型是基本类型中的布尔类型(boolean),则数组元素的值是false

数组元素类型是基本类型中的引用类型(类、接口、数组),则数组元素的值是null

附:这部分源代码:

package javabase;

public class CreateArray {

public static void main(String args[]){

/**************数组的声明*******************/

// 声明整型数组

int[] intArray0 ;

int intArray1 [];

// 声明浮点型数组

float floatArray0 [];

float[] floatArray1 ;

// 声明布尔型数组

boolean boolArray0 [];

boolean[] boolArray1 ;

// 声明字符型数组

char charArray0 [];

char[] charArray1 ;

// 声明字符串数组

String stringArray0[];

String[] stringArray1;

// 错误的声明数组的方式,声明数组的时候不能指定其大小

// int [5] intErrorArray0;

// int intErrorArray1[5];

/*********************数组的创建***********************/

// 创建数组,如果在创建的同时不初始化数组则必须指定其大小

intArray0 = new int[3];

// 错误的创建数组的方式,如果创建数组时不指定大小则必须初始化

// intArray1 = new int[];

// 创建数组时,不指定数组大小则必须在创建的同时初始化数组

intArray1 = new int[]{0,1,2};

System. out.println("intArray0[0]=" + intArray0[0]);

floatArray0 = new float[3];

System. out.println("floatArray0[0]=" + floatArray0[0]);

boolArray0 = new boolean[3];

System. out.println("boolArray0[0]=" + boolArray0[0]);

charArray0 = new char[3];

System. out.println("charArray0[0]=" + charArray0[0]);

stringArray0 = new String[3];

System. out.println("stringArray0[0]=" + stringArray0[0]);

/**********************数组的初始化*************************/

// 静态初始化

int intArray2 [] = new int[]{20,21,22};

// 静态初始化简化方式

int intArray3 [] = {30,31,32};

// 动态初始化

int[] intArray4 = new int[3];

// 错误写法:静态初始化不能指定元素个数

// int intErrorArray5[] = new int[3]{50,51,52};

// 错误写法:动态初始化必须指定元素个数

// int intErrorArray6[] = new int[];

System. out.println("intArray2[0]=" +intArray2 [0]);

System. out.println("intArray3[0]=" +intArray3 [0]);

System. out.println("intArray4[0]=" +intArray4 [0]);

}

}

以上就是小编为大家带来的Java创建数组的几种方式总结的全部内容了,希望对大家有所帮助,多多支持脚本之家~

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

java创建数组的方式_Java创建数组的几种方式总结 的相关文章

  • Scala学习笔记(三)——类和对象

    3 1 类 字段和方法 类和字段与java类似 方法推荐尽量避免使用返回语句 尤其是多条返回语句 代之可以把每个方法当作是创建返回值的表达式 如下 3 2 分号推断 除非以下情况的一种成立 否则行尾被认为有分号 1 由一个不能合法作为语句结
  • 算法图解笔记(附PDF下载地址)

    算法图解笔记 分治策略 散列函数 广度优先搜索 狄克斯特拉算法 动态规划 算法图解 pdf版 链接 https pan baidu com s 1FJvija2NNmhOSpd7D3yE g 提取码 bwcm 分治策略 分治策略 分而治之
  • sqli-labs第三关

    初始页面 url入手 给个参数 id 1 回显正常 当我们给的参数是 id 1 时报错 说明他是字符型注入 原本的SQL语句加上我们给的就成了 id 1 回显报错 而且报错还多了一个括号 猜想SQL语句是这样的 select from us
  • 率先拿下512节点测试,华为GaussDB表示“很轻松”

    近日 在中国信息通信研究院和数据中心联盟发起的分布式分析型数据库测试中 华为GaussDB分析型数据库率先通过512节点集群规模能力评测 与此同时 中国某世界级银行也完成了采用华为GaussDB分布式分析型数据库对国外顶级数据仓库产品的完全
  • 每日风险投资速递(7月18日,14个互联网动态事件)

    1 传闻 阿里 魅族 传阿里9亿美元收购魅族40 股份 魅族副总裁李楠 魅族和阿里的确在酝酿合作 但融资消息并不属实 点评 顺藤摸瓜 2 动态 拍拍网 京东旗下拍拍网上线运营 对外公布在流量分发 用户分享 平台规则等多方面举措 其中PC店铺
  • 在MDK5中,warning:  #550-D: variable "d" was set but never used 的理解以及解释

    1 warning 550 D variable d was set but never used描述 变量 d 定义但从未使用 或者是 虽然这个变量你使用了 但编译器认为变量d所在的语句没有意义 编译器把它优化了 解决 仔细衡量所定义的变
  • 想跳槽涨薪的必看!2021年你与字节跳动只差这份笔记,大厂内部资料

    说白了 哪一个行业不是吃青春饭呢 无论哪个行业 大部分的从业人员都是在拿青春赌明天 而且很残忍的一个事实是 没有人的工作是不可取代的 如果你辞职 老板极力挽留 那就说明 你是那帮取代你的候选人当中最便宜的 市场在逐渐成熟 程序员的前景确实灰
  • java获取当前路径的方法

    参考网址 https www cnblogs com franson 2016 p 5728280 html 面临问题 需要在linux系统中run jar文件 运行过程包括文件IO 由于txt文件在windows系统中和在linux中路径
  • 0-1背包问题由二维数组转换为一维数组的理解

    对于0 1背包问题的话 可以使用一维数组来表示 我们要知道每一行的数据其实是依赖于上一行的数据 并不依赖于本行的数据 所以无论正序或者逆序更新一行的数据都不会需要本行的数据 但是为什么用一维数组更新时就要用逆序呢 其实是因为用一维数组更新时
  • imx8烧写Linux系统,RT-Linux在IMX8上的使用

    By Toradex胡珊逢 Real time Linux 是指在普通 Linux 内核打上 PREEMPT RT补丁后使内核满足实时要求 下面我们将使用 Apalis iMX8QM 介绍如何开启 Linux 5 4 的实时功能 首先需要下
  • 200 行代码实现一个简单的区块链

    java 区块链开发与交流群 613121183 有兴趣的也可以加下哈 提供了不少区块链资料 以后有资料可以相会共享 区块链的基础概念很简单 一个分布式数据库 存储一个不断加长的 list list 中包含着许多有序的记录 然而 在通常情况
  • 数据仓库模型设计V2.0

    一 数仓建模的意义 数据模型就是数据组织和存储方法 它强调从业务 数据存取和使用角度合理存储数据 只有将数据有序的组织和存储起来之后 数据才能得到高性能 低成本 高效率 高质量的使用 高性能 良好的数据模型能够帮助我们快速查询所需要的数据
  • 什么是vps

    在上网冲浪的时候看到网友在说一个我不认识的词汇 vps 于是在此记录下 文章目录 一 介绍 1 概念 2 特性用途 二 VPS又称为机场 三 VPS的使用 1 如何获取VPS 2 VPS品牌 总结 一 介绍 1 概念 VPS Virtual
  • 物联网平台设备运维监控报警介绍——实践类

    物联网平台监控报警简介 物联网平台除了基础的设备接入上云以及物模型建模管理外 还提供了面向运维场景的监控报警功能 帮助客户了解业务的运行情况 进行相关的运维操作 本文重点介绍相关的监控可视化及规则报警通知功能 包括 自定义的可视化监控大盘
  • 时间序列预测——LSTM模型(附代码实现)

    目录 模型原理 模型实现 导入所需要的库 设置随机数种子 导入数据集 打印前五行数据进行查看 数据处理 归一化处理 查看归一化处理后的数据 将时间序列转换为监督学习问题 打印数据前五行 划分训练集和测试集 查看划分后的数据维度 搭建LSTM
  • 通过环境变量修改java版本不生效

    通过环境变量修改java版本不生效 环境变量指向的是Java1 8版本 但是在终端下查看Java version版本是10 0 2 本机依次安装了 jdk1 8 jdk1 6 和 jdk1 7 三个版本的 jdk 由于maven打包andr
  • 基于PaddleGAN项目人脸表情动作迁移学习(二)单人表情迁移

    学习目标 学习基于PaddleGAN实现的动作迁移模型 First order motion model First order motion model原理 First order motion model的任务是image animat
  • STM32——I2C通信理论基础(1)(学习笔记)

    STM32 I2C通信理论基础 硬件层 协议层 1 I2C基本读写过程 2 I2C通信的起始和停止信号 3 数据的有效性 4 响应 前言 我们在学习stm32的时候 要想学得更好 i2c协议的学习是必不可少的 现在很多的硬件 传感器等都是用
  • Vite2.0常见配置

    一 创建 1 创建 npm init vite latest my vue app template vue ts 查看 create vite 以获取每个模板的更多细节 vanilla vanilla ts vue vue ts reac

随机推荐

  • Win10-部署java环境教程

    一提到部署环境 不得不提到java环境 现如今java遍地走 python多如狗的世界里 如果不能在本地搭建一套java环境 都不好意思说自己是搞软件的 这里呢 给大家来分享一下 如何在一个新的机器上部署java环境 首先 java环境的配
  • FPGA零基础学习之Vivado-锁相环使用教程

    FPGA零基础学习之Vivado 锁相环使用教程 本系列将带来FPGA的系统性学习 从最基本的数字电路基础开始 最详细操作步骤 最直白的言语描述 手把手的 傻瓜式 讲解 让电子 信息 通信类专业学生 初入职场小白及打算进阶提升的职业开发者都
  • mybaties总结

    1 需要导入四个坐标 分别是mybatits junit log4j mysql connection java 2 连接数据库信息 配置mapper的位置 3 映射文件namespace对应的是接口全名 id是接口里面的方法名 resul
  • BUCK电路原理及PCB布局与布线注意事项

    1 BUCK架构 Buck架构 当开关闭合的时候 当开关断开的时候 根据伏秒平衡定理可得 Vin Vout DT Vout 1 D T gt Vin Vout D lt 1 在实际DCDC应用中 当Q1闭合的时候 在图1 a中 红线示出了当
  • Java面试——缓存

    一 什么是缓存 1 缓存就是数据交换的缓冲区 称作 Cache 当某一硬件要读取数据时 会首先从缓存汇总查询数据 有则直接执行 不存在时从内存中获取 由于缓存的数据比内存快的多 所以缓存的作用就是帮助硬件更快的运行 2 缓存往往使用的是RA
  • MMRotate:旋转框检测实现过程

    MMRotate 旋转框检测实现过程 MMRotate地址 https github com open mmlab mmrotate 文档地址 https mmrotate readthedocs io en latest 一 环境搭建 1
  • Raspberry Pi Zero 单板配置手记(四)调整 TF 卡分区大小的不同方式

    RPi Zero 调整 TF 卡分区大小的不同方式 本文章为系列文章 Raspberry Pi Zero 单板配置手记 的第四篇 上一篇为 Raspberry Pi Zero 单板配置手记 三 使用 NetworkManager 管理网络连
  • 启动httpd服务:SSLCertificateFile: file ‘/var/www/miq/vmdb/certs/server.cer‘ does not exist or is empty

    启动httpd服务 SSLCertificateFile file var www miq vmdb certs server cer does not exist or is empty 启动httpd服务 失败 复制代码 root te
  • UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

    文章目录 1 什么是Assembly 2 PCG部分 2 1 Assembly变换 2 2 Point变换 2 2 1 SG CopyPointsWithHierachy 2 2 2 过滤及点变换 2 2 3 ApplyHierachy 3
  • python 获取控制台输出内容 解决中文乱码

    Python获取控制台输出 1 使用subprocess库 非实时读取 import subprocess xe subprocess run iperf3 c 127 0 0 1 p 5668 J stdout subprocess PI
  • shell实现嵌入式软件看门狗

    shell实现嵌入式软件看门狗 长时间运行的嵌入式程序 有时会因为莫名其妙的原因挂掉 这时就需要有其他的程序来一直监控我们的程序 由于监控程序属于软件层面 因此这种程序被称为 软件看门狗 这里用一个shell脚本实现该功能 这个脚本会一直监
  • Nginx Lua 实战

    在 nginx conf 中配置 在 http 节点中配置 location staticitem get default type text html content by lua file lua staticitem lua 创建 s
  • vue中axios的参数位置整理

    每次在进行前后端联调的时候 总是因为参数放不对而影响进度 我人都麻了 真的记不住 还是整理一下以便后续开发 一 vue2和vue3的接口请求头 vue 2 const res await this axios get vue 3 const
  • 数据结构课程设计——客运订票系统

    目录 2需求分析 2 1系统功能 3总体设计 3 1功能模块图 4详细设计 4 1 详细的设计思路 车次设置 订票模块的功能 退票模块的功能 管理员模块的功能 4 2 算法流程图 5编码 5 1数据结构定义 1 乘客信息 2 候补队列乘客信
  • JAVA代码审计从入门到精通2-JAVA WEB动态调试

    动态调试 在代码开发和代码分析的过程中需要对代码进行动态调试 动态调试是指利用集成环境 IDE 自带的调试器跟踪软件运行 协助解决和分析软件的bug 动态调试需要对程序设置断点 通过对程序的某行代码设置断点 当程序运行到此代码处会自动停止
  • Qt:自定义信号变量类型

    1 定义变量类型 struct User STRUCT 预测结果 2 在定义后面添加声明 告知所有用到该信号变量的对象 建议1 2 3 放在一个头文件 供所有类包含 Q DECLARE METATYPE User STRUCT 3 incl
  • ajax实验,基于Ajax技术的实验管理系统

    摘要 本文的研究来源于常州纺织服装职业技术学院实验教学管理系统 是常州纺织服装职业技术学院教务管理系统的子系统 该系统主要完成制定实验教学计划 网上选课 三方互动 在深入研究Ajax技术原理和工作流程的基础上 提出一个基于Ajax技术的实验
  • 自定义类型-结构体

    注 本文为C语言初阶内容 目录 1 结构体 1 1结构体的基础知识 声明和自引用 1 2结构体变量的定义和初始化 1 3结构体内存对齐和修改默认对齐数 1 4结构体传参 1 结构体 1 1结构体的基础知识 声明 初始化和自引用 结构体是一些
  • js实现高德地图实现科技感3d建筑模型显示示例

  • java创建数组的方式_Java创建数组的几种方式总结

    1 一维数组的声明方式 type arrayName 或 type arrayName 附 推荐使用第一种格式 因为第一种格式具有更好的可读性 表示type 是一种引用类型 数组 而不是type类型 建议不要使用第二种方式 下面是典型的声明