Hey Everyone,

I want to instantiate an ArrayList in java. I realize the method to doing this is:

ArrayList<String> determiners = new ArrayList <String>();

Where "A" is added to the arraylist once created. However, the problem I'm having is that the .add method doesn't work unless in a main method. What is the santax for making it work in a class without the main method.


5 Years
Discussion Span
Last Post by milkman93

add() can always work without main method.. this is a simple code showing that happening.

import java.util.ArrayList;

public class tester {

    ArrayList<String> arr = new ArrayList<String>();

    public tester(){
        arr.add("sure ");
        arr.add("it ");
        arr.add("... see :) ");
        for(String s : arr)

    public static void main(String[] args){
        tester t = new tester();


Edited by somjit{}


hai milkman93

as somjit{} said along with that, you may use static block concept for your requirement like as follows

class SampleTest
       ArrayList<String> arr = new ArrayList<String>()
       // code for printing these array list values values

and these static blocks are executed while class is loading without creating object

let me know if you have any dioubts in my clarification

Edited by radhakrishna.p: providing clarity on the colution


but these are only for static variables, hence the term 'static' block. for instance variables, why not using the constructor of the class?

in the end, you'll need a main method to start your application, doesn't mean all your logic needs to be in there.


Instance variables can be initialized in constructors, where error handling or other logic can be used. To provide the same capability for class variables, the Java programming language includes static initialization blocks.

umm.. whats the difference between class variables and instance variables? i thought they were the same ? i read that we work with instances of the class , instead of the class itself.. so i suppose then the exceptions to this would mean a static class ? like math?

Edited by somjit{}


somjit: until you actually instantiate your object's instance, non-static members 'll not be known, simply because the JVM 'll not know the instance to which to attach them.

class => static, they depend on the class, not on an instance there-of, equal for every instance of the class
instance => they depend on an instance, each instance can have it's own unique values

an instance variable can not be initialized within a static block, simply because it doesn't exist yet.
as JamesCherrill also stated: the arr variable doesn't even exist outside of the static block, so, even though it IS a correct answer to the question, it's also a bit a useless one.


umm.. whats the difference between class variables and instance variables? i thought they were the same

There's no such thing as a "class variable" per se. He means a static data member, which is definitely different from an instance variable in that it exists independently of any instance of the class.


Thanks somjit{} ! That solved the problem and clarified things for future cases.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.