Java中的数组
① 含义: 相同数据类型的元素集合(使用时主要涉及到数组的定义、初始化、使用等问题);
② 声明:
在使用某一数组之前,必须先声明出它(定义它)。
要点F数组的声明只是表明有此数组,但并未真正地分配出内存空间,因而还必须对它实例化(分配出内存空间)。
③ 实例化数组:
通过为数组分配指定的内存空间来实例化该数组,可采用new来实现(因为Java中的某一数组,其实是Array数组类的对象)。
new 类型 [元素个数]; 即:
数组类型 [ ] 数组名=new 数组类型 [元素个数];
也可: int [ ] Array=new int [10]; //将声明与实例化合二为一;
④ 初始化:
在声明时,可以采用{ … }来赋初值,此时将自动创建出该数组,并将其元素成员赋初值。
int [ ] Array={1,2,3,4,5};
⑤ 使用数组:
使用下标(从0开始到元素个数-1),来引用元素之值。
i nt [ ]=new int[10];
会产生异常ArrayIndexOutofBceundsExcertion(这个错误数据越界)
a[5]=1;
a[-1]=4;
a[10]=2;
⑥ 获取数组中元素个数(数组具有唯一的属性就是Length)
每一个数组即为Array数组类的子类,其父类Array中有一个成员变量length指示数组元素的个数。从而可以利用数组名•length来获得数组中的元素个数。
int a[ ]=new int[10];
a. length; //返回的值将为10;椐此可得到数组中的元素个数;并且可以动态地创建出数组。
int a[]=new int [10] ;
f or(int i=0; i < a.length; i++)
{
System.out.print(a[]+" ");
}
⑦ Java中支持动态大小的数组:
数组的元素个数是通过计算而来的,而非预先定义的。
int arraySize=10;
int myArray[]=new int [arraySize];
⑧ 对象数组:
先定义出数组;再实例化各个元素对象。
Point p[]=new Point[10]; //先定义出数组
for(int i=0; i<10;i++)
{
p[i]=new Point(10, 10); //再实例化各个元素对象
}
⑨多维数组
int[][] dayValue = new int[52][7];
dayValue[10][1] = 100;
int totalLength=dayValue.length;
int rowLength=dayValue[0].length;
应用例:
class TotalProduct
{
public static void main(String[] arguments)
{
int[] denver = {
1 5000006, 18810000, 20752110
};
int[] philadelphia = {
15020000, 18708000, 21348000
};
int[] total = new int[denver.length];
int sum = 0;
for (int i = 0; i < denver.length; i++)
{
total[i] = denver[i] + philadelphia[i];
System.out.println((i + 1993) + " production: " + total[i]);
sum += total[i];
}
System.out.println("Average production: " + (sum / denver.length));
}
}
import java.util.Random;
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//
Student [] array=test1.creatArray(11);
test1.printArray(array);
System.out.println("下边是排序后的结果");
test1.xuz(array);
test1.printArray(array);
}
//x选择排序
public static void xuz(Student[] array) {
for(int i=0;i<=array.length-1;i++)
{ int min=i;
System.out.print("pp");
for(int j=i+1;j<array.length;j++)
if(array[j].getScore() < array[min].getScore())
min=j;
//jioahuanshuju
Student temp=array[min];
array[min]=array[i];
array[i]=temp;
}
}
//获取姓名以及成绩
public static Student[] creatArray(int length )
{
Student [] array= new Student[length];
Random random= new Random();
for(int i=0;i<array.length;i++){
//实例化Student对象,存入到array数组中
Student stu = new Student("姓名"+i,random.nextInt(10));
//讲stu对象添加到数组中
array[i] = stu;
}
return array;
}
//打印名单
public static void printArray(Student [] array)
{
for(int i=0;i<array.length;i++){
Student stu = array[i];//获取数组中的数据对象
//输出
System.out.println("姓名:"+stu.getName()+" 学分:"+stu.getScore());
}
}
}
public class Student {
/**
* @param args
*/
private String name;
private int score;
private String Number;
public Student(String name, int score ) {
this.name=name;
this.score=score;
this.Number=Number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
Number = number;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
//重写tostring
public String toString()
{
return " 学号:"+Number+"姓名:"+name +"学分"+score;
}
}
二维数组的代码
import java.util.Random;
/**
* 二维数组的使用类
*
*
*/
public class test2 {
static int r;
static int g;
public static void main(String[] args) {
//调用创建二维数组的方法
int [][] array = test2.createArray(4,4);
test2.printArray(array);
//调用求取最大值的方法
test2.maxArray(array);
}
/*
* 创建二维数组的方法
* @param row表示二维数组的行
* @param column表示二维数组的列
*
*/
public static int[][] createArray(int row,int column){
//实例化一个int类型的数组对象
int [][] array = new int[row][column];
//实例化一个随机数类的对象
Random random = new Random();
//循环控制
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
array[i][j] = random.nextInt(200)+300;
}
}
return array;
}
/**
* 关于寻找最大质值的坐标的
*设置对整个数组的查询
*/
public static void maxArray(int[][] array)
{
//实例化一个随机数类的对象
int max=array[0][0];
//循环控制
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
if(max<array[i][j])
max=array[i][j];
r=i;
g=j;
}
}
System.out.print("最大值是"+max+"坐标是 "+r+g);
}
/**
* 打印二维数组的方法
* @param array要被打印的一位数组对象
*/
public static void printArray(int [][] array){
//循环控制
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}