数组的复制与二维数组的用法

news2024/9/21 14:41:10

今天学习的主要内容有

  • 数组的复制

数组的复制

利用循环进行数组的复制

import java.util.Arrays;
public class Main3 {
    public static void main(String[] args) {
        int []arr = new int[]{1,2,3,4,5,6};
        int []arr1 = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }
        System.out.println(Arrays.toString(arr1));
    }
}

在这里插入图片描述

利用copyOf方法进行复制

copyOf进行复制时会出现三种情况
1.复制的数组与原数组相同,则按照原数组输出
2.若复制的数组的长度<原数组的长度,则按照长度小的输出
3.若复制的数组的长度>原数组的长度,则按照长度大的输出,多余的位置补充默认值

import java.util.Arrays;

public class Main3 {
    public static void main(String[] args) {
        int []arr = new int[]{1,2,3,4,5,6};
        int []arr1 = Arrays.copyOf(arr,6);
        System.out.println(Arrays.toString(arr1));

        int []arr2 = Arrays.copyOf(arr,4);
        System.out.println(Arrays.toString(arr2));

        int []arr3 = Arrays.copyOf(arr,10);
        System.out.println(Arrays.toString(arr3));
    }
}

在这里插入图片描述
以上就是数组复制的两种方法,由copyOf的源代码可知,copyOf有四个变量

利用copyof的性质可以快速的进行将数组插入,删除,复制。代码如下
删除数组指定位置的元素:
在这里插入图片描述

import java.util.Arrays;
public class Main1 {
    public static void main(String[] args) {
        int []arr1 = new int[]{1,2,3,4,5,6};
        int []arr2 = new int[arr1.length-1];
        System.out.println(Arrays.toString(arr1));
        int index = 2;
        System.arraycopy(arr1,0,arr2,0,index);
        System.arraycopy(arr1,index+1,arr2,index,arr1.length-index-1);
        System.out.println(Arrays.toString(arr2));
    }
}

在指定的位置插入元素
在这里插入图片描述

import java.util.Arrays;

public class Main2 {
    public static void main(String[] args) {
        int []arr1 = new int[]{1,2,3,4,5,6,7};
        System.out.println(Arrays.toString(arr1));
        int []arr2 = new int[arr1.length+1];
        int index = 2;
        int num = 9;
        System.arraycopy(arr1,0,arr2,0,index);
        arr2[index] = num;
        System.arraycopy(arr1,index,arr2,index+1,arr1.length-index);
        System.out.println(Arrays.toString(arr2));
    }
}

在这里插入图片描述
这是arraycopy的四个变量
Object src 原数组
srcPos 原数组开始复制的位置
Object dest 复制后的数组
destPos 复制后数组开始的位置
length 复制后数组的长度

一些数组的例题

翻转数组

在这里插入图片描述
在这里插入图片描述

