views:

7480

answers:

9

I come from a php background and in php, there is an array_size() function which tells you how many elements in the array are used. Is there a similar method for a String[] array?

thanks

+6  A: 
array.length

It is actually a final member of the array, not a method.

jjnguy
IIRC, it's not actually a field, it just looks like one.
Tom Hawtin - tackline
Oh, then what is it? Some special Array thing?
jjnguy
a "pseudo field" which is compiled to a special array length op-code, rather than the field access op-code.
Pete Kirkham
It is a field, accroding to §10.7 (http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 ): "The public final field length, which contains the number of components of the array (length may be positive or zero)."
Michael Myers
Which doesn't mean Pete Kirkham is wrong, of course.
Michael Myers
+4  A: 

array.length final property

it is public and final property. It is final because arrays in Java are immutable by size (but mutable by element's value)

dfa
+7  A: 

Yes .length

    String[] array = new String[10];
    int size = array.length;
Kris
A: 

Arrays are objects and they have a length field.

String[] haha = {"olle", "bulle"};

haha.length would be 2

willcodejavaforfood
Just to nitpick. But I believe arrays are NOT objects in Java - they are one of the two reference type of variables. The other being objects.
jabbie
@jabbie: Really? Do you have a reference for that? I only question it because you can say Object o = new String[] { "hello" };
Simon Nickerson
simon i think the reason that statement works is because they introduced the reflexive classes for all of the primitive types.
sweeney
Read the first sentence of http://java.sun.com/docs/books/jls/third_edition/html/arrays.html and then try telling us that arrays aren't objects. ;)
Michael Myers
A: 

In java there is a length field that you can use on any array to find out it's size:

 String[] s = new String[10];
 System.out.println(s.length);
bruno conde
A: 

A bit off topic:

are you sure that php has a array_size() function? I don't see one here

Fortega
+1  A: 

Not really the answer to your question, but if you want to have something like an array that can grow and shrink you should not use an array in java. You are probably best of by using ArrayList or another List implementation.

You can then call size() on it to get it's size.

Simon Groenewolt
+1  A: 

The answer is "All of them". A java array is allocated with a fixed number of element slots. The "length" attribute will tell you how many. That number is immutable for the life of the array. For a resizable equivalent, you need one of the java.util.List classes - where you can use the size() method to find out how many elements are in use.

However, there's "In use" and then there's In Use. In an class object array, you can have element slots whose elements are null objects, so even though they count in the length attribute, but most people's definitions, they're not in use (YMMV, depending on the application). There's no builtin function for returning the null/non-null counts.

List objects have yet another definition of "In Use". To avoid excessive creation/destruction of the underlying storage structures, there's typically some padding in these classes. It's used internally, but isn't counted in the returned size() method. And if you attempt to access those items without expanding the List (via the add methods), you'll get an illegal index exception.

So for Lists, you can have "In Use" for non-null, committed elements, All committed elements (including null elements), or All elements, including the expansion space presently allocated.

Tim H
A: 

If you want a function to do this

Object array = new String[10];
int size = Array.getlength(array);

This can be useful if you don't know what type of array you have e.g. int[], byte[] or Object[].

Peter Lawrey