java-数组

 数组:

   - 是一种数据类型(引用类型)

   - 相同数据类型元素的集合

   - 定义:

   - 初始化:给数组中的元素做初始化

   - 访问:访问的是数组中的元素

   - 通过(数组名.length)可以获取数组的长度(元素的个数)

   - 通过下标/索引来访问数组中的元素

       下标从0开始,最大到(数组的长度-1)

   - 遍历/迭代:从头到尾挨个走一遍

   数组的定义

        数组是一种数据结构,用于存储相同类型的多个元素。它可以存储基本数据类型(如int、float、boolean等)和引用数据类型(如对象)。

       数组的定义包括以下几个部分:

  1. 数据类型:数组可以存储相同类型的元素,其中元素的数据类型可以是基本数据类型或引用数据类型。
  2. 数组名:数组的名称用于标识该数组,在使用数组时需要通过数组名来引用数组。
  3. 数组的大小:数组的大小指定了数组可以存储的元素个数,它是一个非负整数。

         以下是定义数组的几种方式:

  1. 静态初始化:通过在定义数组时直接为数组元素赋值来初始化数组。语法如下:
    数据类型[] 数组名 = {元素1, 元素2, ...};
    
    例如:
    int[] numbers = {1, 2, 3, 4, 5};
    

  2. 动态初始化:在定义数组时只指定数组的类型和大小,然后在后续的代码中为数组元素赋值。语法如下:
    数据类型[] 数组名 = new 数据类型[数组大小];
    
    例如:
    int[] numbers = new int[5];
    numbers[0] = 1;
    numbers[1] = 2;
    numbers[2] = 3;
    numbers[3] = 4;
    numbers[4] = 5;
    

          无论是静态初始化还是动态初始化,数组的元素可以通过索引访问和修改,索引从0开始,直到数组的大小减1。例如,通过numbers[0]可以访问数组numbers的第一个元素。


        复制

       - System.arraycopy(a,1,b,0,4);

   //数组的复制:int[] a = {10,20,30,40,50};int[] b = new int[6]; //0,0,0,0,0,0//a:源数组//1:源数组的起始下标//b:目标数组//0:目标数组的起始下标//4:要复制的元素个数System.arraycopy(a,1,b,0,4); //灵活性好for(int i=0;i<b.length;i++){System.out.println(b[i]);}// - int[ ] b = Arrays.copyOf(a,6);//常规复制int[] a = {10,20,30,40,50};//a:源数组//b:目标数组//6:目标数组的长度(元素个数)//---若目标数组长度>源数组长度,则末尾补默认值//---若目标数组长度<源数组长度,则将末尾的截掉int[] b = Arrays.copyOf(a,6); //灵活性差for(int i=0;i<b.length;i++){System.out.println(b[i]);}


       数组的扩容

      int[] a = {10,20,30,40,50};

       //数组扩容(创建了一个更大的新的数组,并将源数组数据复制进去了)a = Arrays.copyOf(a,a.length+1);for(int i=0;i<a.length;i++){System.out.println(a[i]);}


        - 综合案例:

    //求数组元素的最大值,并将最大值放在数组最后一个元素的下一个位置public class MaxOfArray {public static void main(String[] args) {int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);System.out.println(arr[i]);}int max = arr[0]; //假设第1个元素为最大值for(int i=1;i<arr.length;i++){ //遍历剩余元素if(arr[i]>max){ //若剩余元素大于maxmax = arr[i]; //则修改max为较大的}}System.out.println("最大值为:"+max);arr = Arrays.copyOf(arr,arr.length+1); //扩容arr[arr.length-1] = max; //将最大值max赋值给arr中的最后一个元素for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}}


   
   排序:

     - Arrays.sort(arr); //升序排列(从小到大)

      //8)数组的排序:int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);System.out.println(arr[i]);}Arrays.sort(arr); //对arr进行升序排列System.out.println("数组排序后的数据:");for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}System.out.println("倒序输出:");for(int i=arr.length-1;i>=0;i--){System.out.println(arr[i]);}

总结:  

     数组是一种用来存储相同类型元素的集合,它是一种引用类型。数组在内存中是连续分配的,可以通过索引值访问数组中的元素。

  1. 声明和初始化数组 可以通过以下方式声明和初始化数组:
int[] array1; // 声明一个整型数组
array1 = new int[5]; // 初始化数组,指定长度为5int[] array2 = {1, 2, 3, 4, 5}; // 声明并初始化数组,指定具体值int[] array3 = new int[]{6, 7, 8, 9, 10}; // 声明并初始化数组,指定具体值,可以省略数组长度

  1. 访问数组元素 可以使用索引值访问数组中的元素,索引值从0开始,到数组长度减1结束:
int firstElement = array2[0]; // 访问第一个元素,值为1
int lastElement = array3[array3.length - 1]; // 访问最后一个元素,值为10

  1. 数组长度 使用length属性获取数组的长度:
int length = array1.length; // 数组长度为5

  1. 遍历数组 可以使用循环结构遍历数组中的所有元素:
