Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java String array: is there a size of method?

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.

like image 251
phill Avatar asked May 28 '09 15:05

phill


People also ask

Does array have a size method?

Classes like Vector, Stack and ArrayList all have a size method. So to get the size of an ArrayList, you call its size method.

How do I get the length of a String array?

With the help of the length variable, we can obtain the size of the array. Examples: int size = arr[]. length; // length can be used // for int[], double[], String[] // to know the length of the arrays.

How do you declare the size of a String array in Java?

To define String array of specific size in Java, declare a string array and assign a new String array object to it with the size specified in the square brackets. String arrayName[] = new String[size]; //or String[] arrayName = new String[size];

Do you have to specify size of array in Java?

Answer: No. It is not possible to declare an array without specifying the size. If at all you want to do that, then you can use ArrayList which is dynamic in nature. Q #2) Is Array size fixed in Java?


11 Answers

Yes, .length (property-like, not a method):

String[] array = new String[10];
int size = array.length;
like image 103
Kris Avatar answered Oct 01 '22 22:10

Kris


array.length

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

like image 38
jjnguy Avatar answered Sep 28 '22 22:09

jjnguy


Also, it's probably useful to note that if you have a multiple dimensional Array, you can get the respective dimension just by appending a '[0]' to the array you are querying until you arrive at the appropriate axis/tuple/dimension.

This is probably better explained with the following code:

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

Which produces the output:

5
12
like image 38
Liang Avatar answered Sep 30 '22 22:09

Liang


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)

like image 38
dfa Avatar answered Sep 28 '22 22:09

dfa


Arrays are objects and they have a length field.

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

haha.length would be 2

like image 31
willcodejavaforfood Avatar answered Sep 28 '22 22:09

willcodejavaforfood


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);
like image 39
bruno conde Avatar answered Sep 28 '22 22:09

bruno conde


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[].

like image 43
Peter Lawrey Avatar answered Sep 29 '22 22:09

Peter Lawrey


There is a difference between length of String and array to clarify:

int a[] = {1, 2, 3, 4};
String s = "1234";

a.length //gives the length of the array

s.length() //gives the length of the string
like image 32
Nzui Manto Avatar answered Sep 28 '22 22:09

Nzui Manto


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.

like image 23
Tim H Avatar answered Oct 01 '22 22:10

Tim H


All the above answers are proper. The important thing to observe is arrays have length attribute but not length method. Whenever you use strings and arrays in java the three basic models you might face are:

  1. String s=new String("vidyasagar");
    System.out.println(s.length()); // In this case we are using only String. No length attribute for Strings. we have to use length() method.
  2. int[] s=new int[10]; System.out.println(s.length); //here we use length attribute of arrays.
  3. String[] s=new String[10];
    System.out.println(s.length); // Here even though data type is String, it's not a single String. s is a reference for array of Strings. So we use length attribute of arrays to express how many strings can fit in that array.
like image 38
vidyasagar Avatar answered Oct 01 '22 22:10

vidyasagar


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.

like image 31
Simon Groenewolt Avatar answered Sep 28 '22 22:09

Simon Groenewolt