04.数组

Pcap04官方配置工具使用详解:如何生成并理解你的固件数组 本文详细解析了Pcap04官方配置工具的使用方法,重点介绍了如何生成并理解固件数组。通过SPI接口连接、寄存器配置到固件数组生成的完整流程,帮助开发者高效利用这款高精度电容测量芯片,提升工业检测、医疗设备等领域的测量精度。 阅读详情

第一章.数组的介绍以及定义

1.概述:容器
2.作用:一次存多个数据
3.特点:
  a.定长(定义数组的时候长度为多少,最多就能存多少个数据,后续操作的时候不能对长度进行修改)
  b.既可以存基本类型数据,还能存引用类型数据  
4.定义:
  a.动态初始化(定义的时候只规定元素类型以及数组长度,没有存具体的元素,需要后续动态存入)
    数据类型[] 数组名 = new 数据类型[长度]
    数据类型 数组名[] = new 数据类型[长度]
      
    等号左边的数据类型:规定了数组中元素的类型
    []:代表的数组
    数组名:见名知意,自己为数组取名字
    new:创建数组
    等号右边的数据类型:和等号左边的数据类型一致
    [长度]:规定数组的长度,代表最多能存多少个数据(元素)
        
  b.静态初始化(定义的时候直接往数组存储元素,存多少个数据,长度就是多少)
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2...}
    数据类型 数组名[] = new 数据类型[]{元素1,元素2...}

  c.简化的静态初始化
    数据类型[] 数组名 = {元素1,元素2...}
public class Demo01Array {
    public static void main(String[] args) {
        //动态初始化创建数组
        int[] arr1 = new int[3];
        String[] arr2 = new String[3];
        
        //静态初始化创建数组
        int[] arr3 = {1,2,3,4,5};
        String[] arr4 = {"努尔哈赤","皇太极","顺治","康熙","雍正","乾隆","嘉庆","道光","咸丰","同治","光绪","宣统"};
        
    }
}

分别用动态初始化,和静态初始化将8种基本类型都定义一遍,外加上一个字符串的数组

第二章.操作数组

1.获取数组的长度

1.格式:
  数组名.length
2.注意:
  length是数组的一个属性,所以在调用的时候不要带()
public class Demo02Array {
    public static void main(String[] args) {
        String[] arr1 = {"努尔哈赤","皇太极","顺治","康熙","雍正","乾隆","嘉庆","道光","咸丰","同治","光绪","宣统"};
        System.out.println(arr1.length);
    }
}

2.索引

1.概述:指的是元素在数组中的存储位置(下标)
2.特点:
  a.从0开始,最大索引为(数组长度-1)
  b.唯一,不能重复    
3.注意:
  操作数组中的元素,都是根据索引来操作的

3.存储元素

1.格式:
  数组名[索引值] = 值
      
2.含义:
  将等号右边的值放到数组指定的索引位置上
