首页 > 其他分享 >数组的常规操作

数组的常规操作

时间:2024-04-08 13:01:59浏览次数:14  
标签:遍历 int 常规 length 数组 操作 拷贝 array

        java中对数组的操作有遍历和拷贝两种,遍历指的是通过循环操作遍历数组的所有元素,简单理解就是通过循环操作访问数组中的所有元素,因此这里就要用到循环结构了。一般情况下,采用循环结构来遍历一维数组,采用循环的嵌套结构来访问来遍历多维数组。数组的拷贝操作指的将某个数组的内容拷贝到另一个数组中去,包括将整个数组拷贝到另一个数组中去,或者将某一个数组的一小段拷贝到另一个数组中去。

        数组的遍历

        在数组中,数组的的下标是从0开始计数的,因此可以用下标区间[0,区间长度-1]来表示数组的长度。在对数组进行遍历时,通过数组的下标来访问数组中的元素,同时可以对数组中的元素进行读取或者修改的操作。比如通过for循环遍历数组时就可以将数组中的元素打印出来,或者对一个未赋值的数组进行遍历时,可以将数组中的每一个值进行赋值操作。具体操作可参考后面给出的程序代码。

        在java中,在使用for循环遍历数组的基础上,为了方便,JDK1.5之后又增加了一个增强for循环的功能。增强for循环for-each的语法结构为:for(数据类型 数据变量名称:要遍历的数组名称){ 要进行的操作}。在这个语法结构中,数据类型要根据要遍历的数组中的数组的元素进行确定,比如如果数组的元素是整形,那么在for-each循环中的数据类型就是int类型,如果是引用类型,那么数据类型就是String类型。此外还要强调一点,如果数据类型是数组,要遍历的数据是数组的情况,那么数据类型处应该填写的是要遍历的数组中元素类型加上数组符号。比如数组的元素为int类型,那么在数据类型处应该填写int [ ]。对于数据名称,一般由自己定义一个变量,这个变量是用来接收数组中的元素的。进行增强for循环操作时,会把要遍历的数组中的元素都取出来,放到定义的数据变量名称中,接下来在花括号的操纵中一般是对这个用来接收数组元素的变量进行操作。比如以下程序中最后进行的for-each循环:

package cn.luoyusanshu.array;
import java.util.Arrays;
/**
 * 创建一个数组演示类,用来演示数组的遍历与增强for循环
 */
public class ArrayDemo01 {
    int[] arr01 = new int[5];
    int[] arr02 = {2,3,8,9,11,15};
    int[][] arr03 = new int[3][2];

    public static void main(String[] args) {
        ArrayDemo01 array = new ArrayDemo01();

        //用for循环对arr01数组进行遍历并赋值打印
        for (int i = 0; i < array.arr01.length ; i++) {
            array.arr01[i]=i*2+1;
        }
        System.out.println(Arrays.toString(array.arr01));

        //用for循环对arr02数组进行遍历并打印
        System.out.println("_________________________");
        for (int i = 0; i < array.arr02.length; i++) {
            System.out.print(array.arr02[i]+"\t");
        }
        System.out.println("_____________________________");

        //用嵌套循环遍历二维数组arr03并进行赋值操作,并将结果打印出来
        for (int i = 0; i < array.arr03.length; i++) {
            for (int j = 0; j < array.arr03[i].length; j++) {
                 array.arr03[i][j] = i +j;
            }
        }
        for (int i = 0; i <array.arr03.length ; i++) {
            System.out.println(Arrays.toString(array.arr03[i]));
        }

        //演示增强for循环中数据类型是int的情况
        for (int aa:array.arr02
             ) {
            System.out.print(aa+"\t");
        }
        System.out.println();

        //演示增强for循环中数据类型为数组的情况
        System.out.println("_____________________");
        for (int [] bb:array.arr03

             ) {
            System.out.print(bb+"\t");
        }

    }
}

数组的拷贝

         数组的拷贝操作需要用到System类中的static void arraycopy(obdect src , int srcpos , object  dest , int destpos , int length)方法。这个方法中,src代表的是被拷贝的数组,srcpos指的是被拷贝数组的开始拷贝的位置的下标,dest表示拷贝的目标数组,destpos指的是目标数组的用于存储拷贝内容的起始位置的下标,length指的是拷贝的长度。因此这个函数的作用是将src数组中从下标srcpos的位置一直往下选取length个元素拷贝到dest数组中,dest数组中从下标为destpos的位置开始存储拷贝过来的内容。比如下面的程序代码所示,第一次将s数组中的内容全部拷贝到sBak数组中,存储拷贝内容的位置从下标0开始,第二次,将s数组中的内容全部拷贝到数组string1中,但是储存拷贝内容的位置从下标6开始,因此可以看到在运行结果中有很多的null,这些就是原本的string1数组中的元素,由于没有进行赋值操作,因此默认为初始值null。