public class Main4 {
    public static void main(String[] args) {
        char[][] chunxiao = {
                { '春' , '眠' , '不' , '觉' , '晓' } ,
                { '处' , '处' , '闻' , '啼' , '鸟' } ,
                { '夜' , '来' , '风' , '雨' , '声' } ,
                { '花' , '落' , '知' , '多' , '少' }
        } ;
        for (int i = 0; i < chunxiao.length; i++) {
            for (int j = 0; j < chunxiao[i].length; j++) {
                System.out.print(chunxiao[i][j]+"\t");
            }
            System.out.println();
        }

        int temp = chunxiao[0].length;
        char [][]arr = new char[temp][chunxiao.length];
        for (int i = 0; i < chunxiao.length; i++) {
            for (int j = 0; j <temp; j++) {
                arr[j][i] = chunxiao[chunxiao.length-1-i][j];
            }
        }
        System.out.println("翻转后的结果为:");
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

第二题按照总分成绩进行排名将所有成绩输出

import java.util.Arrays;

public class Main5 {
    public static void main(String[] args) {
        // 设 names 数组中存放学生姓名
        String[] names = { "安琪拉" , "王昭君" , "蔡文姬" , "妲己" , "张良" };
        // 设 courses 数组中依次存放三门课程的名称
        String[] courses = { "C++" , "Java" , "English" };
        // 设 scores 数组中依次存储的是 names 数组中各个学生的 C++ 、Java 、English 课程的成绩
        int[][] scores = {
                { 90 , 89 , 75 } ,
                { 59 , 40 , 100 } ,
                { 100 , 99 , 80 } ,
                { 80 , 61 , 61 } ,
                { 60 , 100 , 99 } ,
        };

        int []sum = new int[scores.length];
        for (int i = 0; i < scores.length; i++) {
            for (int j = 0; j < scores[i].length; j++) {
                sum[i] +=scores[i][j];
            }
        }


        for (int i = 0; i < scores.length-1; i++) {
            for (int j = 0; j < scores.length - 1 - i; j++) {
                if(sum[j]>sum[j+1]){
                    int temp = sum[j];
                    sum[j] = sum[j+1];
                    sum[j+1] = temp;

                    String x = names[ j ];
                    names[ j ] = names[ j + 1 ];
                    names[ j + 1 ] = x ;

                    int[] temp1 = scores[j];
                    scores[j] = scores[j+1];
                    scores[j+1] = temp1;
                }
            }
        }

        for( int i = 0 ; i < scores.length ; i++ ){
            // 输出学生姓名
            System.out.print( names[ i ] + " => " );
            for( int j = 0 ; j < scores[ i ] .length ; j++ ){
                // 输出课程名称
                System.out.print( courses[ j ] + ":");
                // 输出课程成绩
                System.out.print( scores[ i ][ j ] );
                if( j < scores[ i ] .length - 1 ) {
                    System.out.print( " , " );
                }
            }
            System.out.println(" ,总成绩:"+sum[i]);
            System.out.println();
        }


    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 整合 Redis 缓存

文章目录前言1、缓存 概念知识1.1、什么是缓存1.2、缓存的优缺点1.3、为什么使用缓存2、Redis 概念知识2.1、Redis 简介2.2、为什么用 Redis 作为缓存2.3、Redis 支持的数据类型2.3、Redis是如何判断数据是否过期2.4、过期的数据的删除策略2.5、Redis 事务2.6、Redis 持久化机制…

Windows软件界面字体和图标太小的解决办法

有时候我们装好软件之后&#xff0c;打开软件会发现部分字体变得非常小&#xff0c;难以看清屏幕中的文字&#xff0c;如图所示&#xff1a; 下面小编在这里以Windows 11系统&#xff08;其余版本Windows系统的设置步骤没有改变&#xff0c;只是部分选项的位置有所改变&#xf…

开发不停机的服务程序

使用守护进程、心跳机制、调度程序实现服务程序永不死机。 调度程序:启动服务程序&#xff0c;服务程序死掉后调度程序休眠n秒再次调度。 进程心跳:使用共享内存维护自己的心跳信息&#xff0c;当前时间减去最新时间如果大于超时时间就认为故障了&#xff0c;守护进程就会遍历…

共享模型之不可变

1.日期转换的问题 1>.代码示例 Slf4j public class TestDateFormatDemo1 {public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");for (int i 0; i < 10; i) {//多个线程调用日期格式化对象的方法new Thread(…

kafka监控工具安装和使用

1. KafkaOffsetMonitor 该监控是基于一个jar包的形式运行&#xff0c;部署较为方便。只有监控功能&#xff0c;使用起来也较为安全(1)消费者组列表 (2)查看topic的历史消费信息. (3)每个topic的所有parition列表(topic,pid,offset,logSize,lag,owner) (4)对consumer消费情况进…

使用Eureka搭建单击模拟到集群模拟

首先讲讲什么是Eureka:1.Eureka是Netflix的子模块&#xff0c;同样也是核心模块之一&#xff0c;Eureka是基于REST的服务&#xff0c;用于定位服务&#xff0c;以实现云端中间件层服务发现和故障转移&#xff0c;服务注册与发现对于微服务来说是非常重要的&#xff0c;有了服务…

vue项目第三天

论坛项目动态路由菜单以及渲染用户登录全局前置拦截器获取用户的菜单以及接口执行过程解析菜单数据&#xff0c;渲染伟动态路由。菜单数据将数据源解析为类似路由配置对象的格式&#xff08;./xxx/xxx 这种格式&#xff09;。下方是路由实例的代码,后面封装了很多方法这里也需要…

RFID服装吊牌材质分类

1、吊牌常见材质 铜版纸&#xff1a;最常用&#xff0c;分单铜纸、双铜纸 白卡纸&#xff1a;厚度较厚 黑卡纸&#xff1a;黑卡纸常用于烫金、烫银工艺 牛皮纸&#xff1a;韧度较高、色彩单一 塑料材料&#xff1a;一般一些比较高档的品牌会选塑料材质&#xff0c;成本比铜…

电商CRM的作用和用途

数据显示&#xff0c;使用电商CRM客户管理系统后&#xff0c;企业销售额提高了87%&#xff0c;客户满意度提高了74%&#xff0c;业务效率提高了73%。要在竞争激烈的电商市场取得成功&#xff0c;与目标受众的有效沟通是有效的方法。下面说说什么是电商CRM系统&#xff1f;电商C…

Docker镜像和容器操作,ლ(´ڡ`ლ)好吃的.

文章目录1.镜像操作1.镜像命令2.情景1&#xff1a;拉取镜像3.情景2&#xff1a;保存导入镜像2.容器操作1.容器命令2.情景1&#xff1a;创建并运行一个容器3.情景2&#xff1a;进入容器&#xff0c;修改文件3.结语halo&#xff0c;大家好&#xff0c;这次我带来的是Docker的一些…

SATA SSD需要NCQ开启吗?

一、故事开篇最近有同学在咨询&#xff0c;SATA SSD是否需要NCQ功能&#xff1f;借此机会&#xff0c;今天我们来聊聊这个比较古老的话题&#xff0c;关于SATA协议的NCQ的故事。首先我们先回顾下SATA与NCQ的历史&#xff1a;2003年&#xff0c;SATA协议1.0问世&#xff0c;传输…

微服务中API网关的作用是什么?

目录 什么是API网关&#xff1f; 为什么要用API网关&#xff1f; API网关架构 API网关是如何实现这些功能的&#xff1f; 协议转换 链式处理 异步请求 什么是API网关&#xff1f; Api网关是微服务的重要组成部分&#xff0c;封装了系统内部的复杂结构&#xff0c;客户端…

蓝牙Mesh学习笔记(一)

Mesh系统结构1 Mesh网络分层1.1 模型层(Model layer)1.2 基础模型层(Foundation Model layer)1.3 接入层(Access layer)1.4 上层传输层(Upper transport layer)1.5 下层传输层(Lower transport layer)1.6 网络层(Network layer)1.7 承载层(Bearer layer)1.8 BLE内核规范(BLE Co…

MySQL性能优化六 事物隔离级别与锁机制

概述 我们的数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题&#xff0c;为了解决多事务并发问题&#…

CUDA内存管理一文理清|参加CUDA线上训练营

CUDA 内存概述 GPU的内存包括&#xff1a; 全局内存&#xff08;global memory&#xff09;常量内存&#xff08;constant memory&#xff09;纹理内存核表面内存&#xff08;texture memory&#xff09;寄存器&#xff08;register&#xff09;局部内存&#xff08;local me…

BI 到底是什么,看看这篇文章怎么说

随着数据价值得到了认可&#xff0c;数据开始成为个人、企业乃至国家的重要战略资产&#xff0c;但数据资产不能直接产生价值&#xff0c;而是需要通过数据分析、数据可视化等数据处理手段将数据转化为信息和知识&#xff0c;才能进行资产的价值化&#xff0c;这时候商业智能BI…

Python骚操作 - 实现把文字写在像素中

前言 嗨嗨&#xff0c;大家好 我是小圆 今天又发来个有意思的 用Python在照片中添加文字~&#xff08;实现把文字写在像素中&#xff09; 那咱就话不多说咯 直接开始展示 实现步骤 想要实现把文字写在像素中&#xff0c;那么我们就需要用到 pillow 这个神器。 众所周知&a…

从零实现高并发WebRTC服务器(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议

文章目录一、SSL协议二、OpenSSL三、TLS和DTLS四、DTLS的通信的步骤图五、RTP协议和SRTP协议5.1 详解RTP协议5.2 详解RTCP协议5.3 RTP && RTCP的协议的关键技术六、DTLS-SRTP协议一、SSL协议 SSL的全名叫做secure socket layer(安全套接字层)&#xff0c;最开始是由一…

【CSS 布局】 Sticky Footer布局

Sticky footer布局是什么&#xff1f; 我们所见到的大部分网站页面&#xff0c;都会把一个页面分为头部区块、内容区块和页脚区块&#xff0c;当头部区块和内容区块内容较少时&#xff0c;页脚能固定在屏幕的底部&#xff0c;而非随着文档流排布。当页面内容较多时&#xff0c;…

大数据框架之Hadoop:HDFS(三)HDFS客户端操作(开发重点)

3.1 HDFS客户端环境准备 1&#xff0e;根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径&#xff08;例如&#xff1a;D:\javaEnv\hadoop-2.77&#xff09;&#xff0c;如下图所示。 2&#xff0e;配置HADOOP_HOME环境变量&#xff0c;如下图所示。 3&#…