public class Demo03Array {
    public static void main(String[] args) {
        String[] arr = new String[3];
        //存元素
        arr[0] = "涛哥";
        arr[1] = "金莲";
        arr[2] = "大郎";

        //获取元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

4.获取元素

1.注意:
  a.直接输出数组名,会输出数组的地址值(数据在内存中的唯一标识)
  b.数组创建完之后,没有存具体的值,直接输出会输出元素的默认值
    整数 0
    小数 0.0
    字符 '\u0000'  空白字符,转成int型就是0
    布尔 false
    引用 null
      
2.格式:
  数组名[索引值]
public class Demo04Array {
    public static void main(String[] args) {
        int[] arr = new int[3];
        System.out.println(arr);//地址值
        System.out.println(arr[0]);//0 默认值
        System.out.println(arr[1]);//0 默认值
        System.out.println(arr[2]);//0 默认值

        arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

arr1[0] = arr2[1] -> 将arr2这个数组的1索引上的元素取出来放到arr1这个数组的0索引上

public class Demo05Array {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3};

        int[] arr2 = new int[3];

        //将arr1这个数组的0索引上的元素赋给arr2的0索引
        arr2[0] = arr1[0];
        //将arr1这个数组的1索引上的元素赋给arr2的1索引
        arr2[1] = arr1[1];

        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        //arr2的2索引上的元素没有被赋值,所以是默认值
        System.out.println(arr2[2]);

    }
}

5.遍历数组

1.概述:循环获取元素
2.快捷键:数组名.fori    
public class Demo06Array {
    public static void main(String[] args) {
        int[] arr = {1,2,3,34,4,54,4,4,5,6,6,7,7,7,7};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

6.操作数组时容易出现的问题

6.1.数组索引越界异常_ArrayIndexOutOfBoundsException

1.出现的原因: 操作的索引,超出了数组的索引范围
public class Demo07Array {
    public static void main(String[] args) {
        int[] arr = new int[3];
        arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
        //arr[3] = 40; 数组中没有3索引,会抛出ArrayIndexOutOfBoundsException异常
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

6.2.空指针异常_NullPointerException

1.出现的原因:
  一个引用类型数据为null之后还要使用
public class Demo07Array {
    public static void main(String[] args) {
        int[] arr = new int[3];
        arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
        //arr[3] = 40; 数组中没有3索引,会抛出ArrayIndexOutOfBoundsException异常
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        arr = null;
        System.out.println(arr.length);
    }
}

第四章.内存的说明

1.内存的概念:说白了就是运行内存,在java的世界中分为5块:
2.分哪5块:
  栈(了解)(Stack):方法的运行都会在栈内存中运行
      
  堆(了解)(Heap):存储的是引用类型的数据,而且每new一次都会在堆内存中开辟一个空间,堆内存会为这个空间自动分配一个地址值
                而且堆内存中的数据都有默认值
                整数  0
                小数  0.0
                字符  '\u0000'
                布尔 false
                引用  null
      
  方法区(了解)(Method Area):所有代码执行前的"预备区",方法运行前代码会先加载到内存中,先保存在方法区中
                          在方法区中记录了类的信息以及方法的信息
      
  本地方法栈(不用管)(Native Method Stack):运行本地方法 -> 带native关键字的
                本地方法:是对java无法实现的功能进行功能上的扩充,这些本地方法都是C语言编写
                        这些本地方法如何实现的,我们看不到,因为c语言没有对我们开源
      
  寄存器(不用管)(PC register):和CPU有关

1.一个数组内存图

2.两个数组内存图

new了两次,开辟了两个不同的空间,修改一个空间中的数据不会影响另外一个空间的数据

3.两个数组指向同一片内存空间

arr2不是new出来的,而是arr1给的,所以arr2和arr1的地址值是一样的,所以就指向了同一片空间,修改一个数组的数据会影响到另外一个数组

第五章.数组复杂操作_数组扩容

1.定义一个数组,存储1,2,3,将其扩容到长度为5
public class Demo04Array {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3};
        /*
           由于数组定长,定义之后不能修改长度
           所以我们只能创建一个新数组,指定新长度
         */
        int[] arr2 = new int[5];

        //将arr1的数据复制到arr2中
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }

        /*
          将arr2的地址值赋值给arr1
         */
        arr1 = arr2;

        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+" ");
        }
    }
}

第六章.数组常见算法

1.数组翻转

1.将数组中对称索引位置上的元素互换

public class Demo01Reverse {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        for (int min = 0,max = arr.length - 1; min < max; min++,max--){
            int temp = arr[min];
            arr[min] = arr[max];
            arr[max] = temp;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

2.冒泡排序

1.数组的排序有很多种:我们今天只将冒泡排序
2.规则:
  相邻两个元素比较,大的往后走,小的往前走
  默认都是升序  

public class Demo02MaoPao {
    public static void main(String[] args) {
        int[] arr = {5,4,3,2,1};
        /*
           数组长度为5,最多索引为4,但是我们需要将i<arr.length改成
           i<arr.length-1
           此时i最大能变化到3,当i为3的时候,正好是arr[3]和arr[4]比较,所以就不越界了

           第一轮比较,比较了4次
         */
/*        for (int i = 0; i < arr.length-1-0; i++) {
            if (arr[i]>arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }*/

        /*
          第二轮比较,比较了3次
         */
/*        for (int i = 0; i < arr.length-1-1; i++) {
            if (arr[i]>arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }*/

        /*
          第三轮比较,比较了2次
         */
/*        for (int i = 0; i < arr.length-1-2; i++) {
            if (arr[i]>arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }*/

        /*
          第四轮比较,比较了1次
         */
    /*    for (int i = 0; i < arr.length-1-3; i++) {
            if (arr[i]>arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }*/

        /*
           外圈代表比较了几轮
           内圈代表比较换位
         */
        for (int j = 0; j < arr.length-1; j++) {
            for (int i = 0; i < arr.length-1-j; i++) {
                if (arr[i]>arr[i+1]){
                    int temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"  ");
        }
    }
}

3.二分查找

1.前提:数组中的数据必须是升序的

2.查询思想:

