На уровне языка существует объявление полей с инициализацией, но не на уровне байткода. Компилятор переносит все операции инициализации в начало объявленного конструктора или в конструктор по умолчанию. Соответственно, ваш код после компиляции будет соответствовать такому:
public class Student {
private String name;
private String secondName;
private int age;
private String format;
private String info;
public void personInfo(){
System.out.println(info);
}
public Student(String name, String secondName, int age) {
this.format = ("Меня зовут %s %s и мне %s лет");
this.info = String.format(format,name,secondName,age);
this.name = name;
this.secondName = secondName;
this.age = age;
}
}
А значит в момент выполнения
String.format(format,name,secondName,age)
в полях будет содержаться
null
.