技术标签: 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
看一下结果:
之所以会出现这种改动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的值也是不变的:
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 }
结果为:
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 }
看一下输出结果:
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来进行实验:
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 }
结果为:
Vue之改变布局我们在购物的网站经常会看物品列表可以切换显示模式。也就是有两种布局可以来回切换,看用户喜欢哪种来选择。今天我们来看看vue怎么实现简单的布局切换。效果图:点击图形就只显示图片,点击图形加文字就多显示出文字。其实实现起来很简单,绑定一个数据集,里面有图片路径和图片文字。用两个div显示..._vue布局切换
来自: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 类
一、mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断。 major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hda ---------major:3------minor:0~63 /dev/hdb----------major:3------minor:64~127...
安装数据库完毕之后发现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插件地址: 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归档模式,Prayer 的清理DB2的归档日志。算是给对自己在DB2归档方面学习作一个总结,也给自己留一点资料。db2事务日志和归档的管理1.DB2的日志模式1.1循环日志 当循环日志生效时,事务数据将通过循环的方式写入主要日志文件。当存储于某个日志文件中的所有记录都不再需要用于恢...
一、jqGrid简介: jqGrid 是一款运行于web上,用以展现和处理列表数据的ajax能力的JavaScript控件。因为它是通过ajax毁掉机制动态读取数 的客户端解决方案,因此它可以和包括asp,php,jsp,java sevlet,ColdFusion,perl等服务器端集成。同时它是基于jqury库的,是jqury库的一个插件,它的运行需_jqgrid版本
前言近期线上平台出现一次故障,mongo数据库被oom了,由于是高可用架构,重新选举了主节点后,继续工作,没想到刚选举完又被oom,mongo重启达到了分钟级别,多个节点被oom后,不能很快的拉起来提供服务,对业务产生了巨大的影响。分析•目前从表面来看,有这样几个问题1.内存128g,在这么高的配置下都发生了OOM,那么看来是有优化空间的,mongo为什么吃了这么多内存 2.为什么启动这么慢通过表分析,发现有很多大表,其中一个巨大的表占用了110个g,且有频繁的读写。原因是因为有很多冷数据,未做冷热数据分离_mongo oom问题
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....
一、先安装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 ..
当前位置: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写爬虫,老师叫我加界面设计,怎么弄写界面的话可以有两种方式,一种是GUI方式,可以使用tk或者QT之类的还有一种就是使用WEB方式,做一个HTML的界面,可以使用简单的flask来做python怎么使用qtdesigner设计的ui软硬件OS X EI CapitanPython 3.5.1PyQt 5.5.1PyCharm 5.0.1前言在PyQt5系列教程的篇h50218157,...