JAVA学习笔记21——多维数组+数组常用方法

最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。

本篇介绍的全部是数组的知识,可能顺序不是太有逻辑性,但是由于是看视频记得,所以就跟着视频里面老师讲的顺序来吧,重新组织臣做不到啊~

首先在之前简单介绍一维数组之后来看一下多维数组,其实在实际的应用中三维以及三维以上的都是很少用到的,所以集中介绍二维的~



二维数组的初始化有静态的和动态的,具体见如下代码:

public class Test01 {
	public static void main(String[] args) {
		//,静态初始化,对应有内存图
		int [][] b = {
						{1,2},
						{3,4,0,9},
					    {5,6,7}
					};
		//动态初始化
		int[][]  a = new int[3][];
		a[0] = new int[2];
		a[1] = new int[4];
		a[2] = new int[3];
		
		//默认初始化的时候全都默认是0
		a[0][0] = 1;
		a[0][1] = 2;
		a[1][0] = 3;
		a[1][1] = 4;
		a[1][2] = 0;
		a[1][3] = 9;
		a[2][0] = 5;
		a[2][1] = 6;
		a[2][2] = 7;
		System.out.println(a[2][2]);
	}
}
内存图:


接下来做一个矩阵相加的运算:

/**
 * 封装了矩阵常用的算法
 */
public class Matrix {
	/**
	 * 打印指定的矩阵
	 * @param c
	 */
	public static void print(int[][] c){
		//打印矩阵
		for(int i=0;i<c.length;i++){
			for(int j=0;j<c.length;j++){
				System.out.print(c[i][j]+"\t");
			}
			System.out.println();     //外层循环里面加一个换行符
		}
	}
	/**
	 * 矩阵加法
	 * @param a
	 * @param b
	 * @return
	 */
	public static int[][]  add(int[][] a,int[][] b){
		int[][] c = new int[a.length][a.length];   //注意这里的定义
		for(int i=0;i<c.length;i++){
			for(int j=0;j<c.length;j++){
				c[i][j] = a[i][j]+b[i][j];
			}
		}
		return c;
	}
	public static void main(String[] args) {
		int[][]  a = {
						{1,3,3},
						{2,4,7},
						{6,4,9}
					 };
		int[][]  b = {
				{3,3,3},
				{2,4,7},
				{1,4,9}
		};
		int[][] c = add(a, b);   //把这两个方法封装起来,可重用性就很高了,如果遇到三个二位数组同时相加等类似情况,overload一个就好了。
		print(c);
	}
}
然后看一下数组拷贝的方法:arraycopy,它来自System类,先来介绍System类: System 类包含一些有用的类字段和方法。它不能被实例化。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
参数列表:  src - 源数组。 srcPos - 源数组中的起始位置。 dest - 目标数组。 destPos - 目标数据中的起始位置。 length - 要复制的数组元素的数量。 

简介(来自JDK文档):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。如果参数 src 和 dest 引用相同的数组对象,则复制的执行过程就好像首先将 srcPos 到 srcPos+length-1 位置的组件复制到一个带有 length 组件的临时数组,然后再将此临时数组的内容复制到目标数组的 destPos 到 destPos+length-1 位置一样。 If 如果dest 为 null,则抛出 NullPointerException 异常。 如果 src 为 null, 则抛出 NullPointerException 异常,并且不会修改目标数组。 

数组的二分查找:public static int binarySearch(char[] a,char key);参数列表:   a - 要搜索的数组 ;key - 要搜索的值 

数组的冒泡排序算法代码实现:

public class maopaopaixu {
	void suanfazhixing(int[] a){
		for(int i=0;i<a.length-1;i++){//i控制外层轮数,第i轮内层比较length-i次
			for(int j=0;j<a.length-1-i;j++){//内层
				if(a[j]>a[j+1]){
					int t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
			}			
		}
		System.out.println(Arrays.toString(a));
	}
}
数组的遍历就没有必要调用现成的方法来写了,直接使用for循环即可。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值