Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #17544

Re: automatically initialized to null?

From "Jim Gibson" <jim.gibson@1:261/38.remove-k2r-this>
Subject Re: automatically initialized to null?
Message-ID <5023FE3E.56493.calajapr@time.synchro.net> (permalink)
Newsgroups comp.lang.java.programmer
References <5023FE3E.56492.calajapr@time.synchro.net>
Date 2012-08-09 18:44 +0000
Organization tds.net

Show all headers | View raw


  To: Lew
From: Jim Gibson <jimsgibson@gmail.com>

In article <90ca1dd2-f3eb-49d8-882c-de7f7a8e5d42@googlegroups.com>, Lew
<lewbloch@gmail.com> wrote:

> Mike Winter wrote:
> > markspace wrote:
> >> bob smith wrote:
> >>> I always forget stuff like this*
> >>>
> >>> If I have
> >>>
> >>> Bitmap[] bmps = new Bitmap[256];
> >>>
> >>> Are all 256 positions automatically initialized to null?
> >
> >> Yes.  I'm sure that's in the JLS someplace.
> >
> > "[If] there is no array initializer, and [...] a single [array
> > dimension expression] appears, a one-dimensional array is created
> > of the specified length, and each component of the array is
> > initialized to its default value ($4.12.5)."
> >        -- 15.10.1 Run-time evaluation of Array Creation Expressions
> >
> > "For all reference types ($4.3), the default value is null."
> >                               -- 4.12.5 Initial Values of Variables
> >
> > :-)
>
> See? The JLS is easy to use and very authoritative, and highly useful.

Not really. That extract of paragraph 15.10.1 is embedded in a long section 
discussing the allocation of arrays. It is statement 9 of 11 as quoted here:


"15.10.1. Run-time Evaluation of Array Creation Expressions

At run-time, evaluation of an array creation expression behaves as follows:

    If there are no dimension expressions, then there must be an array
initializer.

  A newly allocated array will be initialized with the values provided
by the array initializer as described in $10.6.

  The value of the array initializer becomes the value of the array
creation expression.

    Otherwise, there is no array initializer, and:

    - First, the dimension expressions are evaluated, left-to-right. If
any of the expression evaluations completes abruptly, the expressions to the 
right of it are not evaluated.

    - Next, the values of the dimension expressions are checked. If the
value of any DimExpr expression is less than zero, then a 
NegativeArraySizeException is thrown.

    - Next, space is allocated for the new array. If there is
insufficient space to allocate the array, evaluation of the array creation 
expression completes abruptly by throwing an OutOfMemoryError.


    - Then, if a single DimExpr appears, a one-dimensional array is
created of the specified length, and each component of the array is initialized 
to its default value ($4.12.5).

    - Otherwise, if n DimExpr expressions appear, then array creation
effectively executes a set of nested loops of depth n-1 to create the implied 
arrays of arrays.

A multidimensional array need not have arrays of the same length at each 
level."

From:
<http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.10.
1>


If you think that text is easy to find and parse to figure out how array 
elements are initialized, then my hat is off to you. I was unable to find it by 
scanning the table of contents. I would have expected it to be in Section 10: 
Arrays


> Pllptpptt! to the naysayers.

Back at you. :)

--
Jim Gibson

--- BBBS/Li6 v4.10 Dada-1
 * Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

automatically initialized to null? "bob smith" <bob.smith@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
  Re: automatically initialized to null? "markspace" <markspace@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
    Re: automatically initialized to null? "Mike Winter" <mike.winter@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
      Re: automatically initialized to null? "Lew" <lew@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
        Re: automatically initialized to null? "Jim Gibson" <jim.gibson@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
    Re: automatically initialized to null? "bob smith" <bob.smith@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
      Re: automatically initialized to null? "Eric Sosman" <eric.sosman@1:261/38.remove-tos-this> - 2012-08-09 19:46 +0000
        Re: automatically initialized to null? "bob smith" <bob.smith@1:261/38.remove-t9h-this> - 2012-08-10 18:39 +0000
  Re: automatically initialized to null? "Roedy Green" <roedy.green@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000

csiph-web