Isn't this one automatically put by the compiler if I don't put it in a subclass's constructor?
That means I don't even need to care about it? In some articles they put it out.
And if I've got one constructor with arguments, will this be the constructor, or does it take a constructor without argument list?
Firstly some terminology:
So all classes have at least one constructor.
Subclasses constructors may specify as the first thing they do which constructor in the superclass to invoke before executing the code in the subclass's constructor.
If the subclass constructor does not specify which superclass constructor to invoke then the compiler will automatically call the accessible no-args constructor in the superclass.
If the superclass has no no-arg constructor or it isn't accessible then not specifying the superclass constructor to be called (in the subclass constructor) is a compiler error so it must be specified.
For example:
public class Base { }
public class Derived extends Base { }
This is fine because if you add no constructor explicitly Java puts in a public default constructor for you.
public class Base { }
public class Derived extends Base { public Derived(int i) { } }
Also fine.
public class Base { public Base(String s) { } }
public class Derived extends Base { }
The above is a compilation error as Base has no default constructor.
public class Base { private Base() { } }
public class Derived extends Base { }
This is also an error because Base's no-args constructor is private.