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