если один foo уже присутствует в куче, будет ли он снова создавать новый foo в куче?
Почему бы тебе просто не попробовать?
Я думал, что === не является допустимым оператором Java.
===
Да, новый объект будет создан в куче java, потому что вы создали новый объект String, используя новое ключевое слово
так это означает, что технически два одинаковых foo будут существовать в куче?
Да, оба существуют в куче
Почему бы тебе просто не попробовать?