-5

Say I have created classes and now in main method, I want to assign and call them.

I write: X x = new X(); and x = new X();

What is/are the difference/differences between these two?

jjavid
  • 13
  • 5

1 Answers1

4

Assuming that X is a class with a no-arg constructor (for example a default constructor), the following works:

    // Declare and initialize x
    X x = new X();
    // Assign new value to x
    x = new X();

The first code line declares a variable x and assigns a reference to the new instance of X to it (a new X object). The second line assigns a new X instance to the already declared variable x (thus discarding the reference to the first object). We declare a variable by putting the type name (or the word var) before them. So since in the first line, we have X x, this is a declaration.

In Java, variables need to be declared before they are first used. So the first code line would not work without the type name X at the front. Java would complain that the variable x had not been declared.

On the other hand, we are only allowed to declare each variable once. So putting type name X before the second line would be an error too. My Eclipse says Duplicate local variable x because it “thinks” that I am trying to declare a second variable also named x, which is not allowed (for good reasons).

Arvind Kumar Avinash
  • 71,965
  • 6
  • 74
  • 110
Ole V.V.
  • 81,772
  • 15
  • 137
  • 161