Concatenação
No Capítulo 2, “Operadores e declarações”, você aprendeu a adicionar números. 1 + 2 é claramente 3. Mas o que é "1" + "2" ? Na verdade, é "12" porque Java combina os dois objetos String. Colocar uma String antes da outra String e combiná-las é chamado concatenação string. Os criadores do exame OCA gostam da concatenação de strings porque o operador + pode ser usado de duas maneiras dentro da mesma linha de código. Não há muitas regras para saber isso, mas você tem que conhecê-los bem:
1. Se ambos os operandos forem numéricos, + significa adição numérica.
2. Se um dos operandos é um String, + significa concatenação.
3. A expressão é avaliada da esquerda para a direita.
Agora vamos ver alguns exemplos:
System.out.println(1 + 2); // 3
System.out.println("a" + "b"); // ab
System.out.println("a" + "b" + 3); // ab3
System.out.println(1 + 2 + "c"); // 3c
O primeiro exemplo usa a primeira regra. Ambos os operandos são números, então usamos a adição normal. O segundo exemplo é a concatenação de cadeias simples, descrita na segunda regra. As citações para o String só são usadas no código - eles não recebem saída.
O terceiro exemplo combina a segunda e terceira regras. Desde que começamos à esquerda, Java descobre como "a" + "b" é avaliado. Você já conhece esse: é "ab" . Então Java examina a expressão restante de "ab" + 3 . A segunda regra nos diz para concatenar já que um dos operandos é uma String .
No quarto exemplo, começamos com a terceira regra, que nos diz para considerar 1 + 2 . Ambos os operandos são numéricos, então a primeira regra nos diz que a resposta é 3 . Então nós temos 3 + "c" , que usa a segunda regra para nos dar "3c" . Observe que todas as três regras são usadas em uma linha? o exame leva isso um passo adiante e vai tentar enganá-lo com algo parecido com isto:
int three = 3;
String four = "4";
System.out.println(1 + 2 + three + four);
Quando você vê isso, basta ir devagar e lembrar as três regras - e não se esqueça de verificar os tipos de variáveis. Neste exemplo, começamos com a terceira regra, que nos leva a considerar 1 + 2 . A primeira regra nos dá 3 . Em seguida temos 3 + three. Já que três é do tipo int, nós ainda usaremos a primeira regra, dando 6 . Em seguida, temos 6 + four. Como four é do tipo String, nós mudamos para a segunda regra e obtemos uma resposta final de "64" . Quando você vir perguntas como essa, apenas tome seu tempo e verifique os tipos. Ser metódico vale a pena.
Há apenas mais uma coisa a saber sobre a concatenação, mas é fácil. Nisso por exemplo, você só precisa lembrar o que faz o +. s += "2" significa a mesma coisa que s = s + "2" .
4: String s = "1"; // s currently holds "1"
5: s += "2"; // s currently holds "12"
6: s += 3; // s currently holds "123"
7: System.out.println(s); // 123
Na linha 5, estamos "adicionando" duas strings, o que significa que as concatenamos. A linha 6 tenta enganar você adicionando um número, mas é como se escrevermos s = s + 3. Nós sabemos que um string “plus” significa qualquer outra coisa para usar concatenação.
Para rever as regras mais uma vez: use adição numérica se dois números estiverem envolvidos, use a concatenação de outra forma e avalie da esquerda para a direita. Você memorizou estas três regras? Certifique-se de fazer isso antes do exame!