JAVA 数组(一维数组)

2023-11-18

Java 语言中提供的数组是用来存储固定大小的同类型元素。即存储同种数据类型的多个值

1.声明数组变量和数组初始化

首先必须声明数组变量,才能在程序中使用数组。

语法:

dataType[] arrayRefVar;   
 
或
 
dataType arrayRefVar[]; 

Java中的数组必须先初始化,然后才能使用

初始化数组有两种:静态初始化和动态初始化

动态初始化: 初始化时指定数组长度,由系统为数组分配初始值

格式:

                数据类型[ ] 变量名= new  数据类型[数组长度];

范例:

                int [ ] arr = new int[5];

静态初始化:初始化时,就可以指定要存储的元素,系统还会计算出该数组的长度

格式:

                数据类型[ ] 变量名= {数据1,数据2,数据3.....};

范例:

                int [ ] arr = {1,2,3,4,5,6};

动态初始化和静态初始化的区别:

  • 动态初始化:手动指定数组长度,由系统给出默认初始值。
  • 静态初始值:手动指定数组元素,系统会根据元素个数,计算数组的长度。

2.操作数组的元素

数组元素访问

        访问方式 格式:数据名[索引]

索引的作用:访问数组容器中的空间位置

索引是数组容器中空间的编号

特征:

  • 索引从0开始

  • 索引是连续的

  • 索引逐一增加,每次加一

public class Text1 {
    public static void main(String[] args) {
        int d[]={4,5,6,2,3,1,9,8,7,10,12,14,15};//下标从0开始
        System.out.println(d[0]);//输出下标为0的值 为4
        System.out.println(d[1]);//输出下标为1的值 为5
    }
    }

3.内存分配

Java 程序在运行时,需要在内存中分配空间。

为了提高运算效率,就对空间进行了不同区域的划分

每一片区域都有特定的处理数据方式和内存管理方式。

  • 栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中

  • 堆内存:new出来的内容都会进入堆内存,并且会存在地址值

  • 方法区:字节码文件(.class文件)加载时进入的内存

  • 本地方法栈:调用操作系统相关资源

  • 寄存器:交给CPU去使用

数组操作常见的问题

  • 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
  • 空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
  • null:空值,引用数据类型的默认值,表示不指向任何有效对象

索引越界:

        int d[]={4,5,6,2,3,1,9,8,7,10,12,14,15};//下标从0开始
        System.out.println(d[20]);//输出下标为20的值

因为数组中没有下标为20的值,导致索引越界报错

 空指针异常

        int d[]={4,5,6,2,3,1,9,8,7,10,12,14,15};//下标从0开始
        d=null;
        System.out.println(d[2]);//输出下标为2的值,

第二行代码d=null将d数组的值赋为空值,所以后面的索引就报错

 4.数组遍历

 

 扩展:

                For-Each 循环

 For-Each 能在不使用下标的情况下遍历数组。

语法:

for(type element: array)
{
    System.out.println(element);
}

用法实例:

public class Text1 {
    public static void main(String[] args) {
                int a[] = {12,36,45,97,52};
                // 打印所有数组元素
                for (int element: a) {
                    System.out.println(element);
                }
            }
        }

运行结果:

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

JAVA 数组(一维数组) 的相关文章

