从例题中学数组

例题1:交换两个数

方法一:数学方法交换

public class HelloWorld {
	public static void main(String[] args) {
		int a = 7;
		int b = 2;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
		System.out.println("---------------");
		a = a + b;
		b = a - b;
		a = a - b;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}
}

在这里插入图片描述
方法二:利用一个中间值转换

public class HelloWorld {
	public static void main(String[] args) {
		int a = 7;
		int b = 2;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
		System.out.println("---------------");
		int c=a;
		   a=b;
		   b=c;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}
}

【注意】:下面这个程序中调用swap方法,x,y是原生数据类型x,y只是把值传过去了,赋完值后,x,y的值还是没有变,不会因为调用这个函数而把值改变。

public class HelloWorld {
	public static void swap(int a,int b){
		int temp=a;
		a=b;
		b=temp;
	}
	public static void main(String[] args) {
		int x=3;
		int y=4;
		HelloWorld.swap(x, y);
		System.out.println(x);
		System.out.println(y);
	}
}

在这里插入图片描述
方法三:数组

	public static void swap(int [] a){
		int c=a[1];
		a[1]=a[0];
		a[0]=c;	
	}
	public static void main(String[]args){
		int []a={7,2};
	      swap(a);
		System.out.println(a[0]);
		System.out.println(a[1]);
	}
}

在这里插入图片描述
【说明】:数组变量本身就是一个引用,调用swap方法的时候,数组a也指向原来的数组,进行交换。在这里插入图片描述

例子2:接口

public class HelloWorld {
	public static void main(String[]args){
		I[]is=new I[2];//1
		is[0]=new C();//2
		is[1]=new C();//3   这三行代码可以写成 I[] is=new I[]{new C(),new C()};
	}
}
interface I{
}
class C implements I{	
}

【说明】:上面程序可以编译成功,接口是不能创建接口实例的,而 I[]is=new I[2];只是生成了一个数组对象之外,并没有生成一个接口实例,就像I j=null;语句,生成了I类型的引用,但是指向为空,它可以指向任何子类。这仅仅是定义了一个数组的声明:告诉编译器生成了一个I类型的长度为2的数组,数组的元素不指向任何对象。

例子3:判断数组是否相同,1)数组长度相同,2)数组各个元素值相同

方法一:

public class HelloWorld {
	public static void main(String[]args){
	int [] a={1,2,3};
	int [] b={1,2,3};
	System.out.println(isEquals(a,b));
}
	private static boolean isEquals(int[] a, int[] b) {
		// TODO Auto-generated method stub
		if (a==null||b==null) {
			return false;
		}
		if (a.length==b.length) {
			for (int i = 0; i < a.length; i++) {
				if(a[i]==b[i]){
					return true;
					}
		}
		}
		return false;		
	}
}

输出结果:true

方法二:

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
	int [] a={1,2,3};
	int [] b={1,2,3};
	System.out.println(isEquals(a,b));
	System.out.println(Arrays.equals(a,b));
}
	private static boolean isEquals(int[] a, int[] b) {
		// TODO Auto-generated method stub
		if (a==null||b==null) {
			return false;
		}
		if (a.length!=b.length) {
			return false;
		}
		for (int i = 0; i < a.length; i++) {
			if(a[i]!=b[i])
				return false;
		}
		return true;		
	}
}

输出结果:
true
true

例子4:关于Arrays

java中的JDK提供了一个类Arrays,里面的方法专门用来对数组进行一些辅助功能的动作。
1)可以进行输出数组,通过调用Arrays里的toString()方法来输出数组。

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
			int []arr={1,2,3,4,5,6,7,8,9,0};
			System.out.println(Arrays.toString(arr));
	}
}

输出数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

2)可以排序,通过调用Arrays里的sort()方法

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
			int []arr={1,8,9,4,5,6,1,4,5,0};
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));
	}
}

输出结果:
[0, 1, 1, 4, 4, 5, 5, 6, 8, 9]

例子5:拷贝数组

写一个程序将a数组中的前三个元素内容拷贝到b数组中?

public class HelloWorld {
	public static void main(String[]args){
			int []a={1,8,9,4,5,6,1,4,5,0};
		  int []b={4,5,6,4,5,7};
		  /*
		   * a-->源数组,待拷贝的数组
		   * 0-->源数组当中的起始位置,从源数组中的哪个位置开始拷贝
		   * b-->目标数组,元素拷贝到这个数组中
		   * 0-->目标数组当中的起始位置
		   * 3-->待拷贝的数组的个数,也就是需要拷贝多少长度的数组
		   * 这是个static方法,位于java.lang包下,不需要导入,直接用
		   */
		 System.arraycopy(a, 0, b, 1, 3);
		 for (int i = 0; i < b.length; i++) {
			System.out.println(b[i]+" ");
		}
	}
}

输出结果:
4
1
8
9
5
7

例子6:三维数组

三维数组实际开发中用的很少,一般用再游戏开发中,游戏开发需要很多数学知识,矩阵,傅立叶等。
三维数组定义格式:type[][][] a = new type[2][3][4];
三维数组可以理解为:数组的数组的数组。三维数组也可以是不规则的。


public class HelloWorld {
	public static void main(String[]args){
            int[][][]arr=new int[2][3][4];
            System.out.println(arr instanceof Object);//为true,说明数组arr是一个对象
	          System.out.println(arr instanceof int[][][]);//为true,说明数组arr是一个三维数组,类型是int[][][]
	          System.out.println(arr[0] instanceof int[][]);//为true,说明数组arr[0]是一个二维数组,类型是int[][]
	          System.out.println(arr[0][0]instanceof int[]);//为true,说明数组arr[0][0]是一个一维数组,类型是int
	for (int i = 0; i < arr.length; i++) {
		for (int j = 0; j < arr[i].length; j++) {
			for (int k = 0; k < arr[i][j].length; k++) {
				arr[i][j][k]=100;
			}
		}		
	}	
	}
}

在这里插入图片描述

发布了45 篇原创文章 · 获赞 38 · 访问量 2134

猜你喜欢

转载自blog.csdn.net/qq_44830627/article/details/105210653