У меня есть небольшой фрагмент кода, в котором я хотел бы узнать, что думает отладчик.
/**L05*/ public class Main {
/**L06*/ public static void sp(String a){
/**L07*/ System.out.println(a);
/**L08*/ }
/**L09*/
/**L10*/ public static void main(String[] args) {
/**L11*/ sp("start");
/**L12*/
/**L13*/ //object-1
/**L14*/ Player p1 = new Player();
/**L15*/ sp("p1");
/**L16*/
/**L17*/ //object-2
/**L18*/ Player
/**L19*/ p2
/**L20*/ =
/**L21*/ new
/**L22*/ Player
/**L23*/ (
/**L24*/ )
/**L25*/ ;
/**L26*/ sp
/**L27*/ (
/**L28*/ "p2"
/**L29*/ )
/**L30*/ ;
/**L31*/
/**L32*/ //object-3
/**L33*/ Player p3= new Player(){/**strange that this works*/};
/**L34*/ Player p4=
/**L35*/ new Player();
/**L36*/ Player p5;
/**L37*/ }
/**L38*/ }
code1
Я бы хотелзнать процесс выполнения от строки 18 до 30.
Например, когда я отлаживаю код (начиная со строки 11), он идет шаг за шагом так:
Line11 Там он выполняет метод и после этого переходит к
Line13 , потому что это комментарий.Он не выполняет его и затем переходит к
Строка 14 , где он делает объект Игрока -> резервирует пространство, необходимое игроку.Вызывает конструктор default-дает и ссылается (указатель с именем p1) на тип Player и помещает объект Player в Player.Endofline теперь переходит к
Строка 15 выполняется.Теперь он переходит к
Строка 17 это комментарий, а затем он переходит к
Строка 18 "?"Теперь я запутался.Когда я отлаживаю код -> он идет после строки 17 до строки 19, а не до строки 18 или строки 21 или того, как долго я думал, что компилятор начинается справа от точки с запятой и идет справа налево.
После Line19 он пропускает другие строки и переходит к
Строка 26 странно -> где находятсястроки 18,22-25, когда он выполняет эти строки.И как / когда отладчик распознает, когда я забыл точку с запятой в строке 25?
Я шаг за шагом отлаживал свой код с помощью точек останова.Вывод в порядке и хорошо.Код файла Player.java не важен для этого вопроса.Если что-то отсутствует или не понятно, пожалуйста, сообщите мне, и я могу добавить или изменить его.