package cn.luoyusanshu.array;
//数组的拷贝
public class Test03 {
    public static void main(String[] args) {
        String s[]= {"阿里","尚学堂","京东","搜狐","网易"};
        String[] sBak = new String[6];
        System.arraycopy(s,0,sBak,0,s.length);
        for (int i = 0; i < sBak.length; i++) {
            System.out.print(sBak[i]+"\t");
        }
        System.out.println();
        String [] string1 = new String[12];
        System.arraycopy(s,0,string1,6,s.length);
        for (int i = 0; i < string1.length; i++) {
            System.out.print(string1[i]+"\t");
        }
    }
}

标签:遍历,int,常规,length,数组,操作,拷贝,array
From: https://blog.csdn.net/qq_59750520/article/details/137478986

相关文章

  • 刷题(一) 数组
    数组主要用到的思想:二分法双指针法滑动窗口vector的使用https://blog.csdn.net/u014779536/article/details/111239643https://www.runoob.com/w3cnote/cpp-vector-container-analysis.htmlvector<vector>res(n,vector(n,0));//使用vector定义一个二维数组......
  • 【操作系统】CentOS7入门级安装
    下载镜像CentOS镜像下载Download(centos.org)我们选择第一个X86_64CentOSMirrorsList版本描述X86_X64带64位的32位扩展版(一般安装这个)ARM64(aarch64)嵌入式。适用于微端(树莓派、机械臂、机械中控)IBMPower(ppc64le)专用于IBMPOWER服务器选择一个合适的链接......
  • 数组的扩展
    数组的扩展扩展运算符扩展运算符(spread)是三个点(...)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。console.log(...[1,2,3])//123console.log(1,...[2,3,4],5)//12345[...document.querySelectorAll('div')]//[<div>,<div>,<div>]......
  • 如何在HarmonyOS(鸿蒙操作系统)上进行应用开发
    文章中提到的关键点包括:学习ArkTS:作者建议初学者首先学习使用ArkTS编写HelloWorld程序,并可以通过TypeScript教程来快速掌握基础语法。对于有Flutter或ReactNative开发经验的开发者来说,页面布局会比较容易上手。页面布局:作者建议根据HarmonyOS的指导文档尝试编写简单布局,......
  • SQL 跨服务器跨数据库操作数据
    execsp_configure'showadvancedoptions',1reconfigureexecsp_configure'AdHocDistributedQueries',1reconfigurehttps://www.cnblogs.com/tohen/p/4228030.html(解决SQLServer阻止了对组件'AdHocDistributedQueries'的STATEMENT&......
  • Lasso回归及其R语言操作
    Lasso回归形式:确定lamda使得RSS-lamda*sum(Bi)最小,RSS为普通最小二乘估计的回归平方和。 作用:确定哪些变量更重要,lamda从0到1过程中,哪些变量的系数最慢趋于0,则这些变量相对更重要。 R语言代码:library(glmnet)set.seed(1)x=matrix(rnorm(100*20),100,20)y=rnorm(100)fit1=......
  • 用C语言实现,找出一个整数数组中,第二大的数
    用C语言实现,找出一个整数数组中,第二大的数/********************************************************************* filename: * author :[email protected]* date :2024/04/07* function:找出一个整数数组中,第二大的数* note :None** Copy......
  • c语言的数组以及简单函数
    数组与函数的基本定义数组正常数组数组的四要素数组名:本质上就是一个标识符常量元素:同一个数组中的元素数据类型要相同下标:数组的索引可以通过下标查找数组里的某一个值从0开始数组的长:表示元素的数量数组的定义先指定元素类型与个数,后在进行赋值(初始化)intarr[7];......
  • 操作系统综合题之“分页存储系统,逻辑地址格式 和 页表多少项 和 每项多少位 和 物理空
    一、问题:某系统采用基本分页存储管理策略,拥有逻辑地址空间32页,每页2K,拥有物理地址空间1M。要求1.请写出逻辑地址2.若不考虑访问权限,且页号不放入页表中,请问进程的页表有多少项?每项至少有多少位?3.如果物理空间减少一半,页表结构应做怎么样的改变? 二、参考答案1. 2.进程的......
  • 目录操作
    目录相关操作获取当前工作目录getcwdgetcwd函数:获取当前工作目录的绝对路径//manualNAMEgetcwd,getwd,get_current_dir_name-getcurrentworkingdirectorySYNOPSIS#include<unistd.h>char*getcwd(char*buf,size_tsize);RETURNV......