Java-一维数组总结

项目管理知识体系(PMBOK)中的质量规划详解 你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。 阅读详情

Array综述

  1. java 语言中的数组是一种引用数据类型。不属于基本数据类型,数组的父类是 object。
  2. 数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据的集合)
    数组: 字面意思是"一组数据"
  3. 数组当中可以存储"基本数据类型"的数据,也可以存储"引用数据类型" 的数据
  4. 数组因为是引用类型,所以数组对象是堆内存当中(数组是存储在堆内存当中的)
  5. 数组当中如果存储的是"Java对象" 的话,实际上存储的是对象的"引用(内存地址)"
  6. 数组一旦创建,在java 中规定,长度不可变(数组长度不可以变)
  7. 数组的分类: 一维数组,二维数组,多维数组。。。。(一维数组较多, 二维数组偶尔使用)
  8. 所有的数组对象都有length属性(java自带的)用来获取数组中元素的个数
  9. java中的数组要求数组中元素的类型统一。
    比如: int 类型数组只能存储int 类型,Person 类型数组只能存储Person 类型。
    例如: 超市购物,购物袋中只能装苹果。不能同时装苹果和橘子(数组中存储的元素类型统一)
  10. 数组在内存方法存储的时候,数组中元素的内存地址(存储的每一个元素都是有规则的挨着排列的)是连续的。
    内存地址连续这是数组存储元素的特点,数据实际上是一种简单的数据结构。
  11. 所有的数组都是拿"第一个小方框的内存地址"作为整个数组对象的内存地址。(数组中首元素的内存地址作为整个数组对象)
  12. 数据中每个元素都是有下标的, 下标从0开始,以1递增。最后一个元素的下标是 length -1下标非常重要,因为我们对数组中元素进行"存取",都需要通过下标来进行的。

array

数组的优缺点

优点

查询/查找/检索 某个下标上的元素时效率极高,可以说是查询效率最高的一个数据结构。

为什么检索效率高?
  • 每一个元素的内存地址在空间存储上是连续的。
  • 每一个元素类型相同。所以占用的空间大小一样。
  • 知道第一个元素的内存地址,知道每一个元素占用空间的大小,又知道下标,所以通过一个数学表达式就可以计算出某个下标上元素的内存地址。直接通过内存地址定位元素,所以数组的检索效率最高。

数组中存储100个元素,或者100w个元素,在元素查询/检索方面,效率相同,因为数组中元素查找的时候不会一个一个的找,是通过数学表达式计算出来的。(算出一个内存地址,直接定位)

缺点

  • 由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素时(非末尾元素),效率较低,因为随机增删元素会涉及到最后元素统一向前或者向后位移操作。

  • 数组不能存储大数据量,为什么? 因为很难在内存空间上找到一块特别大的连续内存空间。

注意 对于数组中最后一个元素的增删,是没有效率影响的。

一维数组 声明/定义

语法格式:
 int[] array1;
 double[] array2;
 boolean[] array3;

一维数组初始化

静态初始化

 静态初始化语法格式:
    int[] array = {100,232,343};

动态初始化

动态初始化语法格式:
 int[] array = new int[5]; // 这里的5 表示数组的元素个数。
                         // 初始化一个5个长度的int类型数组,每个元素会赋值默认0
String[] names  = new String[5];// 初始化一个6个长度的String类型数组,每个元素默认null

什么时候采用静态初始化方式?什么时候使用动态初始化方式?
当你创建数组的时候,确定数组中存储哪些具体的元素时,采用静态初始化方式。
当你创建数组的时候,不确定将来数组中存储哪些数据,你可以采用动态初始化的方式,预先分配内存地址

一维数组深入

对于数组来说,实际上只能存储java对象的"内存地址" 。 数组中存储的每个元素是"引用"

扩容

在java 开发中,数组长度一旦确定不可变。那么数组满了怎么办?

扩容方式

先新建一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大容量的数组中

结论

数组扩容 效率较低,因为涉及到拷贝的问题,所以在以后的开发中请注意: 尽可能少的进行数组的拷贝。 可以在创建数组对象的时候预估以下多长合适,最好预估准确,这样可以减少数组扩容次数,提高效率

