'AB' не будет выводом, потому что конкатенация не меняет содержимое 'str'. Конкатенация создает только новую строку «AB», которая ни к чему не привязана и, следовательно, теряется.
Чтобы создать AB в виде печати, вам нужно написать System.out в методе finalize строки (гипотетически)
Вывод может быть A, когда текущий объект является сборщиком мусора и str был инициализирован как "A"