JAVA学习第三节---数组的学习 2011-7-28

一、数组的创建及使用,先声明,再用new运算符进行内存分配

声明一维数组有下列两种类型,语法如下:  数组元素类型     数组名字   [ ];     数组元素类型[ ]   数组名字;  

也可以声明的同时为数组分配内存,语法如下:数组元素类型    数组名字  =new   数组元素类型[数组元素的个数];

声明一维数组有下列两种类型,语法如下:  数组元素类型     数组名字   [ ][ ];            数组元素类型[ ][ ]   数组名字;二维数组常用于表示表,表中的信息以行和列的形式组织 ,第一个下标代表元素所在行,第二个元素代表元素所在列。

初始化数组

例如 : int array[ ] = new int[1,2,3,4,5];   int array[ ][ ]={ {12,0},{45,10} };

我总是看不懂这个数组----  int a[][]={{1},{2,3},{4,5,6}};  究竟是几行几列,于是写了一个程序验证了一下

public class Example{
public static void main(String args[]){
       int a[][]={{1},{2,3},{4,5,6}};
       for(int i=0;i<a.length;i++){
    	   for(int j=0;j<a[i].length;j++){
             System.out.println("a["+i+"]"+"["+j+"]"+"="+a[i][j]);
    	   }
       }
    }
 }
运行的结果是这个二维组织比较特别,一共有三行,第一行的元素只有一个,第二行的元素有两个,第三行呢,有三个元素。

实例一:利用二维数组,将二维数组中的元素呈梯形输出;

public class Example{
public static void main(String args[]){
         int i,j;
         int a[][]=new int[][]{{1},{2,3},{4,5,6}};
         for(i=0;i<a.length;i++){
		     for(j=0;j<a[i].length;j++){
			 System.out.print(a[i][j]);
		 }
		 System.out.println();
         }
    }
 }

实例二:在遍历数组时,使用forreach语句可能会更简单。

public class Example{
public static void main(String args[]){
       int a[][]={{4,3},{1,2}};
       System.out.println("數組中的元素是: ");          //提示信息
       for(int x[]:a){                                 //外层循环变量是一维数组
    	   for(int e:x){                                 //循环遍历数组中的每一个元素
    		   if(e==x.length){                      //判断变量是二维数组中的最后一个元素
    			   System.out.print(e);
    		   }
    		   else{
    			   System.out.print(e+"、");
    		   }
    	   }
       }
    }
 }

二、Array类的一些方法

1、使用Array类的方法时,就必须引入包,import java.util.Arrays;

fill(int[ ] a,int value)-------可将指定int值分配给int类型数组的每个元素。  a是要进行元素替换的数组,value是要存储数组中所有元素的值。

import java.util.Arrays;
public class Example{
public static void main(String args[]){
      int arr[]=new int[5];    //這個數組一共有5個元素
      Arrays.fill(arr,0,3,8);   //用8去替換數組arr的第1個到第,3元素,
      Arrays.fill(arr, 8);     //用8去替換數組的全部元素
      for(int i=0;i<arr.length;i++){
      System.out.println("數組的第"+i+"個元素是: "+arr[i]);
      }
    }
 }

至于输出结果,自己运行一下。

2、sort(object [ ])-----對數組進行排序。

import java.util.Arrays;
public class Example{
public static void main(String args[]){
      int arr[]=new int[]{1,2,5,8,10};
      Arrays.sort(arr);
      for(int i=0;i<arr.length;i++){
      System.out.println(arr[i]);
      }
    }
 }

挺好的一個方法。

3、copyOf(Object [ ],int newlength)方法与copyOfRange(Object [ ],int formIndex,int tolnIndex )方法可实现对数组的复制。前者是复制数组至指定长度,后者则将指定数组的指定长度复制到一个新数组中。formIndex指定开始复制数组的索引位置,tolnIndex要复制范围的最后索引位置。

import java.util.Arrays;
class Example{
public static void main(String args[]){ 
	int arr[]=new int[]{1,11,5,8,10};
      //Arrays.sort(arr);
	 int newarr[]=Arrays.copyOf(arr,7);            //主要的用法在这里
      for(int i=0;i<newarr.length;i++){
      System.out.print(newarr[i]+" ");
      }
      System.out.println();
      //Another sad=new Another();

    }
 }

复制数组最大的好处是可以扩大数组的长度,又不会失去一些数据。

4、binarySearch(Object [ ],key)binarySearch(Object [ ] ,int formIndex,int tolnIndex,key)-----對數組進行查詢,而返回的结果是所要查询元素的索引值即下标,后者是指定了范围查询,formIndex是包括这个下标,tolnIndex不包括。

import java.util.Arrays;
class Example{
public static void main(String args[]){ 
	int arr[]=new int[]{1,11,5,8,10};
      Arrays.sort(arr);
      for(int i=0;i<arr.length;i++){
      System.out.print(arr[i]+" ");
      }
      System.out.println();
      Another sad=new Another();//哈哈,顺便学了一下类的调用,在类里面一定要有方法


    }
 }
class Another{
	int arr1[]=new int[]{1,2,5,8,10};	
	int theIndex1=Arrays.binarySearch(arr1,2);//使用该方法时一定要先对数组进行排序
    int theIndex2=Arrays.binarySearch(arr1,0,2,1);//在下标0~2之间搜索1,不包括下标2.
    Another(){
    	   System.out.println(theIndex1);
    	   System.out.println(theIndex2);
    }
 
}

对很多人来说,这真的是非常小的非常小的case,但是对我来说是大大的进步。因为我以前总是喜欢边看书边敲代码。现在都是我自己编的。

那数组这一节就基本学完了,期待下一节

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值