for (int i = 0; i < array2.length; i++) {System.out.println(array2[i]);
}for (int element : array3) {System.out.println(element);
}

  1. 多维数组 Java中也支持多维数组,可以理解为数组的数组:
int[][] twoDimensionalArray = {{1, 2, 3}, {4, 5, 6}}; // 声明并初始化二维数组
int element = twoDimensionalArray[0][1]; // 访问二维数组中的元素,值为2

  1. 数组拷贝 Java提供了System.arraycopy()方法和Arrays.copyOf()方法,用于对数组进行拷贝:
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray1 = new int[5];
System.arraycopy(sourceArray, 0, targetArray1, 0, sourceArray.length);int[] targetArray2 = Arrays.copyOf(sourceArray, 5);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338980.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

斯坦福Mobile ALOHA提到的ACT之外的另两项技术:Diffusion Policy、VINN

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术&#xff1a;动作分块ACT的算法原理与代码剖析》而来&#xff0c;当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键&#xff0c;除了在上一篇文章中写清楚其算法原理之外&#xff0c;还得再剖…

虚拟主机 如何上传大于100M的文件 php网站程序

问题 虚拟主机上传文件大小限制100m&#xff0c; 有时会遇到非常大的文件上传&#xff0c;上传过程中耗时非常久&#xff0c; 可能服务器的限制设置了上传文件尺寸&#xff0c;返回“413 request entity too large” 整体逻辑 前端&#xff1a;上传文件时&#xff0c;进行文…

服务器感染了.pings勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 随着科技的不断进步&#xff0c;网络犯罪也在不断演变。其中之一的.pings勒索病毒是一种危险的恶意软件&#xff0c;它能够加密用户的数据文件&#xff0c;并要求支付赎金以解密这些文件。在本文中&#xff0c;91数据恢复将介绍.pings勒索病毒&#xff0c;以…

vscode+markdown+plantuml+html

markdown-preview-enhanced plantuml配置 生成html侧边栏 --- html:toc: truetoc_depth: 6toc_float: truecollapsed: falsesmooth_scroll: true ---

Zookeeper 和 naocs的区别

Nacos 和 ZooKeeper 都是服务发现和配置管理的工具&#xff0c;它们的主要区别如下&#xff1a;功能特性&#xff1a;Nacos 比 ZooKeeper 更加强大&#xff0c;Nacos 支持服务发现、动态配置、流量管理、服务治理、分布式事务等功能&#xff0c;而 ZooKeeper 主要用于分布式协调…

VsCode 配置Copilot的详细步骤与示例

目录 一、 GitHub Copilot Chat 账号申请 1.1 前往 GitHub 网站&#xff08;https://github.com/&#xff09;并点击 "Sign up" 进行注册。 1.2 申请 GitHub Copilot Chat 二、VsCode 配置 Copilot 2.1 安装 VsCode 编辑器 2.2 安装 Copilot 插件 2.3 配置Git…

ROS分布式框架搭建

ROS分布式框架搭建 在ROS机器人分布式框架搭建时&#xff0c;Jetson nano作为主机&#xff0c;而PC作为从机。 1 主机配置 在实现分布式框架搭建前&#xff0c;我们还需要做些准备工作&#xff1a;为Jetson nano连接无线网络&#xff0c;并且设置固定IP&#xff0c;实现如下&…

ZZULIOJ-1154:校门外的树

题目描述 某校大门外长度为L 的马路上有一排树&#xff0c;每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴&#xff0c;马路的一端在数轴0 的位置&#xff0c;另一端在L 的位置&#xff1b;数轴上的每个整数点&#xff0c;即0&#xff0c;1&#xff0c;2&#…

app小程序开发定制?智创开发

模板小程序和定制小程序效果有很明显的差距的&#xff0c;二者开发花费的时间也不一样&#xff0c;价格自然也就不一样&#xff0c;主要区别在以下几个方面&#xff0c;大家可以参考&#xff0c;根据自身的情况进行选择。 1&#xff09;效果不一样 模板&#xff0c;顾名思义&…

Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】

目录&#xff1a; 1.使用分布式爬取XX电影信息&#xff08;1&#xff09;settings.py文件中的配置&#xff1a;&#xff08;2&#xff09;spider文件的更改&#xff1a;&#xff08;3&#xff09;items.py文件&#xff08;两个项目一致&#xff01;&#xff09;&#xff1a;&am…

Hive分区表实战 - 单分区字段

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建图书数据库&#xff08;二&#xff09;创建国别分区的图书表&#xff08;三&#xff09;在本地创建数据文件&#xff08;四&#xff09;按分区加载数据1、加载中文书籍数据到countrycn分区2、加载英文书籍数据…

7个JavaScript面试题全面解析,一文搞定技术面试

JavaScript是构建网络的主要基石之一。这个强大的语言也有自己的怪癖。例如,您知道0 -0计算为true,或者Number("")产生0吗? 问题在于,这些怪癖有时会让你抓耳挠腮,甚至质疑Brendon Eich发明JavaScript的那一天是不是high了。当然,这里的重点不是说JavaScript是一种…