  a.老式查询:遍历数组,一个一个比较

  b.二分查询:每次找中间索引对应的元素进行比较查询,每次查找,干掉数组的一半

public class Demo03BinarySearch {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        //定义最大索引和最小索引以及要查找的元素
        int min = 0;
        int max = arr.length - 1;
        int key = 5;
        //如果min<=max就找
        while(min <= max){
            //算中间索引
            int mid = (min + max) / 2;
            if(key > arr[mid]){
                min = mid + 1;
            }else if (key < arr[mid]){
                max = mid - 1;
            }else{
                System.out.println("找到了,索引是:" + mid);
                break;
            }
        }
    }
}

【树状数组】P5094 [USACO04OPEN] MooFest G 加强版|普及+ 每一年,约翰的 $ N $ 只奶牛参加奶牛狂欢节。这是一个全世界奶牛都参加的大联欢。狂欢节包括很多有趣的活动,比如干草堆叠大赛、跳牛栏大赛,奶牛之间有时还相互扎屁股取乐。当然,她们会排成一列嚎叫,来欢庆她们的节日。奶牛们的叫声实在刺耳,以致于每只奶牛的听力都受到不同程度的损伤。现在告诉你奶牛 $ i $ 的听力为 $ v_i $ ,这表示如果奶牛 $ j $ 想说点什么让她听到,必须用高于 $ v_i \times dis(i,j) $ 的音量。因此,如果奶牛 $ i $ 和 $ j $ 想相互交谈,她们的 阅读详情

相关推荐

阿里云CDN HTTPS 证书配置流程

可以使用HTTPS方式访问资源,如果浏览器中URL旁边出现锁的HTTPS标识,表示HTTPS安全加速已生效。: 证书配置完成后,需要留意证书过期时间并在证书过期前手动配置新的证书。注意 ⚠️ 一定是需要复制 以下标识之间的内容。如果已在阿里云数字证书管理服务中购买了证书,请选择。,该证书将在阿里云数字证书管理服务中保存。如果使用第三方服务商签发的证书,请选择。第四步,在指定域名的左侧导航栏,单击。第二步,在左侧导航栏,单击。开关,并配置证书相关参数。页面,找到目标域名,单击。中选择已购买的证书。

w风雨无阻w的专栏 2208

Task04:单元数组

Task04: 单元数组

正小q的博客 132

mbedtls | 01 - 移植mbedtls库到STM32的两种方法

一、mbedtls 开源库 1. mbedtls是什么 Mbed TLS是一个开源、可移植、易于使用、代码可读性高的SSL库。可实现加密原语,X.509证书操作以及SSL / TLS和 DTLS 协议,它的代码占用空间小,非常适合用于嵌入式系统。 mbedtls遵循 Apache 2.0 开源许可协议,目前由 TrustedFirmware 维护(Linaro主持的一个治理开放社区项目),在Github上已收获 2.6k star,目前Github上发布的最新版本为 2.24.0 版本,开源仓库地址为:

Mculover666的博客(嵌入式) 1万+

剑指 Offer 04. 二维数组中的查找

剑指 Offer 04. 二维数组中的查找 对于这种右边永远大于左边下边永远大于上边的二维数组来说,右上角和左下角是特殊的 对于右上角前面的都小于他,下边的都大于他。 如果target>右上角那么这一行都可以排除,坐标直接下移 如果target<右上角那么这一列直接排除坐标左移。 代码: class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix.l

qq_45566354的博客 183

FPGA JTAG接口设计全解析

JTAG是FPGA开发的核心接口,主要用于代码下载和在线调试。14-pin设计中包含TCK、TMS、TDI、TDO四个关键信号,采用信号-地布局增强抗干扰能力,TCK建议串联电阻。10-pin设计需注意转接适配,并推荐使用RCLAMP0524P等低电容TVS二极管进行ESD防护。两种接口设计都强调信号完整性和可靠性,建议PCB布局时保持JTAG走线短且预留调整空间。

在读研究生,FPGA电路设计与功能开发。 2180

FAST-LIVO2 源码精读(十八):实时性优化、漂移排查与工程落地

FAST-LIVO2 的工程价值,不在于某一个孤立的技巧,而在于它把"激光的几何精度、惯性的高频预测、视觉的纹理与色彩"用一套简洁的滤波框架紧紧拧在一起,又在实时性、鲁棒性、可扩展性之间取得了难得的平衡。先用内建计时表定位瓶颈,再按降采样、并行、滑窗、编译优化、双频输出逐项加速;遇到漂移先看现象、循诊断树定位根因、回到对应章节取解法。十八篇至此收束。

PX4-SLAM-PNC 215

04-java数组

衣柜(装衣服等物品),教室(装学生等人员)。是将多个数据存储到一起,每个数据称为该容器的元素。内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

weixin_55702682的博客 1237

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2276

chapter 04 数组

百知教育学习 - 胡鑫喆 - chapter 04 数组 题目链接 提取码:h008 1、代码 package chapter_04; public class Practice_04_01{ public static void main(String[] args) { /* A 正确 * B 正确 * C 错误 --> int[] a = {1,2,3,4,5};...

m0_45044194的博客 374

QCC304x系列开发教程(实战篇)之5.2 QCC3040之提示音

earbud_init.c中,初始化table中UiPrompts_Init /*! \brief Table of initialisation functions */ static const init_table_entry_t appInitTable[] = { ......... {UiPrompts_Init, 0, NULL}, ......... } ui_prompts.c中是提示音音处理的主要逻辑和配置源文件 函数static void uiPro...

心跳包的博客 2392

OpenMVS :用 colmap制作自己的数据集 重建(用colmap计算位姿,将位姿转为MVS需要的格式)

数据集制作主要是在windows进行,比较方便。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 3325

(leetcode 剑指04) 二维数组的查找 2020-12-19

//在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个 //整数,判断数组中是否含有该整数。 // // // // 示例: // // 现有矩阵 matrix 如下: // // //[ // [1, 4, 7, 11, 15], // [2, 5, 8, 12, 19], // [3, 6, 9, 16, 22], // [10, 13, 14, 17, 24],

weixin_42414127的博客 108

30分钟用 Restful ABAP Programming(RAP)模型开发一个支持增删改查的 Fiori 应用

2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Driven Development,即通过开发维护了对应annotation(注解)的CDS view,结合SAP WebIDE,能够花费最少的编程代价,就能够在短时间内获得一个支持增删改查的Fiori应......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5951

04 数组

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。因为第一个元素距离数组首地址间隔0个单元格。

山屿的博客 1406

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【黑马程序员JAVA笔记+完整代码】DAY04 数组

黑马Java网课笔记

CherryTaylor的博客 587

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

04—数组

本文记录了我对数组粗浅的学习

weixin_71699295的博客 987

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

剑指offer04——二维数组中的查找

在一个 n * m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

weixin_59055853的博客 383

04 Java数组

自学笔记java数组

m0_62458285的博客 709

04数组

数组的概念: 字面意思上是一组数据,一组(一般情况下相同类型的)的数据(不一定都是数字) 〖注〗数组是一种数据类型 〖注〗数组的作用是:使用单独的变量来存储一系列的值。 数组的创建方式 1 使用new 运算符创建数组 var arr=new Array(1,2,true,"hello"); ...

qq_43086874的博客 243

【Java】04 数组

数组是编程语言中最常见的一种数据结构,可用于存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引来访问数组元素,包括为数组元素赋值和取出数组元素的值。

Demo_Null 2237

04数组数据

数组数据 3.1数组数据类型 数组名和下标惟一地标识一个数组中的一个元素。同一数组中的每一个元素都必须属于同一数据类型。一个数组在内存中占一片连续的存储单元。 3.1.1一维数组 定义一维数组的一般格为:类型标识符 数组名[常量表达式]; int a[10];它表示整型数组数组名为a且数组有10个元素。 int a[]={1,2,3,4,5};int a[10]={0,1,2,3,...

weixin_30872733的博客 227

04、数组

概念(是什么) 数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(Linear List) 线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。 非线性表 之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。比如二叉树、堆、图等。 连续的内存空间和相同类型的数据 正是因为这两个限制,它才有了一个堪称“杀手锏”的特性:“随机访问”。但有利就有

handsome_zan的博客 704
上一篇: 03_流程控制_循环
下一篇: 05.数组工具类_二维数组_方法的使用
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值