• java 数组详解


    from : http://blog.csdn.net/jionjionyoushen/article/details/6223006

    1.关于数组的特点

    1)在Java中,无论使用数组或集合,都有边界检查。如果越界操作就会得到一个RuntimeException异常。

    2)数组只能保存特定类型。数组可以保存原生数据类型,集合则不能。集合不以具体的类型来处理对象,它们将所有对象都按Object类型处理,集合中存放的是对象的引用而不是对象本身。

    3)集合类只能保存对象的引用。而数组既可以创建为直接保存原生数据类型,也可以保存对象的引用。在集合中可以使用包装类(Wrapper Class),如Integer、Double等来实现保存原生数据类型值。

    例码:int a = 10;

             Integer integer = new Integer(a);

             int b = integer.intValue();

             System.out.println(a = b);

    4)对象数组和原生数据类型数组在使用上几乎是相同的;唯一的区别是对象数组保存的是引用,原生数据类型数组保存原生数据类型的值。

    2.关于数组定义

         1)一维数组的声明方式:  type var[];      或type[] var;

             声明数组时不能指定其长度(数组中元素的个数),

             Java中使用关键字new创建数组对象,格式为:   数组名 = new 数组元素的类型 [数组元素的个数]

             例码:int num[];

                num=new int[3];

                 或  int num[]=new int[3];

       

    2)可以这样定义二维数组。

         例码:

                int [][] num;

                num=new int[3][];

                num[0]=new int[5];

                num[1]=new int[3];

                num[2]=new int[2];

              //定义了一个二维数组num,这个数组有三行,第一行5个元素,第二行3个元素,第三行2个元素。

    3)关于数组初始化

    *动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
          


     
    1. public class TestD  {   
    2.         
    3.    public static void main(String args[]) {        
    4.        int a[] ;        
    5.        a = new int[3] ;     
    6.        a[0] = 0 ;  
    7.        a[1] = 1 ;  
    8.        a[2] = 2 ;   
    9.        Date days[] ;  
    10.        days = new Date[3] ;   
    11.        days[0] = new Date(2008,4,5) ;       
    12.        days[1] = new Date(2008,2,31) ;   
    13.        days[2] = new Date(2008,4,4) ;  
    14.     }   
    15. }     
    16. class Date  {        
    17.  int year,month,day ;     
    18.     Date(int year ,int month ,int day) {  
    19.            this.year = year ;  
    20.            this.month = month ;  
    21.            this.day = day ;  
    22.        }  
    23.   }    

    *静态初始化:在定义数字的同时就为数组元素分配空间并赋值;


     
    1. public class TestS {  
    2.        public static void main(String args[]) {     
    3.              int a[] = {0,1,2} ;  
    4.              Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;  
    5.      }  
    6. }  
    7.         
    8. class Time{  
    9.           int hour,min,sec ;  
    10.           Time(int hour ,int min ,int sec) {  
    11.               this.hour = hour ;  
    12.               this.min = min ;  
    13.               this.sec = sec ;  
    14.           }  
    15.      }      


          *默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。


     
    1. public class TestDefault {  
    2.          public static void main(String args[])  
    3. {  
    4.             int a [] = new int [5];  
    5.             System.out.println("" + a[3]);  
    6.      }  
    7. }     

    3.关于数组的相关操作

    1)在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。

    2)数组的复制:System.arraycopy()。

    3)数组的排序:Arrays.sort()。

    4)在已排序的数组中查找某个元素:Arrays.binarySearch()。

    4.数组使用示例:

    1) 循环初始化数组元素
                 要求:初始化一个长度为100的int数组,数组中的元素依次为1-100。
                 这是一个基本的使用,主要是熟悉数组的语法,在实际编写时,需要发现数组下标和数组元素值之间的规律即可。
                 第一种思路:循环数组的下标0-99,则和下标对应的元素的值比数组下标多1。
                 则实现代码如下:
                           int[] m = new int[100];
                           for(int i = 0;i < m.length;i++){
                                    m[i] = i + 1;
                           }
                 代码说明:声明并初始化一个长度是100的数组,使用循环循环数组的下标,下标的区间是[0,m.length-1],其中m.length表示数组的长度。在实际赋值时,把数组的下标做成变量,则当i的值为0时,则m[i]就是m[0],依次类推,按照题目的要求,则数值的规律是i+1,这样循环结束以后,数组m中的值就依次是1-100了。
                 第二种思路:循环数组的值1-100,则下标比数组的值下1。
                 则实现的代码如下:
                           int[] m = new int[100];
                           for(int i = 1;i <= 100;i++){
                                    m[i – 1] = i;
                           }
                 该代码中循环变量i的值从1循环到100,则数组的下标是i – 1,这样也可以实现题目要求的功能。
        2)输出数列
                 要求:输出1 1 2 3 5 8 13……这样的数列,输出该数列的前20个数字。
                 该题是一个基本的数字逻辑,在实际解决该问题时,首先要发现该数字的规律,然后按照该规律来设计数组即可。
                 实现思路:数字的规律是除了数列里的前两个数字以外,其它的数字都满足该数字等于前两个数字的和,由于题目要求输出前20个数字,所以需要一个长度为20的数组,第一个和第二个数字直接赋值,后续的数字通过前两个数字元素得到。
                 则实现的代码如下:
                           int[] num = new int[20];
                           num[0] = 1;
                           num[1] = 1;
                           //循环初始化
        for(int i = 2;i < num.length;i++){
                                    num[i] = num[i – 1] + num[i – 2];
                           }
                           //循环输出
        for(int i = 0;i < num.length;i++){
                                    System.out.print(num[i]);
                                    System.out.print(‘ ‘);
                           }
                           System.out.println(); //换行

    在该代码中,初始化一个长度为20的数组,首先将数组中的前两个元素赋值成1,然后循环对后续的元素的赋值,如果当前元素的下标是i,则它前一个元素的下标是i-1,再前面一个元素的下标是i-2,只需要将这2个元素的值相加,然后赋值给当前元素即可。后面使用一个循环,输出数组中所有的元素,元素和元素之间有一个间隔的空格,在输出所有的元素以后换行。

  • 相关阅读:
    判断是否为蜘蛛抓取
    js Date
    JavaScript_Date对象说明
    php过滤字符串函数
    js 高考倒计时
    php 修改数据编码
    php 二维数组冒泡排序
    PSD网页切图制作HTML全过程教程
    产品经理职责
    互联网产品设计
  • 原文地址:https://www.cnblogs.com/interfacehwx/p/5388793.html
Copyright © 2020-2023  润新知