数组拷贝

arraycopy

代码演练

public class ArrayTest01 {
    public static void main(String[] args) {
        //声明一个int 类型的数组, 使用静态初始化的方式
        //java风格
        int[] a1 = {1,100,10,20,55,689};
        //c++风格
//        int a1[] = {1,100,10,20,55,689};

        //所有的数组对象都有length属性
        System.out.println(a1.length);


        //数组中每个元素都有下标
        //通过下标对数组的元素进行存/取


        //取(读)
        System.out.println("第一个元素="+a1[0]);
        System.out.println("最有一个元素="+a1[a1.length-1]);

        //存(改)
        //把第一个元素改为 123
        a1[0]=123;
        //把最后一个元素改为 0
        a1[a1.length-1]=0;

        System.out.println("第一个元素="+a1[0]);
        System.out.println("最有一个元素="+a1[a1.length-1]);

        //一维数组遍历
        for(int i=0; i<=a1.length-1;i++){
            System.out.println(a1[i]);
        }
        //数组越界异常 java.lang.ArrayIndexOutOfBoundsException
//        System.out.println(a1[6]);//

     // 动态初始化
        Object[]  ob = new Object[3];

        for(int i=0; i<=ob.length-1;i++) {
            System.out.println(ob[i]);
        }

        //存储Object,采用静态初始化

        Object  ob1 = new Object();
        Object  ob2 = new Object();
        Object  ob3 = new Object();
        Object[]  obs = {ob1,ob2,ob3};
        System.out.println(obs);
        for(int i=0; i<=obs.length-1;i++) {
            System.out.println(obs[i]);
        }


        System.out.println("=============");
        printArray(a1);
        System.out.println("*************");
        printArray(new String[5]);

        System.out.println("++++++++++++++");
        printArray(new int[]{23,334,56});

        System.out.println(args.length);

        System.out.println("ttttttttttt");
        // 创建一个Animal类型的数组,里面存储了cat 和Bird

        Animal[] animals = {new Cat(),new Bird()};//该数组中存储了两个对象的内存地址

        for (int i = 0; i<animals.length;i++){
            //从animals中取出来的可能是Cat,也可能是Bird 不过肯定是一个Animal
            // 如果调用的方法是父类中存在的方法不需要向下转型,直接使用父类型引用即可

//            Animal an = animals[i];
//                  an.move();

            animals[i].move();
            if (animals[i] instanceof Bird){
                Bird bird = (Bird)animals[i];
                bird.sing();

            }

        //数组拷贝
            //System.arraycopy(5个参数)
            //拷贝源(从这个数组中拷贝)
            int[] aa1 = {1,100,10,20,55,689};

            // 拷贝目标 (拷贝到这个目标数组上)
            int[] dest = new int[10];//动态初始化一个长度为10的数组

            //调用System.arraycopy() 拷贝aa1 中的 第2,3 元素到 dest的3,4位置上

            System.arraycopy(aa1,1,dest,2,2);

            //循环输出
            for(int t=0; t<dest.length;t++) {
                 System.out.println(dest[t]);
            }
            System.out.println("————————————————————");
            //数组中如果存储的元素是引用,可以拷贝吗? 当然可以

            Object[] obj = {new Object(),new Object(),new Object()};
            Object[] newObj = new Object[10];

            // 思考: 这里拷贝的时候,拷贝的是对象还是对象地址? (地址)
            //将obj数组中所有的元素全部拷贝到newObj中
            System.arraycopy(obj,0,newObj,0,obj.length);
            for(int t=0; t<newObj.length;t++) {
                System.out.println(newObj[t]);
            }
        }

    }
    public static void printArray(int[] array){

        for(int i=0; i<=array.length-1;i++) {
            System.out.println("int数组: "+array[i]);
        }

    }

    public static void printArray(String[] args){

        for(int i=0; i<=args.length-1;i++) {
            System.out.println("String 数组中的元素: "+args[i]);
        }

    }
}

class Animal{
    public void move(){
        System.out.println("move");
    }
}

class Cat extends Animal{
    public void move(){
        System.out.println("Cat");
    }

}
class Bird extends Animal{
    public void move(){
        System.out.println("Bird");
    }

