1. It should work. Try this example
class Test1
{
public static int m_x =2 ;
Test1()
{
m_x++;
}
}
class Test2
{
public static void main(
String[] args)
{
Test1 t = new Test1();
System.out.println(t.m_x);
}
}
2.The method main() must always be declared as static. The reason is, before an application starts execution, no objects exist, so in order to start execution, you need a method that is executable even though there are no objects. You can execute a static method even when no objects of a class exist, whereas instance methods (not static) can only be excuted in relation to a particular object
3.You can declare a variable within a constructor, but the scope of that variable will be local.