码迷,mamicode.com
首页 > 编程语言 > 详细

Java数组的基本讲解

时间:2015-03-19 10:11:32      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

  由于Java数组涵盖的内容比较多,这里从个人的角度对主要的内容进行相关的讲解。

  如有不足,欢迎批评指正~

  1)Java数组是动态还是静态的啊?

    Java语言是典型的静态语言,由此推断Java数组也是静态。何为静态,就是说Java数组在初始化的时候必须确定在内存中分配的空间的大小。

    具体实现方式就是在初始化数组的时候(注意不是声明数组的时候,这两个概念别搞混了)指定数组的长度,或者指定初始化数组的内容哦。

    同时需要明白数组变量并不是数组本身,数组变量是存储在栈中的,对应的数组对象是存储在堆中的。栈中的数组变量指向堆中的数组对象。

    例如:

   

package com.yonyou.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
  int[] array=new int[10];//初始化数组的时候指定类数组的长度
  int[] array_new=new int[]{1,2,3};//初始化数组的时候指定了对应的相关元素
                                                   //需要注意的是这里不能再指定对应的长度了哦
                                                   //否则的话会报错的哦。
 System.out.println("数组一的长度为:"+array.length);
 System.out.println("数组二的长度为:"+array_new.length);
 
  }
}

  2)Java数组的默认初始化值

       a.基本数据类型byte,short,int,long,默认的初始化值为0;

       b.基本数据类型float,double的默认初始值为0.0

       c.基本数据类型char的默认初始值为:\0000

       d.基本引用类型的默认初始值为null

package com.yonyou.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
      short[] array_0=new short[10];
	  int[] array_1=new int[10];
	  long[] array_2=new long[10];
	  byte[] array_3=new byte[10];
	  char[] array_4=new char[10];
	  boolean[] array_5=new boolean[10];
	  float[] array_6=new float[10];
	  double[] array_7=new double[10];
	  Car[] array_8=new Car[10];
	  System.out.println("short:"+array_0[5]);
	  System.out.println("int:    "+array_1[5]);
	  System.out.println("long: "+array_2[5]);	  
	  System.out.println("byte: "+array_3[5]);	  
	  System.out.println("char的默认值是否为\\u0000:"+(array_4[5]==‘\u0000‘));//无法直接显示字符的内容
	                                           //间接的显示
	  System.out.println("boolean: "+array_5[5]);	  
	  System.out.println("float     : "+array_6[5]);	  
	  System.out.println("double: "+array_7[5]);
	  
	  System.out.println("引用类变量初始化值为:: "+array_8[5]);	  
	  
  }
  
  /**
   * 创建一个测试对象
   * @author 小浩
   * @创建日期 2015-3-19
   */
  class Car{
	  
	  
  }
}

  3)Java数组一定要初始化吗?

         不是的。对于具体的反例,请看下面的内容:

        

package com.yonyou.test;



/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
       Car[] car1=new Car[10];
       Car[] car2;
       car2=car1;
       System.out.println(car2.length);
       
  }
  
  /**
   * 创建一个测试对象
   * @author 小浩
   * @创建日期 2015-3-19
   */
  class Car{
	  
	  
  }
}

  4)Java数组初始化的几种方式?

         数组的初始化一般分为两种:

        一种为静态初始化:

        在创建数组的时候就指定了数组的长度,如下面的内容:

        int[] array_static=new int[]{1,2,3};

        第二种为动态初始化:

        在创建数组的时候仅仅指定数组的长度

        int[] array_dynamic=new int[10];

        具体应用实例如下:

       

package com.yonyou.test;



/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
	  //静态初始化
      int[] array_static=new int[]{1,2,3};
      //动态初始化
      int[] array_dynamic=new int[10];
       
  }

  4)Java中的多维数组是怎么回事?

        说句到家的话,java中没有多维数组的概念。java中的多维数组可以当成一维数组来处理。初始化多维数组的时候可以转换成对应的一维数组。

        只不过这时一维数组中存储的不在是具体的元素值,而是对应的数组的引用地址。具体的也不多说了,请看下面的例子:

       

package com.yonyou.test;



/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
	  public static void main(String[] args) {		  
	        Object[] obj1=new Object[4];
	        obj1[2]=new Object[2];
	        Object[] obj2=(Object[]) obj1[2];
	        obj2[1]=new Object[3];
	        Object[] obj3=(Object[]) obj2[1];
	        obj3[2]=new int[5];
	        int[] obj4=(int[]) obj3[2];
	        obj4[3]=100;
	        System.out.println(obj4);
	        System.out.println(  ((int[])((Object[])((Object[])obj1[2])[1])[2]) );
	        System.out.println(obj4[3]);
	        System.out.println(((int[])((Object[])((Object[])obj1[2])[1])[2])[3]);
	  }

	}
	  

  

   好吧,就先到这里吧。

Java数组的基本讲解

标签:

原文地址:http://www.cnblogs.com/xiohao/p/4349450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!