1 Java中的数组

数组是一个变量,用于将相同数据类型的数据存储在存储单元中

(所有元素必须属于相同的数据类型)

数组的基本结构

1.  数组中存储的数据称为数组元素。

2.  不论元素多少,该数组都只有一个名称,即数组名称。

3.  数组元素在数组里顺序排列编号,首元素编号规定为0,其它元

     素顺序编号。
    
数组元素的编号也称为元素下标。依次为0,1,2,3,4……(n-1)

4.  数组中的每个元素都可以通过下标来访问。

5.  数组的大小(长度)是数组可容纳元素的最大数量,定义一个数

     组的同时也定义了它的大小。

6.  数组越界:数组已满但是还继续向数组中存储数据,程序会出错

2 如何使用数组

1)声明数组

语法:   数据类型   数组名[ ]    //声明数组

         如:   double height[ ]
        
或者
        
数据类型[ ] 数组名;      //声明数组
        
如:    int[ ] score

注意:此种方法声明数组不需要规定数组长度  如:

      int score[30]   //错误!!!!!!!!!!

2)分配空间

    声明了数组,只是得到了一个存放数组的变量,并没有为数组元素分配内存空间,还不能使用。

声明数组后,使用new关键字给数组分配空间

语法:  数组名 = new 数组类型[数组长度]   //分配空间

  如:  int [ ] score           //声明数组
        score = new int[30];      //
分配空间
       
        double height[ ]
         //声明数组
        height = new double[30];   //
分配空间
        String[ ] nam
;           //声明数组
        name = new String[30]
    //分配空间

声明数组的同时给数组分配内存空间

语法:  数据类型[ ]  数组名 = new 数据类型[数组长度]

注意:

一旦声明了数组长度,就不能再修改。

创建了数组,又没有赋初值,此时,必须声明数组的长度

数组整体属于引用数据类型,当你声明了一个数组对象,它也具有方法和属性

3)赋值

访问数组元素

语法:  数组名[下标值]

向声明好的数组中存放数据,如:

score[0]=87

使用循环给数组赋值,如:

Scanner input = new Scanner(System.in)
for (int i=0; i<30; i++) {
   score[i] = input.nextInt( )
//从控制台接收键盘输入进行循环赋值
}

4)声明数组、分配空间和赋值在同一语句中一并完成的方法:

语法:   数组类型[ ] 数组名 = { 1,值2,值3,。。。。。。,值n}

如: int[] score = { 60,70,98,90,76}  //创建一个长度为5的数组score
ó int[] score = new int[] {60,70,98,90,76}//类似于类的实例化

注意:直接创建并赋值得方式一般在数组元素比较少的情况下使用。

      而且,方括号中不能有值
     
此时,三项工作必须一并完成,分行实现是不合法的

5)对数据进行处理

获取数组长度

语法:    数组名.length //使用数组对象的默认属性之一

数组元素默认初值表(无论是成员,还是局部

定义数组后,若没有指定初值,则依据数据类型不同,给数组元素赋予一个默认值

  int  0  double 0.0  char  ‘u\0000’  Boolean false

3 数组应用

使用java.util.Arrays类操作数组

Java中提供的Arrays类可以对数组进行像排序、搜索、比较等常见的基本操作。
Arrays
类位于java.util包中。

Arrays类中的方法(此类中的方法均为静态方法,无需对象,直接使用类

                  名调用

排序(sort( )):将数组中的元素按照从小到大升序进行排序

第一步  导入java.util.Arrays

第二步  调用Arrayssort方法。

语法:  Arrays.sort(数组名)

如:  import java.util.Arrays;
      import java.util.Scanner;
      public class test11111111 {
       /**
        * @param args
        */
       public static void main(String[] args) {
              // TODO Auto-generated method stub
             
              int str[]={9,8,7,6,5,4};
             
              Arrays.sort(str);
             
              for(int i=0;i<str.length;i++){
                     System.out.print(str[i]+" ");
              }
       }
输出结果为:4 5 6 7 8 9

为什么使用Arrays类中的方法不需创建Arrays类的对象?

这是因为Arrays类将它的sort方法定义为静态方法

查询
(binarySearch( ))
  int binarySearch(int[], int ch);
 
已经进行排序的数组进行二元搜索,
第一元为已经排好序的数组名
第二元是要在数组中查找的元素值
如果找到指定的值就返回该值所在的位置(数组元素
                   
的下标),如没有返回
-1
.
如:
import java.util.Arrays;
import java.util.Scanner;
public class test11111111 {
       /**
        * @param args
        */
       public static void main(String[] args) {
              // TODO Auto-generated method stub
             
              int str[]={9,8,7,6,5,4};
             
              Arrays.sort(str);  //
必须先排好序
             
              int re=Arrays.binarySearch(str, 5);  //
查找数组中
5
的位置
             
              for(int i=0;i<str.length;i++){
                     System.out.print(str[i]+" ");
              }
             
              System.out.print("\n"+re);
        }
}
输出结果为:
4 5 6 7 8 9
            1