Scusate la domanda forse banale ma come si effettuano confronti fra stringhe?

ad esempio, se io passo il valore "login" attraverso la querystringa macro

intro.jsp?macro=login

la ricavo con:

String macro = new String(request.getParameter("macro"));

e poi la confronto con:

if(macro == "login"){...}

non li considera uguali ...... perchè?