java数组是静态的

java数组是静态的,而javaScript的数组是动态的。

当数组被初始化后,该数组的长度就不可变了。java程序中的数组必须经过初始化才可以使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值。

 

String[] str ;//声明一个字符串数组,未分配内存
System.out.println(str);
//此时IDE会报错:the local variable str may have been initiated

 

为指定初始值时,系统会自动为其初始化,以下是各种数据类型以及其对应的初始化值:

byte、short、int、long——0

float、double——0

char——'\u0000'

boolean——false

class、interface、array——null

 

public class ArrayDemo1 {
	public static void main(String[] args) {
		int[] i = new int[10];
		for(int ii : i ){
			System.out.print(ii + "\t");
		}
	}

}
/*out:
	0	0	0	0	0	0	0	0	0	0	*/

 

数组的初始化有以下两种方式:

1、静态初始化:由程序员显式指定每个数组元素的初始值,由系统决定数组长度。

2、动态初始化:由程序员指定数组长度,有系统为数组元素分配初始值。

 

不管什么方式,一旦初始化后,其长度就不可变,可以通过数组length属性(注意与length()的区别)来访问数组的长度。

public class ArrayDemo1 {
	public static void main(String[] args) {
		//静态初始化数组
		String[] str0 = new String[]{
			"静","态","初","始","化"	
		};//此时new String[]这里的 []是不能填入数据的
		for(String s : str0){
			System.out.print(s);
		}
		System.out.println();
		//动态初始化数组
		String[] str1 = new String[4];
		System.out.println(str1.length);
		String str2 = new String("123");
		System.out.println(str2.length());//调用String对象的length()方法
	}

}
/*out:
静态初始化
4
3*/

 

从上可以看出:

1、对于静态初始化方式,我们无需指定数组的长度,其长度又系统分配。

2、对于动态初始化,我们只需指定数组的长度,即为数组的每个元素分配内存空间,系统为其赋默认值。

 

需要注意的是:java的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存中的数组对象。有 时候我们可以改变一个数组变量所引用的数组对象。这样子就造成了数组长度可以改变的假象。

 

public class ArrayDemo1 {
	public static void main(String[] args) {
		//静态初始化数组
		String[] str0 = new String[]{
			"静","态","初","始","化"	
		};
		String[] str1 = new String[]{
			"静","态"	
		};
		System.out.println(str0.length);
		System.out.println(str1.length);
		System.out.println("=========");
		str1 = str0;//将str0的引用传递给str1
		System.out.println(str0.length);
		System.out.println(str1.length);	
	}
}
/*out:
	5
	2
	=========
	5
	5
*/

 

 引用类型数组的初始化:

引用类型数组的数组元素依然是引用类型,因此数组元素里存储的还是引用,它指向另一块内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值