为什么输出是0不是10呢

public class Main {

int a;
void Main() {
    a = 10;
}

public static void main(String[] args) {
    Main s = new Main();
    System.out.println(s.a);
}

}

img

这个是方法void Main() ,不是构造方法,要调用一下才是10

因为你并没有给a进行赋值,new Main调用的是构造器,而不是你写的void Main()方法,构造器是没有返回修饰符的,应该改为

public Main(){
  a=10;
}

构造方法写错了
public Main(){
this.a=10;
}

System.out.println(s.a);打印的是Main类中的第一行int a;这个值,你并没有通过你new的对象s调用Main类中的Main方法,所以最后a还是默认初始值,即0.
可以参考一下这张图

img