数组基础

一、概念

       数组:相同类型数据的集合。

二、定义

      定义的方式有3种。

      A.程序员定义方法

          int [] arr = new int [5];   //(推荐)
 或者     int  arr[] =new int [] ;

   大多数时候使用的都是“程序员定义法”。推荐3星。

   B.先声明后创建

       int arr[];
       arr=new int[10];
   在不确定数组大小时,可以先定义数组名称站位。这种情况不多。

   C.直接初始化

      int arr[]={1,5,6,68,4,62};
或者  int[] arr=new int[]{1,5,6,68,4,62};
     在定义的时候就直接赋值,进行了初始化。这样做省的后面一个个再赋值。

    注意左边的【】括号中不能加入数字定义数组长度,因为这种定义方法下数组的长度是由右边{}括号内的内容决定的。
三、数组的使用

    数组长度 

      Java中每个数组都有length 属性,表示数组长度。

      length属性是public,final,int 的,即length是只读的,一旦定义,就不能改变。

如何判读两个基础数据类型的数组是否为同一对象?

      数组类容的比较是否可以使用equals呢?

public class ArrayTest2
{
	public static void main(String[] args) {
		int [] a = new int[]{1,2,3};
		int [] b = {1,2,3};
		
		System.out.println(a.equals(b));

	}
}
    输出结果为false,看来无法直接使用equals 证明两个数组是同一对象。那怎么办呢?

    一种是自己写方法,另一种是利用Java.util.Arrays。

import java.util.Arrays;
public class ArrayTest2 {
	
	public static boolean isEqual(int a[], int b[]) {
		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;
	}

	public static void main(String[] args) {
		int [] a = new int[]{1,2,3};
		int [] b = {1,2,3};
		
	    System.out.println(isEqual(a,b));
	    System.out.println(Arrays.equals(a, b));
	}
}
对象数组的运用

       当数组中存放的不是基础数据类型,而是对象时,其实其存放的不是对象本身,而是对象的引用。当对象生成之后,引用才指向对象。否则,引用指向为null。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * 对象数组的使用
 */
public class Test2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Dogs[] dog = new Dogs[3];

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);
		// 为3只狗赋值
		for (int i = 0; i < dog.length; i++) {
			dog[i] = new Dogs();
			// 请从控制台输入狗名
			System.out.println("请输入第" + (i + 1) + "只狗名:");
			String name = br.readLine();
			dog[i].setName(name);

			System.out.println("请输入第" + (1 + i) + "只狗的体重:");
			String tempWeight = br.readLine();
			float weight = Float.parseFloat(tempWeight);
			dog[i].setWeight(weight);
		}
		float sum=0;
		//计算总体重,平均体重
		for(int i=0;i<dog.length;i++){
			sum+=dog[i].getWeight();
		}
		System.out.println("3只狗的总体重是:"+sum+"   平均体重是:"+(sum/dog.length));
	}
}

class Dogs {
	String name;
	float weight;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public float getWeight() {
		return weight;
	}

	public void setWeight(float weight) {
		this.weight = weight;
	}
}
特别注意:     dog[i] = new Dogs();  

      在开始我们已经声明并且创建了dog数组,但是在使用dog数组时,还需要对“对象”初始化,Dogs类定义时没有重写构造函数,因此初始化的时候直接是new Dogs();

        对象数组,使用之前必须对“对象”初始化。

四、二维数组

       Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,因此二维数组的每一维可以大小不同。

       声明二维数组的时候,可以只指定第一维大小,空缺第二维大小,以后再指定第二维长度的大小,但是不能空缺第一维大小(不能只指定列数,不指定行数)。

二维数组的初始化

静态初始化

               int Array[][] = new int [][] {{1,2},{3,4,5,8}};

      或者  int Array[][] =  {{1,2},{3,4,5,8}}; (推荐)

动态初始化

a.直接为每一维分配空间

       int  Array [][] = new int [2][3] ;

b.从最高维开始为每一维分配空间

      int Array[] = new int  [2][ ];

      Array[0]=new int [3];

      Array[1] =new int[2];

      Array[0][0]=1;

     Array[0][1]=1;

     ……

     Array[2][2]

/**
 * 二维数组的演示
 * @author Red
 *
 */
public class ArrayTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int [][] a=new int [][]{{1,2},{3,4},{1,2,3,4}};
		for(int i=0;i<a.length;i++){
			for(int j=0;j<a[i].length;j++){
				System.out.print(a[i][j]+" ");
			}
			System.out.println(  );
		}
		
		
		int[][] arr = new int[2][];

		arr[0] = new int[1];
		arr[1] = new int[2];

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j]+"  ");
			}
			System.out.println( );
		}
	}
}


输出结果是:

1 2 
3 4 
1 2 3 4 
0  
0  0  

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值