When Must Local Variables Be Initialized?

The following code compiles fine. I would like to know why variable c, a local variable, is not explicitly initililized? Do local variables need to be initilized immediately or just before use in an expression? Thanks. public class TestClass { static int a; int b; public TestClass() { int c; c = a; a++; b += c; } public static void main(String args[]) { new TestClass(); } }