    public void sing(){
        System.out.println("Bird sing");
    }
}

冲压机器人系列编程:ABB IRB 6700_(6).RAPID编程语言入门 主菜单:包含文件、编辑、视图、工具等常用操作。项目浏览器:显示当前项目的文件结构,包括机器人模型、程序模块等。图形界面:用于创建和编辑机器人的虚拟环境。RAPID代码编辑器:用于编写和编辑RAPID代码。仿真控制面板:用于控制仿真过程,包括启动、暂停、停止等。变量是存储数据的容器,可以通过变量名访问和修改其存储的数据。变量定义时需要指定其类型和名称。% 定义一个整数变量并赋初值% 定义一个实数变量,未赋初值函数定义时需要指定其返回类型和参数。num result;子程序类似于函数,但不返回值。 阅读详情

相关推荐

基于RK3588的高效音视频对讲系统设计与实现

本文详细介绍了基于RK3588芯片的高效音视频对讲系统设计与实现。文章深入剖析了RK3588在8K编解码、高性能音频DSP及丰富接口方面的优势,并提供了从开发环境搭建、分层软件架构设计,到视频采集编码、音频回声消除及低延迟网络传输的完整实战指南,旨在帮助开发者充分利用该芯片硬件能力,构建稳定、低延迟的实时通信系统。

dapp9builder的博客 256

Java进阶(6)——一维数组

1.Java语言中的数组是一种引用数据类型,不属于基本数据类型。2.数组的父类是Object。3.数组实际上是一个容器,可以同时容纳多个元素。4.数组可以存储基本数据类型的数据,也可以存储引用数据类型的数据。5.因为数组是引用类型,所以数组对象在堆内存中。6.数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”,数组中不能直接存储java对象。7.数组一旦创建,在java中规定,长度不可变。...

程序猿进化梯 574

ROS入门(一)——ROS安装(vmware16+ubuntu20.04+ROS-Noetic)

嵌套:ROS可以在Ubuntu上运行,Ubuntu在虚拟机Vmware中安装。 从 虚拟机vmware安装→ubuntu安装→ros安装,逐步介绍安装ROS环境的过程。整个过程是我一步步跟着各种博客安装实现的,亲测可行。 版本: Vmware :Vmware Workstation16 Ubuntu :20.04 ROS :Noetic 其中vmware直接载当前最新版本就好,而ubuntu的版本要注意一下。 在ROS官网(cn - ROS Wiki),我们进入到ROS安装的步骤界面,可以看..

Netceor的博客 9740

Java 一维数组详解

一维数组知识点: 一、数组的定义 1、Java 语言中的数组是一种引用数据类型。 不属于基本数据类型。 数组的父类是Object类 2、数组实际上是一个容器,可以同时容纳多个元素。( 数组是一个数据的集合。) 数组:字面意思是“一组数据” 二、数组的特点: 3、数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据。 4.数组因为是引用类型,所以数组对象是堆内存当中。( 数组是存储在堆当中的) 5、数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”,数组

KUNKING1958的博客 1239

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

STM32 HAL库下DHT22高精度温湿度采集与30秒定时实现

单总线传感器(如DHT22)是嵌入式环境监测系统的核心数据源,其通信依赖微秒级精确时序控制。在STM32平台中,需结合硬件定时器(如TIM2)构建稳定周期触发机制,并通过GPIO+精确延时(非HAL_Delay)完成协议解析。该方案突破整数读取局限,完整还原带一位小数的温度与湿度值,显著提升工业级数据精度。典型应用于物联网终端、智能农业节点及边缘侧环境监控系统,为MQTT/CoAP等协议上报提供结构化原始数据支撑。本实践基于STM32F103与HAL库,不依赖第三方驱动,具备强可移植性与工程鲁棒性。

weixin_42453228的博客 513

Java数组基础

数组 Java语言中的数组是一种引用数据类型。不属于基本数据类型。数组的父类是Object。 数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。) 数组:字面意思是“一组数据” 数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据。 数组因为是引用类型,所以数组对象是堆内存当中。(数组是存储在堆当中的) 数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”,数组中不能直接存储java对象。 数组一旦创建,在jav

