zoukankan      html  css  js  c++  java
  • Java数组的基本讲解

      由于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的默认初始值为:000

           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]);
    	  }
    
    	}
    	  
    

      多维数组的内存模型图如下:

       

       好吧,就先到这里吧。

  • 相关阅读:
    construction of tuples containing 0 or 1 items
    globals()
    __new__
    ubuntu系统安装mysql登陆提示 解决Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'问题
    ubuntu系统更新源
    Python Web开发问题收集(二)
    linux后台执行./run.py提示python syntax error near unexpected token `('
    linux下执行scrapy的爬虫定时任务
    ubuntu系统中crontab的使用介绍
    JMeter BeanShell断言使用
  • 原文地址:https://www.cnblogs.com/xiohao/p/4349450.html
Copyright © 2011-2022 走看看