JAVA学习笔记21——多维数组+数组常用方法
2015-01-27 09:24
761 查看
最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。
本篇介绍的全部是数组的知识,可能顺序不是太有逻辑性,但是由于是看视频记得,所以就跟着视频里面老师讲的顺序来吧,重新组织臣做不到啊~
首先在之前简单介绍一维数组之后来看一下多维数组,其实在实际的应用中三维以及三维以上的都是很少用到的,所以集中介绍二维的~
![](http://img.blog.csdn.net/20150127093034384?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ0MDM1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150127093006734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ0MDM1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二维数组的初始化有静态的和动态的,具体见如下代码:
![](http://img.blog.csdn.net/20150127093019143?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ0MDM1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接下来做一个矩阵相加的运算:
参数列表: 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 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循环即可。
相关文章推荐
- 编写学习的java几种常用数组的排序方法,给大家分享一下
- java学习之旅57、58--数组_StringBuilder和StringBuffer的使用_JDK源码分析内部机制、常用方法补充_常见面试题答法
- Java学习笔记之常用方法类(一)String类、正则表达式
- Java学习笔记---数组操作的10大方法
- Java学习笔记---5.Java数组和方法
- java学习笔记(六)——String类的常用方法
- Java学习笔记之常用方法类(三) Data和Calendar类、Math、BigInteger和Random类、Random类
- (21)Java学习笔记——常用对象API /Scanner类
- JAVA学习笔记--多线程(二)线程常用方法
- Java学习笔记之String类的常用方法
- java学习之旅56--数组_StringBuilder和StringBuffer的使用_常用方法_方法链的实现_JDK源码分析
- Java学习笔记_003_方法和数组
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- [学习笔记]Java数组和方法
- java学习笔记(二)——JFrame常用方法
- Java常用集合类的常用方法 学习笔记
- Java学习笔记003——继承、抽象类、类相等测试、泛型数组列表、可变参数方法
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- Java基础学习应用_数组常用方法与排序(一)
- Java学习笔记之常用方法类(四)DecimalFormat类、Pattern与Match类