例题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;
}
}
}
}
}