Avices 358

mysql笔记:23. 在Mac上安装与卸载MySQL

MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。

斌斌(Java) 2249

Java对象数组

对象数组

qq_42566526的博客 5986

LSTM 深度解析从原理推演到现代序列建模的演进

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),它通过引入记忆单元(Cell State)来解决普通RNN在长序列数据处理中的梯度消失问题。LSTM可以在长时间的序列中捕捉依赖关系,是一种非常适合处理时间序列、自然语言处理、语音识别等任务的深度学习模型。在LSTM中,记忆单元(Cell State)是一个贯穿整个序列的数据通道,用于存储和传递关键信息。记忆单元在LSTM的时间步之间保持信息的持久性,可以看作是一个长期记忆的“容器”。

hello.reader 3万+

OpenClaw部署太难?汉化版+中文社区+国产替代品,国内用户零门槛指南

OpenClaw作为GitHub 10万+星的开源AI助手平台,近期在国内AI圈备受关注 🌟 但部署难度和英文界面让很多用户望而却步。本文整理了针对国内用户的友好资源和简便替代方案,帮助国内用户零门槛上手AI助手工具 🚀

XiaoqiangClub的博客 5758

JAVA学习面向对象——this关键字 、 引用类型数组 、 方法重载 、 构造方法

1.方法的重载 (1)方法的签名 方法的签名=方法名+参数列表 (2)方法的重载(overload) 1)在同一个类中,方法名称相同,参数列表不同,称之为方法的重载 2)在编译时有编译器根据签名自动绑定调用的方法 2.构造方法 (1)作用 1)给成员变量初始化 2)与类同名,没有返回值类型 3)在创建对象(new)时被自动调用 4) ...

weixin_41806595的博客 473

0.1 ROCm rocr-libhsakmt实现深度剖析专栏介绍

本专栏深入解析AMD ROCm生态核心组件rocrruntime,从底层硬件交互到上层封装实现。重点剖析libhsakmt驱动层的七大核心模块设计,包括拓扑管理、队列调度、事件同步等关键机制;详解C++接口封装策略与工程实践,如资源管理、多线程优化等。通过"硬件-驱动-应用"全链路技术拆解,帮助开发者深入理解ROCm运行时机制,解决性能调优、调试等实际问题,为HPC/AI应用开发提供底层技术支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 5981

Java 一维数组

数组是用一个标识符(变量名)和一组下标来代表一组具有相同数据类型的数据元素的集合。Java语言的数组分为一维数组二维数组以及多维数组。

2301_80407492的博客 1091

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java正确定义一维数组_java一维数组定义,创建一维数组详解

前面给大家介绍了一下什么是java数组,下面要接着给大家介绍的就是java一维数组定的定义以及创建一维数组方面的知识。数组当中的每个元素都只带有一个下标的时候,这样的数组就是一维数组,一维数组实质上来说就是一组相同类型数据的线性集合,是数组当中,最简单的一种数组。数组是引用数据类型,引用数据类型在使用之前一定要做两件事情:声明和初始化。下面的话就来重点的介绍一维数组的创建方面的知识。创建一维数组为...

weixin_30725317的博客 4688

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java中一维数组的使用

