JAVA二维数组不等自动补齐_java基础再回首(二)——数组的补缺拾遗-程序员宅基地

技术标签: JAVA二维数组不等自动补齐  

在总结数组的用法之前,我们先明确一下数组的概念与特点:

数组是多个相同类型的数据按一定顺序排列的集合。

创建数据对象会在内存中开辟一整块内存空间。

数组的长度一旦确定就不能更改。

数组是引用数据变量,数组中的元素可以是基本数据变量。

也可以是引用数据变量(二维数组)。

了解了一些数组的基本的特点,我们就可以来看一下数组的用法,基本的用法将直接在代码注释中体现。

数组的复制:我们给一个arr1数组,现在要让arr2元素和arr1一样。先看一下错误的答案:

1 //数组的静态初始化:数组的初始化和元素赋值操作同时进行

2 int [] arr1 = new int[] {2,4,7,9,-3,0,3};3 int [] arr2 =arr1;4

5 //arr2的遍历

6 for(int i = 0;i < arr2.length;i++) {7 System.out.print(arr2[i] + " ");8 }9 System.out.println();//换行10 //现在我们来改一下arr1的值

11 arr1[0] = 0;12 arr1[1] = 0;13 //再对arr2遍历

14 for(int i = 0;i < arr2.length;i++) {15 System.out.print(arr2[i] + " ");16 }17

看一下结果:

b94392420821685746332c010c86c1a4.png

之所以会出现这种改动arr1同时arr2也发生改变是因为我们int [] arr2 = arr1;相当于把arr1的地址赋给arr2,当改变arr1时,arr2也会发生改变。

所以我们应该为arr2重新分配空间。

修改后的代码如下:

1 int [] arr1 = new int[] {2,4,7,9,-3,0,3};2 //arr2的动态初始化:初始化和赋值分开进行

3 int [] arr2 = new int[arr1.length];4 //为arr2赋值并遍历

5 for(int i = 0;i < arr1.length;i++) {6 arr2[i] =arr1[i];7 System.out.print(arr2[i] + " ");8

9 }10

11 System.out.println();//换行12 //现在我们来改一下arr1的值

13 arr1[0] = 0;14 arr1[1] = 0;15 //再对arr2遍历

16 for(int i = 0;i < arr2.length;i++) {17 System.out.print(arr2[i] + " ");18 }19

这样赋值后,我们修改arr1的值,arr2的值也是不变的:

b7a51adccea068d8dfe6565b939e4993.png

2.数组的反转:我们以arr1为例,反转就是数组的第一个元素和数组的最后一个互换位置,依此类推。代码实现如下:

1 //数组的静态初始化:数组的初始化和元素赋值操作同时进行

2 int [] arr1 = new int[] {2,4,7,9,-3,0,3};3 System.out.println("原数组是");4 for(int i = 0;i < arr1.length ;i++) {5 System.out.print(arr1[i] + " ");6 }7 //反转只要交换一次就够了,所以i < arr1.length/2

8 for(int i = 0;i < arr1.length/2;i++) {9 //对应的数组元素交换位置

10 int temp =arr1[i];11 arr1[i] = arr1[arr1.length - 1 -i];12 arr1[arr1.length - 1 -i] =temp;13 }14 System.out.println("\n反转后数组是");15 //遍历数组

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

结果为:

080e49b3da1d8952c90cae66f499d7fc.png

3.我们使用冒泡排序对数组进行一下从小到大排列,冒泡排序是一次比较两个元素,如果他们的顺序不符合要求就把他们交换过来。直到交换到末尾。

1 //数组的静态初始化:数组的初始化和元素赋值操作同时进行

2 int [] arr1 = new int[] {2,4,7,9,-3,0,3};3 System.out.print("原数组为:");4 //遍历数组

5 for(int i = 0;i < arr1.length ;i++) {6 System.out.print(arr1[i] + " ");7 }8 //冒泡排序

9 for(int i = 0;i < arr1.length -1;i++) {10 for(int j = 0;j < arr1.length - 1 - i;j++){11 if(arr1[j] > arr1[j+1]) {12 int temp =arr1[j];13 arr1[j] = arr1[j+1];14 arr1[j+1] =temp;15 }16 }17 }18 System.out.print("\n从小到大排列为:");19 //遍历数组

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

看一下输出结果:

dc5dcb42382c04eb8c2a09aee66dadb3.png

4.线性查找数据,本质还是一个数组的遍历。

1 //数组的静态初始化:数组的初始化和元素赋值操作同时进行

2 int [] arr1 = new int[] {2,4,7,6,9,-3,0,3,6};3 int x = 6;4 boolean isFlag = false;//来确定数组中是否有要查找的元素

5 for(int i = 0;i < arr1.length;i++) {6 if(arr1[i] ==x) {7 System.out.println("数字" + x + "位置在" +i);8 isFlag = true;//证明要找的数字找到了

9 }10 }11 //执行if判断,看数组中是否有这个数字。

12 if(!isFlag) {13 System.out.println("对不起,数组中没有这个数");14 }

展示一下结果我们选择出现了两次的6来进行实验:

320e1bbdfe68e35920ecf39e98c47df5.png

5.二维数组相当于一维数组中存储的值还是一个数组,所以二维数组的初始化可以这样写:

1 //二维数组的初始化和赋值

2 int [][] arr1 = new int[3][] ;3 arr1[0] = new int[]{2,4,6,7};4 arr1[1] = new int[] {-1,0,-5};5 arr1[2] = new int[] {234};6 //二维数组的遍历

