博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java数组的基本讲解
阅读量:5782 次
发布时间:2019-06-18

本文共 3617 字,大约阅读时间需要 12 分钟。

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

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

   

   好吧,就先到这里吧。

转载地址:http://yhcyx.baihongyu.com/

你可能感兴趣的文章
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>
分布式配置中心disconf第一部(基本介绍)
查看>>
Scenario 9-Shared Uplink Set with Active/Active uplink,802.3ad(LACP)-Flex-10
查看>>
UML类图中的六种关系
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>
mysql(待整理)
查看>>
2012年电信业八大发展趋势
查看>>
Web日志安全分析工具 v2.0发布
查看>>
JS重载
查看>>