随机推荐

  • 如何在Eclipse中的Dynamic web project工程中运行Apache服务器

    第一步 点击新建 其他 如图 2 选择server 下一步 如图 3 选择Apache服务器 4 选择本地已经下载的Apache对应的版本 完成 5 新建一个测试Dynamic webproject工程 6 在webcontent中随便建立
  • C++基础一:内存分区和引用

    1 内存分区模型 C 程序在执行时 将内存大方向划分为4个区域 代码区 存放函数体的二进制代码 由操作系统进行管理的 全局区 存放全局变量和静态变量以及常量 栈区 由编译器自动分配释放 存放函数的参数值 局部变量等 堆区 由程序员分配和释放
  • 01虚拟机下配置linux的网络上网(包括ssh,gcc,g++的安装)

    1 选择模式 若你是新装虚拟机时 这个界面会依次安装时会直接有 到这一步选择添加 gt 选择网络适配器 点击桥接模式和复制物理网络 若你已经安装好虚拟机 可以点击虚拟机上方的虚拟机 M 然后也会出现这个界面 操作和上面一样 2 安装vim
  • [读论文]深入研究对抗样本和黑盒攻击的可转移性

    论文题目 深入研究对抗样本和黑盒攻击的可转移性 本文内容来源于论文 Delving into Transferable Adversarial Examples and Black box Attacks 论文地址 arxiv 1611 0
  • OpenGL总结4-3D纹理贴图坑

    OpenGL在纹理贴图的时候用到了多个坐标系 最头痛的是两个 一个是顶点所在的顶点坐标系 另一个是纹理所在的纹理坐标系 顶点坐标系与纹理坐标系不同的地方在于 当纹理导入之后 纹理在纹理坐标系中的坐标始终保持 0 1 内 所以在进行纹理变换的
  • 在Linux下安装GmSSL

    本文属于 GmSSL国密加密算法库使用系列教程 之一 欢迎查看其它文章 在Linux下安装GmSSL 一 关于GmSSL 二 解决与系统OpenSSL冲突的问题 三 GmSSL源码准备 四 编译与安装GmSSL 1 解压并进入目录 2 编译
  • 5分钟学会RocketMQ

    RocketMQ 简介 RocketMQ 是一个队列模型的消息中间件 具有高性能 高可用 高实时等特性 它并不支持JMS java消息服务 规范 但参考了JMS规范和kafak等的思想 Producer Consumer 队列都可以分布式
  • 吉布斯抽样

    吉布斯采样是生成马尔科夫链的一种方法 生成的马尔科夫链可以用来做蒙特卡洛仿真 从而求得一个较复杂的多元分布 吉布斯采样的具体做法 假设有一个k维的随机向量 现想要构造一条有n个样本的k维向量 n样本马尔科夫序列 那么 随机 初始化一个k维向
  • 联想拯救者笔记本加固态硬盘过程重点

    最近朋友嫌弃自己笔记本机械硬盘太慢 在我的蛊惑下买了块固态硬盘 想改善一下开机时间 本来以为很简单的事 没想到啊没想到 一 总的说一下 拯救者这款笔记本升级固态硬盘的思路 用ufi版本的U盘启动盘 我用的大白菜uefi版本 电脑的bosi下
  • vue修改图标以及项目名

    首先 打开这个文件 javascript
  • js实现图片任意拉伸_APICloud开发者进阶之路

    本文出自APICloud官方论坛 感谢论坛版主 东冥羽的分享 七牛云上传视频并截取第一帧作为视频的封面图 使用js上传 模块videoPlayer截取第一帧 有专门的截图模块 但是我使用的有点问题 可能是视频源的问题 canvas也能截取
  • VTK配置步骤(WIN7 64位 + VS2012 + VTK-5.10.1)

    前面的废话可以不看 我很啰嗦 由于项目中需要用到VTK 上周三就开始编译VTK源码 中间出现了一系列问题 首先是下载的高版本代码顺利编译后 自己新建的工程总是提示链接错误 尽管所有的库文件都加入了 还是不正确 之后下载了vtk较低版本5 8
  • 一文带你了解降压型稳压芯片原理

    一文带你了解降压型稳压芯片原理 导读 在电路系统设计中 总是离不开电源芯片的使用 林林总总的电源芯片非常多 比如传统的线性稳压器7805 低压差线性稳压器 LDO 开关型降压稳压器 Buck DCDC 等 那么它们到底有什么区别呢 Exce
  • C# 基本语法

    C 基本语法 C 是一种面向对象的编程语言 在面向对象的程序设计方法中 程序由各种相互交互的对象组成 相同种类的对象通常具有相同的类型 或者说 是在相同的 class 中 例如 以 Rectangle 矩形 对象为例 它具有 length
  • java request获取数组

    获取单一参数 String hostName request getParameter host String url request getParameter url 获取参数数组 String carrier request getPa
  • Ubuntu 16.04 搭建Hadoop环境(to be continued)

    reference 1 Ubuntu上搭建Hadoop环境 单机模式 伪分布模式 by yinlung 2 Ubuntu11 10下安装Hadoop1 0 0 单机伪分布式 3 Ubuntu上搭建Hadoop环境 单机模式 伪分布模式 by
  • 2023养老服务人才状况调查报告

    导读 本次调查内容涉及养老服务人才的基本特征 待遇和保障状况 培训状况 职业发展状况等 调查显示 养老服务人才以女性为主 各类受访者中女性占比约82 3 养老服务人才队伍年龄结构偏大 41 55岁年龄段的受访者占比56 0 56岁及以上占比
  • 安装Java (JDK16)

    本文将在win10的环境下安装jdk16 配置环境变量 1 下载JDK 1 打开官网下载最新的JDK Java SE Development Kit JDK 2 选择对应的版本 3 双击下载的exe进行安装 在安装过程中可以改变安装位置也可
  • MyBatis-Generator插入删除数据返回-2147482646

    在使用MyBatis Generator自动生成的代码进行删除数据时 deleteByPrimaryKey 方法 返回的int 值为 2147482646 正常的逻辑是成功删除返回 1 失败返回 0 未删除数据 特意去官网看了这个方法的说明
  • JAVA 数组(一维数组)

    Java 语言中提供的数组是用来存储固定大小的同类型元素 即存储同种数据类型的多个值 1 声明数组变量和数组初始化 首先必须声明数组变量 才能在程序中使用数组 语法 dataType arrayRefVar 或 dataType array