Java defining or initializing attributes of a class

attributes, class, initializing, java

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;
   }
}

Problem

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(); .... ```

Original source