Concatenação e comparação de strings fornecem resultados inesperados na instrução println

Não consegui descobrir o seguinte comportamento,

String str1= "abc";
String str2 = "abc";

System.out.println("str1==str2 "+ str1==str2);
System.out.println("str1==str2 " + (str1==str2))

A saída para a instrução acima é a seguinte:

falso

str1 == str2 verdadeiro

Por que isso está acontecendo? Por que a saída não é a seguinte:

str1 == str2 verdadeiro

str1 == str2 verdadeiro

questionAnswers(5)

yourAnswerToTheQuestion