Java数组一定要初始化才能使用吗?

数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组。Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。

在正常的Java开发中,使用Java数组之前,我们都会对数组进行初始化,为数组中的元素分配内存空间、赋值等,但Java数组一定要初始化吗?不初始化可以 么?

其实,java的数组变量是引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量,比如下面这个例子:


  1. public class T {  
  2.  
  3.   /** 
  4.  
  5.    * @param args 
  6.  
  7.    */  
  8.  
  9.   public static void main(String[] args) {  
  10.  
  11.     // TODO Auto-generated method stub  
  12.  
  13.     //定义并初始化nums数组  
  14.  
  15.     int nums[] = new int[]{3,13,4,6};  
  16.  
  17.     //定义一个prices数组变量  
  18.  
  19.     int prices[];  
  20.  
  21.     //让prices数组指向nums所引用的数组  
  22.  
  23.     prices = nums;  
  24.  
  25.     for(int i=0;i<prices.length;i++){  
  26.  
  27.       System.out.println(prices[i]);  
  28.  
  29.     }  
  30.  
  31.     //将prices数组的第三个元素赋值为100  
  32.  
  33.     prices[2] = 100;  
  34.  
  35.     //访问nums数组的第三个元素 将看到数组100  
  36.  
  37.     System.out.println(nums[2]);  
  38.  
  39.   }  
  40.  

从上面代码可以看出,定义了prices数组之后,并未对prices数组进行初始化。 当执行int prices[]之后,

程序的内存分配如图

从图可以看出,此时的prices数组还未指向任何有效的内存,未指向任何数组对象,此时的程序还不可使用prices数组变量。

当程序执行prices = nums之后,prices变量将指向nums变量所引用的数组,此时prices变量和nums变量引用同一个数组对象。

执行这条语句之后,prices变量已经指向有效的内存及一个长度为4的数组对象,因此程序完全可以正常使用prices变量了。

对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

所以,Java语言中的数组,不一定要初始化也可正常使用。Java初学者可以尝试用上面这里例子的方法,实际操作一下,加深印象。最后,希望小编的分享对大家有帮助。

作者:小麦麦子

来源:51CTO

时间: 2024-09-16 02:53:28

Java数组一定要初始化才能使用吗?的相关文章

Java数组 不一定要初始化也可正常使用

数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.Java语言的数组变量是引用类型的变量,因此具有Java独有的特性. 在正常的Java开发中,使用Java数组之前,我们都会对数组进行初始化,为数组中的元素分配内存空间.赋值等,但Java数组一定要初始化吗?不初始化可以 么? 其实,java的数组变量是引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量,比如下面这个例子: public class T {

关于Java数组声明、创建、初始化的相关介绍_java

本文讲述了Java数组的几个相关的方面,讲述了对Java数组的声明.创建和初始化,并给出其对应的代码.一维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数] 实例:TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { i

java数组的初始化问题

问题描述 java数组的初始化问题 java数组在使用之前一定要初始化吗?为什么?如果不进行初始化,底层的状态是什么?使用的话会发生什么错误? 解决方案 java数组不初始化就使用会报错,这点和c等语言不同,这是语言的特点,在安全方面做出了保证.c则不会报错,不过增加的风险. 解决方案二: 数组的初始化分为两种! 即为:静态初始化和动态初始化! 简而言之,静态初始化就是,由程序员去指定显式(注意是显式)指定每个元素的值,系统自动判定数组长度. 如下: int[] array = {1,2,3};

Java数组声明、创建、初始化基础_java

一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i

Java 数组声明、创建、初始化详解_java

一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i

关于Java 数组内存分配一点认识

 可能Java 数组大家都很熟悉,最近我遇到了一个关于Java 数组内存分配的问题.         呵呵.突然就发现许多书上"基本数据类型存储在栈内存当中,对象则保存在堆内存"这句话完全是错误的.下面是个简单的例子代码: public class Test { public static void main(String[] argv) { // 静态初始化数组 String[] names = { "Michael", "Orson", &q

新手入门:Java数组特点及基本使用技巧

技巧|数组 1.关于数组的特点 1)在Java中,无论使用数组或容器,都有边界检查.如果越界操作就会得到一个RuntimeException异常. 2)数组只能保存特定类型.数组可以保存基本类型,容器则不能.容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理. 3)容器类只能保存对象的引用.而数组既可以创建为直接保存基本类型,也可以保存对象的引用.在容器中可以使用包装类,如Integer.Double等来实现保存基本数据类型值. 4)对象数组和基本类型数组在使用上几乎是相同的:

初学者求解java数组下标越界问题

问题描述 初学者求解java数组下标越界问题 public class Test{ public static void main(String[]args){ System.out.println(args[0]); System.out.println(args[1]); }} doc显示Exception in thread ""main"" java.lang.ArrayIndexOutOfBoundsException:0 at Test.main(Tes

random-关于java数组的问题,想来这边问一下

问题描述 关于java数组的问题,想来这边问一下 首先是这样子的,我们作业时是一个打地鼠的小程序,模拟地鼠出现的样子. 我是先设定一个4x4的数组Array[4][4],数组默认值全部设定为0. 然后设定两个随机变量row和col,范围都在0-3之间 然后把Array[row][col]的值从设定为1,以表示地鼠出现的位置. 那接下来就是我想要问的地方: 如何把出现过的位置舍弃,就是希望接下来随机的row和col不要再重复出现同样的数字? 下面是代码片段 int i = new Random()