In our team we found some strange behaviour where we used both `static` and `final` qualifiers. This is our test class:

```
public class Test {

    public static final Test me = new Test();
    public static final Integer I = 4;
    public static final String S = "abc";

    public Test() {
        System.out.println(I);
        System.out.println(S);
    }

    public static Test getInstance() { return me; }

    public static void main(String[] args) {
        Test.getInstance();
    }
} 

```

When we run the `main` method, we get a result of:

```
null
abc

```

I would understand if it wrote `null` values both times, since the code of static class members is executed from top to bottom.

Can anyone explain why this behaviour is happening?