数组能很好地解决多组数据的问题 下面说最简单的数组——一维数组的用法 目录 1.一维数组的初始化 2.一维数组的长度 3.一维数组的调用 4.遍历一维数组 5.实际举例 ——————————————————————————————————————————— 1.一维数组的初始化 数组有两种初始化方式:动态初始化和静态初始化 静态初始化 即在声明时就将数组赋值了,在后面直接调用 方法 数组类型+[]+名称=new 类型{元素} int [] Array=new int[]{1,2

InferiorZhang的博客 1732

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java 一维数组_Java 之 一维数组

一、声明与初始化一维数组1、声明(两种方式)数组元素类型 数组名称[];数组元素类型[] 数组名字;数组元素类型:决定了数组的数据类型,即数组要存放什么类型的数据,可以是基本数据类型和引用数据类型;Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法Demo:int a[];int[] a1;double b[];String[] c; //引用类型变量...

weixin_42510060的博客 1536

Java一维数组的遍历

一维数组的遍历 一维数组可以理解为只能存放一行相同数据类型的数据。在Java中,如果要使用数组,需要先声明数组,然后分配数组内存(即可以存放多少个数据) public class Arrary { public static void main(String[] args) { //定义数组 int []arr = new int[]{1,2,3,4,3,2...

舟舟舟小白的博客 2022

java中一维数组的声明、初始化和使用

java中一维数组的声明、初始化和使用 数组可以存储多个相同类型的元素,其中,类型可以是java数据类型的任意一种 1. 一维数组的两种声明方式 方式1:数组元素类型[ ] 数组名; 方式2:数组元素类型 数组名[ ]; //声明一个存储分数的数组 //方式1 int[] scoreArray1; //方式2 int scoreArray2[]; //也可以声明其他类型的数组 ...

weixin_43433032的博客 1万+

java中的一维数组

1.一维数组的声明与初始化 正确的方式: int[] ids;//声明 //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行 1、ids = new int[]{1001,1002,1003,1004}; //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行 2、 String[] names = new String[5]; 3、 int[] arr4 = {1,2,3,4,5}; 错误的方式: int[] arr1 = new int[]; //int[] arr1 = ne

qq_45554909的博客 228

java一维数组的使用

Java一维数组的使用 多个相同类型的数据按照一定的顺序排列的集合并需要一个名字命名,且通过编写的方式对这些数据进行统一管理,这就是数组。数组的组成有1.数组名,2.下标,3.元素,4.数组长度(切记:数组中元素有顺序,不同于集合,顺序不同,数组不同) 一.用前声明(了解下就ok): 1.数组本身为引用数据类型(还有类和接口),数组中的元素可以基本数据和引用数据。 2.数组其实就是在内存中开辟一整块新的连续空间(不连续为链表),而数组名中引用的是这块连续空间的首地址上。 3.数组长度一旦确定就别修改,也不可

qq_51694024的博客 584

Java一维数组

Java一维数组的认识和简易使用 1.什么是一维数组? 顾名思义就是放置一组变量的下标 在一个程序中使用下标变量,这些变量的整体就叫做数组。 数组中的每个变量的数据类型是不变且相同的,当数组中每个元素都只带一个下标时这样的数组就被称为一维数组。 一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组,一维数组是计算机程序中最基本的数组。 2.一维数组怎样定义? 在Java中,一维数组有三种定义方法 // 第一种 int[] arr1=new int[];//定义数组,但没有初始化 int[] arr2=

Javaeqe的博客 312

java的一维数组

1,一维数组的定义2,一维数组length的属性3,一维数组元素的访问与修改4,数组元素的默认初始化值,5,数组的遍历,6,数组的常见错误,7,数组的内存结构

weixin_55648880的博客 257

用java获取一维数组的平均值_java中一维数组常见运算

本教程操作环境:windows7系统、java10版,DELL G3电脑。1.数组求和public class Main {public static void main(String[] args) {int num[]={1,2,3,4,5,6,7,8,9,10}; //定义一维数组int sum = 0;System.out.println("一维数组中个元素之和为:");for(in...

weixin_33453301的博客 2672

java一维数组排序

Java一维数组排序 适合偷懒的人群,代码方便记忆,也方便理解,供大家参考 一维数组升序方法 public static int[] sort1(int[] arr){//升序 for (int i = 0; i <arr.length ; i++) { for (int j = 0; j <arr.length-i-1 ; j++) { if(arr[j] > arr[j+1]) { .

roydon 1970

JAVA中一维数组的作用,JAVA语言中的数组- 一维数组

本文主要向大家介绍了JAVA语言中的数组- 一维数组,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。Java中预定义好的两个类:数组与字符串的使用。它们也是所有程序设计语言必须要处理的两类数据结构。在传统语言(例如C)中,数组和字符串都只是一片连续的内存空间,用于存放同类型的数据,语言本身并没有为它提供更多的支持。Java将其设计为对象,内置了更多的方法,降低了程序员的工作量。另外...

weixin_42534103的博客 1089
上一篇: mysql索引详解
下一篇: 数组:模拟栈数据结构
piepis
博客等级 码龄10年 104粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值