Search code examples
javaclassattributesinitializing

Java defining or initializing attributes of a class


Is there a difference between defining class attributes and initializing them? Are there cases where you want to do one over the other?

Example:

The following code snippets should point out the difference that I mean. I'm using a primitive and an object there:

import Java.util.Random;

public class Something extends Activity {
    int integer;
    Random random = null;

    Something(){
        integer = 0;
        random = new Random();
        ....

vs.

import Java.util.Random;

public class Something extends Activity {
    int integer = null;
    Random random;

    Something(){
        integer = 0;
        random = new Random();
        ....

Solution

  • Firstly you cannot set a primitive to be null as a primitive is just data where null is an object reference. If you tried to compile int i = null you would get a incompatible types error.

    Secondly initializing the variables to null or 0 when declaring them in the class is redundant as in Java, primitives default to 0 (or false) and object references default to null. This is not the case for local variables however, if you tried the below you would get an initialization error at compile time

     public static void main(String[] args)
     {
         int i;
         System.out.print(i);
     }
    

    Explicitly initializing them to a default value of 0 or false or null is pointless but you might want to set them to another default value then you can create a constructor that has the default values for example

    public MyClass
    {
       int theDate = 9;
       String day = "Tuesday";
    
       // This would return the default values of the class
       public MyClass()
       {
       }
    
       // Where as this would return the new String
       public MyClass (String aDiffDay)
       {
          day = aDiffDay;
       }
    }