数组:一组数,一组变量。例:定义100个整形变量
数组属于引用类型,数组型数据是对象,数组中的每个元素相当于该对象的成员变量。
数组中的元素可以是任意数据类型,包括基本数据类型和引用数据类型。
Java语言中生命数组时不能指定其长度。例:int a[5];非法
数组属于引用类型的数据,在声明时,默认的初始值为“null”。
null:此数据没有,暂时不能是使用。
引用数据类型都必须开辟空间,使用new关键字开辟。数组下标从0开始。
public class JavaDemo33 { public static void main(String args[]) { int i [] = null;//声明一个数组i,初始值为null 动态声明数组方法 i = new int [10]; //用new为数组分配内存空间,定义数组内容,包含10个整形变量,初始值为0 //数组的使用看下标,数组元素为0-9 System.out.println(i[0]);//打印i数组中的第一个元素 } } |
在数组声明时不能声明其个数,只能用new开辟空间。和其它语言有区别。
public class JavaDemo34 { public static void main(String args[]) { int i [] = null; i = new int [10]; for (int x=0;x<10 ;x++ )//打印数组中的元素和值 { System.out.println("i["+x+"]="+i[x]); } } } |
引用传递:传递内存地址的使用权。永远要在脑海中考虑内存的变化。
public class JavaDemo38 { public static void main(String args[]) { int i []={1,2,2,2,23,3,4,5,6,7,8}; System.out.println("i的大小"+i.length); for (int x=0;x<i.length ;x++ ) { System.out.println("i的初值"+i[x]); } System.out.println(); int y[]=i; System.out.println("y引用传递后大小"+y.length); } } |
public class JavaDemo35 { public static void main(String args[]) { int i [] = null; i = new int [10]; for (int x=0;x<10 ;x++ ) { i [x] = x * x; } System.out.println("————改变之前————"); for (int x=0;x<10 ;x++ ) { System.out.println("i["+x+"]="+i[x]); } int y[]=i;//为开辟的堆内存空间声明一个别名 for (int x=0;x<10 ;x++ ) //将y中的内容进行修改,x中的内容也随之被修改,叫做引用传递 { y[x]=x+1; } System.out.println("————改变之后————"); for (int x=0;x<10 ;x++ ) { System.out.println("i["+x+"]="+i[x]); } } } |
数组的初始化:
动态初始化:数组定义与为元素分配空间(赋值)分开进行,先开辟数组空间,之后为每个元素在赋值。
静态初始化:定义数组时同时为数组元素分配空间并赋值。
Java中为了避免出现数组越界的错误,准备了一个length属性,空通过其求出数组大小。
public class JavaDemo36 { public static void main(String args[]) { int i[]={1,2,3,4,5,6,7,8,9,10,40,444,5555,11};//静态声明数组方式 System.out.println("i数组的大小: "+i.length);//输出i数组内的元素大小 /* for (int x=0;x<14 ;x++ ) { System.out.println("i["+"]="+i[x]); }*/ for (int x=0;x<i.length ;x++ )//此方法更简单 { System.out.println("i["+"]="+i[x]); } } } |
二维数组:
public class JavaDemo37 { public static void main(String args[]) { int a[] []={{1,3,5},{2,4,6},{11,22,33}}; for (int x=0;x<a.length ;x++ ) { for (int y=0;y<a[x].length ;y++ ) { System.out.print(a[x][y]+"\t"); } System.out.println(); } } } |
方法:一段可以重复调用的代码。形式:
public static 方法返回值 方法名称([参数列表])
{
语句;
[return返回值];
}
方法调用在Java中有多种形式,现在所说的方法就是可以用main方法直接调用的方法。
public class JavaDemo39 { public static void main(String args[]) { print(); } // 定义一个方法,此方法用于打印Hello World // public static必须加上,因为是由主方法直接去调用 // void:表示此方法不需要任何返回值 // print:表示方法的名称,可以任意编写 // 方法名称编写时:第一个单词首字母小写,之后每个单词的首字母大写 public static void print() { System.out.println("******************"); System.out.println("** Hello Wor0d **"); System.out.println("******************"); } } |
如果定义一个有返回值的方法,将void换成相应的类型即可。
public class JavaDemo40 { public static void main(String args[]) { int sum = add(10,30);//调用add方法 sum用来接受add方法的返回值 System.out.println(sum); } public static int add(int x ,int y) //定义一个两数相加的方法 //x和y只在add方法中起作用,局部变量 { int temp=x+y; return temp;//如果返回值,则要加入return语句 } } |
方法重载:方法名称相同,但可以根据传入的参数的类型和个数完成不同的功能。例:print()方法就可以接受各种不同的参数。
public class JavaDemo41 { public static void main(String args[]) {//被重载的add方法 add(); add(1); add(1,11); add(10.0f); } public static void add() { System.out.println("一个无参数的add方法"); } public static void add(int i) { System.out.println("有一个int参数的add方法"); } public static void add(int i,int j) { System.out.println("有二个int参数的add方法"); } public static void add(float i) { System.out.println("有一个float参数的add方法"); } } |
Java中的这种特性也成为多态性——方法的多态性。通过同一个方法完成不同的功能。
public class JavaDemo42 { public static void main(String args[]) { int i[]=new int [10]; inti(i); print(i); } //声明一个方法,为数组中的内容初始化 //把堆内存空间的内容取出,在方法中进行加工 public static void inti(int x[]) { for (int y=0;y<x.length ;y++ )// 进行数组中元素值的初始化 { x[y]=y+1; } } //定义第二个方法用于打印数组 public static void print(int x[]) { for (int y=0;y<x.length ;y++ ) { System.out.println("数组["+y+"] = "+x[y]); } } } |
让方法返回一个数组:
public class JavaDemo43 { public static void main(String args[]) { int i[]=inti(40); print(i); } //用方法返回一个数组 public static int[] inti(int len)//根据数组的大小 { //java中的数组可以动态开辟 int x[]=new int [len]; for (int y=0;y<x.length ;y++ )// 进行数组中元素值的初始化 { x[y]=y+1; } return x;//return时不用加“[]” } //定义第二个方法用于打印数组 public static void print(int x[]) { for (int y=0;y<x.length ;y++ ) { System.out.println("数组["+y+"] = "+x[y]); } } } |
Java中提供了大量的API方法,熟练使用API可以编写出任意的程序。
public class JavaDemo44 { public static void main(String args[]) { int source[] = {1,2,3,4,5,6} ; int dest[] = {11,22,33,44,55,66,77,88,99} ; System.out.println("------- dest数组拷贝之前 ---------") ; printArray(dest) ; // 进行数组的拷贝 System.arraycopy(source,0,dest,0,source.length) ;//sourse.lenght表示所有
System.out.println("------- dest数组拷贝之后 ---------") ; printArray(dest) ; } public static void printArray(int x[]) { for (int i=0;i<x.length;i++) { System.out.println("数组["+i+"] = "+x[i]) ; } } }; |
基本数据类型是一个值传递的过程,只传一个具体的值或字符。
引用数据类型,传递的是地址,方法已经明确验证。方法没有任何返回值,靠的是修改内存空间。