7 for(int i = 0;i < arr1.length;i++) {8 for(int j = 0;j < arr1[i].length;j++) {9 System.out.print(arr1[i][j] + " ");10 }11 System.out.println();12 }

结果为:

0724313c1dc419342e951c8fc0c5243f.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39698217/article/details/114773345

智能推荐

Vue之改变布局_vue布局切换-程序员宅基地

Vue之改变布局我们在购物的网站经常会看物品列表可以切换显示模式。也就是有两种布局可以来回切换,看用户喜欢哪种来选择。今天我们来看看vue怎么实现简单的布局切换。效果图:点击图形就只显示图片,点击图形加文字就多显示出文字。其实实现起来很简单,绑定一个数据集,里面有图片路径和图片文字。用两个div显示..._vue布局切换

Part3:Drawing Text /用OpenGL 绘制文本-程序员宅基地

来自:http://www.codeproject.com/Articles/30775/TetroGL-An-OpenGL-Game-Tutorial-in-C-for-Win32-pla1、Drawing Text CGameFont 类2、CGameFont 类的辅助CTextControl类3、如何输出汉字1、Drawing Text CGameFont 类

攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)...-程序员宅基地

一、mknod:设置设备代码  linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断。  major为主设备代码,minor为设备代码(需要查询),示例如下:    /dev/hda ---------major:3------minor:0~63    /dev/hdb----------major:3------minor:64~127...

oracle em搭建,安装配置Oracle的EM-程序员宅基地

安装数据库完毕之后发现em无法登录,才想起来建数据时没注意到这回事,重新配置安装数据库完毕之后发现em无法登录,才想起来建数据时没注意到这回事,重新配置Oracle@linux:~> sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Thu Jan 5 09:44:14 2012Copyright (c) 1982, ..._oracle建库时安装emctl

Maven插件仓库地址_maven plugin 地址-程序员宅基地

以下是Maven插件地址: alfresco-public https://artifacts.alfresco.com/nexus/content/groups/public alfresco-public-snapshots https://artifacts.alfresco.com/nexus/content/gro_maven plugin 地址

db2 事务日志和归档的管理-程序员宅基地

参考了,很多同学的文档,主要是:[DB2]归档日志实验:在线与离线,DB2_体系架构_db2归档模式,Prayer 的清理DB2的归档日志。算是给对自己在DB2归档方面学习作一个总结,也给自己留一点资料。db2事务日志和归档的管理1.DB2的日志模式1.1循环日志  当循环日志生效时,事务数据将通过循环的方式写入主要日志文件。当存储于某个日志文件中的所有记录都不再需要用于恢...

随便推点

jqGrid(3.6版本) 入门——jqGrid简介与环境_jqgrid版本-程序员宅基地

一、jqGrid简介: jqGrid 是一款运行于web上,用以展现和处理列表数据的ajax能力的JavaScript控件。因为它是通过ajax毁掉机制动态读取数 的客户端解决方案,因此它可以和包括asp,php,jsp,java sevlet,ColdFusion,perl等服务器端集成。同时它是基于jqury库的,是jqury库的一个插件,它的运行需_jqgrid版本

线上真实案例:mongo被OOM的一次历险_mongo oom问题_死磕音视频的博客-程序员宅基地

前言近期线上平台出现一次故障,mongo数据库被oom了,由于是高可用架构,重新选举了主节点后,继续工作,没想到刚选举完又被oom,mongo重启达到了分钟级别,多个节点被oom后,不能很快的拉起来提供服务,对业务产生了巨大的影响。分析•目前从表面来看,有这样几个问题1.内存128g,在这么高的配置下都发生了OOM,那么看来是有优化空间的,mongo为什么吃了这么多内存 2.为什么启动这么慢通过表分析,发现有很多大表,其中一个巨大的表占用了110个g,且有频繁的读写。原因是因为有很多冷数据,未做冷热数据分离_mongo oom问题

zabbix4.0 percona插件实现监控mysql-程序员宅基地

percona是一款能够详细监控zabbix MySQL的插件官方下载percona插件wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1....

oneinstack一键包Nginx php多版本共存配置全过程-程序员宅基地

一、先安装PHP7.1,再安装PHP5.6 安装OneinStack 选择lnmp模式,默认安装php7.2,安装步骤参考:http://oneinstack.com/安装步骤如下: yum -y install wget screen #for CentOS/Redhat# apt-get -y install wget screen #for Debian/Ubuntuwget http://mirrors.linuxeye.com/lnmp-full.tar.gztar xzf ..

java 和grails_Java程序员使用Grails的十大优势_jacknrose的博客-程序员宅基地

当前位置:IT大杂烩>Java>Java程序员使用Grails的十大优势Java程序员使用Grails的十大优势www.someabcd.com网友分享于:Jun 6, 2018 11:37:16 PMWeb开发方面没有王者,PHP市场很大,但RoR,Python,Java,及至Asp.net都占据着一方市场.那么作为Java程序员,当你不想使用SSH做网站的时候,尝试一下Gra..._grails社区

python学生管理系统界面设计-python图形化界面设计tkinter!python用户界面设计教程...-程序员宅基地

用python写爬虫,老师叫我加界面设计,怎么弄写界面的话可以有两种方式,一种是GUI方式,可以使用tk或者QT之类的还有一种就是使用WEB方式,做一个HTML的界面,可以使用简单的flask来做python怎么使用qtdesigner设计的ui软硬件OS X EI CapitanPython 3.5.1PyQt 5.5.1PyCharm 5.0.1前言在PyQt5系列教程的篇h50218157,...