Skip to main content

Creation of Arrays in Java (The C++ Style)


Why can't we make arrays in Java like this:




int marks[5];



And assign values after this declaration?



Anyone please explain the terminology or difference.


Source: Tips4allCCNA FINAL EXAM

Comments

  1. This is because there are no stack arrays in Java. Here is Java equivalent:

    int[] marks = new int[5];


    It looks a lot like allocating dynamically-sized arrays in C++. Of course you don't have to worry about calling a delete[], because it's garbage collected.

    ReplyDelete
  2. Because the syntax you're citing allocates the array on the stack, and Java arrays are objects, and all Java objects are allocated on the heap (modulo recent JVM optimizations, but those are implicit).

    And it pretty much has to be that way in a language without manual memory management because stack-allocated stuff disappears when the call returns, leading to dangling pointers, and a fundamental feature of Java is not to allow stuff like that.

    Of course one could argue that Java should use the stack allocation syntax to do heap allocation, but that would have confused the heck out of anyone who knew C - not good.

    ReplyDelete
  3. In Java the size of the array is determined by the expression that creates it, e.g.:

    int[] marks = new int[5];


    or

    int[] marks = {1,2,3,4,5};




    Note also that although the syntax int marks[] is allowed in Java (Java has several such rules for compatibility with C++), it is not recommended, the syntax int[] marks is more idiomatic and thus preferred.

    ReplyDelete
  4. int marks[] = new int[]{1, 2, 3};

    ReplyDelete
  5. Because arrays are Object-s (inheriting from the Object class). And to create an object you have to use the new keyword. (Most of the time).
    I think the reason behind the new keyword is to denote that the variables are references to dynamically allocated instances.

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.