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的默认初始值为:\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]);

}

}

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

d934326f8b6b92506c0f37224a56e640.png

好吧,就先到这里吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值