`
x125521853
  • 浏览: 72682 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

第五章 数组

阅读更多

一:数组

     数组是多个相同类型信息的集合,通过数组可以统一管理这些数据。

     数组是一组相同类型的变量,可以通过公共的名称类引用,数组可以定义为任何类型,并且可以是一维或多维的,数组中的元素是可以通过它的下标来访问的。

 

二:一维数组

    所谓一维数组,就是一组相同类型数值的集合。

    创建一个数组之前需要声明数组,一维数组声明如下:

    数组类型  数组名[];  如:int num[];

    数组类型[] 数组;      如:int[] num;

    数组类型是Java语言中的任何一种基本数据类型或引用类型。

    数组名是任何合法的Java标识符。

 

    Java语言使用new运算符创建一个数组并为数组分配其所需要的内存空间。

    new 数据类型[数组大小]

    new关键字是分配内存空间。

    声明方式一:

         int[] month; //声明数组

         month = new int[12]; //分配12个大小整形变量的内存空间

    声明方式二:

         int[] month = new int[12];

    new所分配的数组的元素自动初始化为0。

    所有的数组的下表都是以0开始的。

    //文件名:ArrayDemo.java   

class  ArrayDemo
{
	public static void main(String[] args) 
	{
		//定义变量sum,存储数组中的所有元素的和
		float sum = 0;
		int a[];
		a = new int[10];//创建一个数组a

		//给数组a里的元素赋值
		a[0] = 45;
		a[1] = 19;
		a[2] = 25;
		a[3] = 34;
		a[4] = 23;
		a[5] = 35;
		a[6] = 60;
		a[7] = 27;
		a[8] = 16;
		a[9] = 32;

		//循环遍历数组中元素,把各个元素的值相加
		for(int i = 0; i<=9; i++){
			sum = sum =a[i];
		}
		System.out.println("平均年龄为:"+sum/10);
	}
}

 

  //文件名:ArrayDemo2.java 

public class ArrayDemo2 {
    public static void main(String[] args)    
	{
		int[] monthDays = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int sumDays = 0;
		
		//循环数组中的元素,将它们打印出来
		for(int i = 0; i < monthDays.length; i++)
		{
			System.out.println((i + 1) + "月的天数为:" + monthDays[i]);
			sumDays += monthDays[i];
		}
		System.out.println("总天数为:" + sumDays);
	}    
}

 

三:二维数组(多维数组)

    int[ ][ ] person; //方式一, 建议使用这种方式声明,看起来更像数组
    int person[ ][ ]; //方式二

   

   初始化方式一

   规则的二维数组:

       int[ ][ ] person = new int[5][4]; //方式一 

       int[ ][ ] person = new int[5][ ]; //方式二

    person[0] = new int[4];
    person[1] = new int[4];
    person[2] = new int[4];
    person[3] = new int[4];
    person[4] = new int[4];

 

   初始化方式二
   int[ ][ ] person = new int[ ][ ]{{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15},{16,17,18,19}};

   //文件名:ArrayDemo3.java   

public class ArrayDemo3 {
    public static void main(String[] args)
    {
    	int[ ][ ] person = new int[][ ]{
    		{95,85,96,100},{97,88,57,98},{95,87,78,85},{98,95,68,58}};
    		
    	int chinesesum = 0; //语文总分
    	int mathsum	= 0;//数学总分
    	int englishsum = 0;//英文总分
    	int computersum = 0;//计算机总分
    		
    	for(int i=0; i<person.length; i++)
    	{
    		for(int j=0; j<person[i].length; j++)
    		{
    			switch(j)
    			{
    				case 0:
    					chinesesum += person[i][j];
    					break;
    				case 1:
    					mathsum += person[i][j];
    					break;
    				case 2:
    					englishsum += person[i][j];
    					break;
    				case 3:
    					computersum += person[i][j];
    					break;
    			}
    		}
    	}    	
    	System.out.println("班级语文总分为:" + chinesesum + ",平均分为:" + (double)chinesesum/person.length);
    	System.out.println("班级语文总分为:" + mathsum + ",平均分为:" + (double)mathsum/person.length);
    	System.out.println("班级语文总分为:" + englishsum + ",平均分为:" + (double)englishsum/person.length);
    	System.out.println("班级语文总分为:" + computersum + ",平均分为:" + (double)computersum/person.length);
    }
}

 

   不规则二维数组
   二维数组的第二维长度都可以不相同,如:
   int[ ][ ] person = new int[5][ ]; //方式三
   person[0] = new int[4];
   person[1] = new int[4];
   person[2] = new int[2];
   person[3] = new int[3];
   person[4] = new int[3];

   //文件名:ArrayDemo4.java  

public class ArrayDemo4 {
	public static void main(String[] args)
	{
		int[][] a = new int[4][];
		
		a[0] = new int[2];
		a[1] = new int[3];

		a[2] = new int[]{89,45,34,53};
		a[3] = new int[]{10};
		
		a[0][0] = 23;
		a[0][1] = 322;
		
		a[1][0] = 85;
		a[1][1] = 185;
		a[1][2] = 285;
		
		for(int i = 0; i<a.length; i++)
		{
			for(int j=0; j<a[i].length; j++)
			{
				System.out.print(a[i][j] + "\t");
			}
			System.out.print("\n");
		}
	}
}

 

四:数组的常用操作

   1. 获取数组的长度, length属性

   2. 数组的比较,Arrays类提供了一个equals来比较两个数组是否相等

   3. 数组的排序,Arrays类提供了数组排序的sort函数

   4. 把数组转换为字符串,Arrays类的toString方法函数可以将一个指定的数组转换为一个字符串

   //文件名:EqualsArray.java   

import java.util.Arrays;

public class EqualsArray{
	public static void main (String[] args) 
	{
		int[] a = new int[10];
		int[] b = new int[10];
		int[] c = new int[10];
		
		Arrays.fill(a,3);
		Arrays.fill(b,3);
		Arrays.fill(c,3);
		
		if(Arrays.equals(a,b))
		{
			System.out.println("数组a和b相等");
		}
		else
		{
			System.out.println("数组a和b不相等");
		}
		
		if(Arrays.equals(a,c))
		{
			System.out.println("数组a和c相等");
		}
		else
		{
			System.out.println("数组a和c不相等");
		}
		
		b[2] = 30;
		if(Arrays.equals(a,b))
		{
			System.out.println("数组a和b相等");
		}
		else
		{
			System.out.println("数组a和b不相等");
		}
	}    
}

 

  //文件名:ArraySort.java  

import java.util.Arrays;

public class ArraySort 
{
	public static void main (String[] args) 
	{
		int[] a = {45,4,5,98,7,41};
		int[] b = {9,4,7,3,24,1};
		
		Arrays.sort(a); //整个排序
		Arrays.sort(b,2,5); //部分排序,从下标2开始,到下标5,但不包括5
		
		System.out.println("数组a排序后:");
		for(int i=0; i<a.length; i++)
		{
			System.out.print(a[i] + "\t");
		}
		System.out.println();
		
		System.out.println("数组b排序后:");
		for(int i=0; i<b.length; i++)
		{
			System.out.print(b[i] + "\t");	
		}
		System.out.println();
	}
}

 

  //文件名:ToString.java  

import java.util.Arrays;

public class ToString
{
	public static void main (String[] args) 
	{
		byte[] a = {1,2,3,4};
		short[] b = {30, 34};
		int[] c = {654,65,465};
		long[] d = {465L,79000L};
		char[] e = {'a','s','d','8','9','7'};
		boolean[] f = {true, false};
		float[] g = {};
		double[] h = new double[0];
		
		System.out.println(Arrays.toString(a));
		System.out.println(Arrays.toString(b));
		System.out.println(Arrays.toString(c));
		System.out.println(Arrays.toString(d));
		System.out.println(Arrays.toString(e));
		System.out.println(Arrays.toString(f));
		System.out.println(Arrays.toString(g));
		System.out.println(Arrays.toString(h));
	}   
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics