当前位置: 首页 > news >正文

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

今天学习的主要内容有

  • 数组的复制

数组的复制

利用循环进行数组的复制

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.lryc.cn/news/5395.html

相关文章:

  • JS判断两个table数据是否完全相等(判断两个数组对象是否完全相等)
  • 关于小程序,你想知道的这些
  • WuThreat身份安全云-TVD每日漏洞情报-2023-02-13
  • 【Linux】软件安装(三分钟教会你如何在linux下安装软件)
  • Fluent Python 笔记 第 10 章 序列的修改、散列和切片
  • 在中国程序员工作是青春饭吗?
  • Linux tcpdump
  • redis知识汇总(部署、高可用、集群)
  • 【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现
  • 面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....
  • 知识图谱 方法、实践与应用 王昊奋 读书笔记(下)
  • vue实现打印浏览器页面功能(两种方法)
  • 【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(Prometheus格式)
  • 【青训营】分布式定时任务简述
  • golang语言本身设计点总结
  • PTA L1-046 整除光棍(详解)
  • 将小程序代码转成uni-app代码
  • C语言在游戏中播放音乐
  • 机器学习算法:随机森林
  • 如何做好多项目全生命周期的资源调配,提升资源利用效率?【橙子】
  • JVM - 内存分配
  • 【知识图谱论文】Bi-Link:通过转换器和提示的对比学习桥接来自文本的归纳链接预测
  • jieba+wordcloud 词云分析 202302 QCon 议题 TOP 关键词
  • 包管理工具-npm-npx-yarn-cnpm
  • go gin学习记录1
  • Docker常用命令
  • 论文写作——公式编辑器、latex表格、颜色搭配器
  • MySQL数据库12——视图(VIEW)
  • 第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续
  • c++-运算符函数与运算符重载