Para que serve o ! e o != no Java

Por exemplo:

if (!Coco.equals(“oi”))
{
//Resto do código
// Coco é uma String
}

Outro:
if (coco != 2002)
{
//Resto do código
//Coco é um int
}

“!” é o operador lógico não/negação

no seu código seria mais ou menos assim:

se coco NÃO FOR igual a "oi" { execute o código }

o operador “!=” é o operador matemático diferente

se coco FOR DIFERENTE DE 2002 { execute o código }

fiz um exemplo aqui pra ilustrar

String nome = "Gabriel";
		int numero = 0;

		if (!nome.equals("oi")) {
			System.out.println("é verdadeiro");
		}

		if (numero != 2002) {
			System.out.println("é diferente de: 2002");
		}

se retirar os operadores vai ver que o código não apresenta nada, espero ter ajudado

Valeu cara, me ajudou muito. Agora entendi.

Quando se fala de referências a objetos (como essa da String), há dois conceitos diferentes de igualdade:

Duas referências podem apontar para o mesmo objeto, portanto, conter o mesmo valor. Nesse caso, é o que o operador de == e != compara.
Duas referências à objetos diferentes podem conter objetos com o mesmo conteúdo. É o que o equals compara.

Por exemplo:

[code]String x = new String(“Olá”);
String y = new String(“Olá”);
String z = x;

System.out.println(x == z); //Retorna true, apontam para o mesmo objeto
System.out.println(x == y); //Retorna false, apontam para objetos diferentes
System.out.println(x.equals(y)); //Retorna true, os objetos tem o mesmo conteúdo
[/code]

Nunca compare objetos (incluido o String) com ==.

na minha opiniao, conforme aprendi o ! significa negacao e o != significa diferente…

[quote=ulisses007]na minha opiniao, conforme aprendi o ! significa negacao e o != significa diferente…
[/quote]

Exatamente. == compara se dois objetos tem a mesma identidade. != compara se tem identidade diferente.

Esses operadores não testam o conteúdo do objeto, diferentemente do que fazem com tipos primitivos (int, float, double, etc.)