20

I want to ask a question about Java. I have a user-defined object class, student, which have 2 data members, name and id. And in another class, I have to declare that object[], (e.g. student stu[?];). However, I don't know the size of the object array. Is it possible to declare an object array but don't know the size? thank you.

4 Answers 4

27

As you have probably figured out by now, regular arrays in Java are of fixed size (an array's size cannot be changed), so in order to add items dynamically to an array, you need a resizable array. In Java, resizable arrays are implemented as the ArrayList class (java.util.ArrayList). A simple example of its use:

import java.util.ArrayList;

// Adds a student to the student array list.
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student());

The <Student> brackets (a feature called generics in Java) are optional; however, you should use them. Basically they restrict the type of object that you can store in the array list, so you don't end up storing String objects in an array full of Integer objects.

Sign up to request clarification or add additional context in comments.

2 Comments

Arrays in Java are not immutable. You can easily do myArray[2] = 13, thus changing the array. Perhaps you meant that their size cannot be changed?
Yes that is what I meant, thanks for clarifying that. I'll clarify that in my answer.
19

User ArrayList instead. It'll expand automatically as you add new elements. Later you can convert it to array, if you need.

As another option (not sure what exactly you want), you can declare Object[] field and not initialize it immediately.

1 Comment

-1: No example code. I much prefer this answer because they put in the tiniest bit of effort and actually gave enough info that further searching wasn't required after reading their answer: stackoverflow.com/a/3887507/901641
2

Its not possible,we need to specify the size of array when declaring object array;

  1. one way to declare object array

     student st[];
     st=new student[3];
    
  2. second way

     student st[]=new student[5];
    

in both cases not any objects are created only the space is allocated for the array.

st=new student[1];

this will create a new object;

1 Comment

if student is a class you should call Student with Capital S.
0

You could declare as: Student stu[]=null;, and create it with fixed size: stu[]=new Student[10] until you could know the size. If you have to use array.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.