Iniciante em Java, Duvida Operador Lógico de Negação ou NOT!

Ola pessoal, tudo bem? espero que sim!

Seguinte, estou começando a programar em Java, mas estou com problema referente a Lógica, devido a não fazer exercícios usando operador de Negação
ou NOT !.

Não ter o custume de usar esse operador, não estou entendendo, e não estou sabendo quando usar ele, e como?

Não estou entendendo como funciona esse operador lógico!?

Não estou sabendo em qual situação eu devo usar!?

Tipo como saber qual é a hora certa de usar esse operador lógico? em quais situações?

Espero que alguém me ajude, de forma mais simples possível para que eu consiga entender!

Muito obrigado a todos que responderem, abraço. Té +

posso estar enganado, mas isso tem cara de trabalho de faculdade… :confused:

esse operador vai negar uma condição sua

if (a == b) { //a é igual a b } ... if (a != b) { //a não é igual a b }
dê uma estudada em lógica de programação que vc vai entender melhor, caso isso não sirva…

[quote=erico_kl]posso estar enganado, mas isso tem cara de trabalho de faculdade… :confused:

esse operador vai negar uma condição sua

if (a == b) { //a é igual a b } ... if (a != b) { //a não é igual a b }
dê uma estudada em lógica de programação que vc vai entender melhor, caso isso não sirva…[/quote]

Ola erico_Kl,

Você está enganado, pois não é trabalho de faculdade, pois ainda não faço faculdade!

Entendi as duas condições que voce demostrou!

Si a for a for == a b , executa o que tem dentro do bloco if

Si a for diferente de b, executa o que tem dentro do bloco if

Mas estou querendo saber sobre o OPERADOR LÒGICO DE NEGAÇÂO ! com exemplos, de resoluçao de exercício que eu necessite usar esse operador de NEGAÇÂO ou NOT !

Entendeu?

Um exemplo é quando vc tem uma variável boolean e quer fazer uma condição quando ela é verdadeira ou falsa…

//Crio e inicializo uma variável do tipo boolean como verdadeira
boolean teste = true;

//Programa executa
.
.
.

//Se teste for true, não preciso colocar == true
if(teste){
.
.
.
}

//Da mesma forma com a negação - Esse trecho verifica se NÃO teste, ou seja, se a variável teste está setada como false
if(!teste){
.
.
.
}

Espero ter ajudado.

1 curtida

você vai usar muito este operador…
um exemplo da classe String, imagine que vc queira fazer alguma operação mas SOMENTE SE a String contiver alguma coisa. A classe String possui o método isEmpty() que retorna verdadeiro caso a mesma esteja vazia, porém ela não contém um isNotEmpty() pra retornar verdadeiro caso ela esteja preenchida. O que você faz? Nega o método isEmpty():

String str = "bla bla bla"; if (!str.isEmpty()) { //neste ponto vc tem certeza que a String contém alguma coisa.. }
entendeu?

Vamos lá.
Você estudou operadores lógicos (or, and, xor, nxor, nand, nor)?
Bem, se sim, então o ! tem a mesma função de um nand. Explico. Um and irá aceitar como verdadeiro tudo o que tiver, em ambos operandos, verdadeiro.
A saber

   A B R
1 V V V
2 V F F
3 F V F
4 F F F

O nand inverte esta condição, ou seja, irá aceitar como verdadeiro tudo que não tiver 2 verdadeiros.
Esta é a função do !, inverter o retorno de uma verificação booleana (e apenas booleana).
Portanto

boolean a = true;
       if(!a == false){
           System.out.println("Nand");
       }

Irá compilar e a saída será Nand.
Esta mesma lógica explica o !=

int a = 10;
int b = 2;
while(a != b){
 a--;
           System.out.println(a);
}

Irá imprimir 10 9 8 7 6 5 4 3

Entendeu?

[quote=ismaelsoj]Um exemplo é quando vc tem uma variável boolean e quer fazer uma condição quando ela é verdadeira ou falsa…

//Crio e inicializo uma variável do tipo boolean como verdadeira
boolean teste = true;

//Programa executa
.
.
.

//Se teste for true, não preciso colocar == true
if(teste){
.
.
.
}

//Da mesma forma com a negação - Esse trecho verifica se NÃO teste, ou seja, se a variável teste está setada como false
if(!teste){
.
.
.
}

Espero ter ajudado.
[/quote]

Hum, entendi ismaelsoj, valeu pela ajuda amigo!

Agora eu terei que fazer exercícios para poder fixar bem o conceito!

[quote=drsmachado]Vamos lá.
Você estudou operadores lógicos (or, and, xor, nxor, nand, nor)?
Bem, se sim, então o ! tem a mesma função de um nand. Explico. Um and irá aceitar como verdadeiro tudo o que tiver, em ambos operandos, verdadeiro.
A saber

   A B R
1 V V V
2 V F F
3 F V F
4 F F F

O nand inverte esta condição, ou seja, irá aceitar como verdadeiro tudo que não tiver 2 verdadeiros.
Esta é a função do !, inverter o retorno de uma verificação booleana (e apenas booleana).
Portanto

boolean a = true;
       if(!a == false){
           System.out.println("Nand");
       }

Irá compilar e a saída será Nand.
Esta mesma lógica explica o !=

int a = 10;
int b = 2;
while(a != b){
 a--;
           System.out.println(a);
}

Irá imprimir 10 9 8 7 6 5 4 3

Entendeu?[/quote]

Hum, entendi drsmachado, só terei agora que fazer exercicios usando esse operador NOT, para poder fixar realmente os conceitos.
Obrigado, e tudo de bom!

[quote=wellington.nogueira]O uso dela é mais claro quando você deve tratar, exclusivamente uma situação quando a mesma for false.

O operador de negação inverte o valor booleano de true para false e vice-versa e faz com que evite-se contruções “tortas” como essa:

if(metodoQueRetornaBooleano()) { //Se for true, não preciso fazer nada } else { //Se for false, executo alguma lógica }
Você leria esse código da seguinte maneira:
Se o método metodoQueRetornaBooleano() retornar true, faça nada.
Se o método metodoQueRetornaBooleano() retornar false, faça algo.

Essa mesma condição passa a ser mais limpa (ou como alguns preferem: elegante)

if( ! metodoQueRetornaBooleano()) { //Se for false, executo alguma lógica }

Você leria esse código da seguinte maneira:
Se o método metodoQueRetornaBooleano() NÃO retornar true, faça algo.[/quote]

Hum entendi, perfeitamente wellington.nogueira!

Só terei que treinar isso em exercícios, para poder fixar realmente os conceitos empredos!

vlw, obrigado ae pela ajuda, tudo de bom!

[quote=erico_kl]você vai usar muito este operador…
um exemplo da classe String, imagine que vc queira fazer alguma operação mas SOMENTE SE a String contiver alguma coisa. A classe String possui o método isEmpty() que retorna verdadeiro caso a mesma esteja vazia, porém ela não contém um isNotEmpty() pra retornar verdadeiro caso ela esteja preenchida. O que você faz? Nega o método isEmpty():

String str = "bla bla bla"; if (!str.isEmpty()) { //neste ponto vc tem certeza que a String contém alguma coisa.. }
entendeu?[/quote]

Hum, erico_kl , agora sim, pois con exemplos , conseguimos entender realmente os conceitos empregados!

Agora basta eu treinar , fazendo exercícios ae, fixo de vez os conceitos.

O uso dela é mais claro quando você deve tratar, exclusivamente uma situação quando a mesma for false.

O operador de negação inverte o valor booleano de true para false e vice-versa e faz com que evite-se contruções “tortas” como essa:

if(metodoQueRetornaBooleano()) { //Se for true, não preciso fazer nada } else { //Se for false, executo alguma lógica }
Você leria esse código da seguinte maneira:
Se o método metodoQueRetornaBooleano() retornar true, faça nada.
Se o método metodoQueRetornaBooleano() retornar false, faça algo.

Essa mesma condição passa a ser mais limpa (ou como alguns preferem: elegante)

if( ! metodoQueRetornaBooleano()) { //Se for false, executo alguma lógica }

Você leria esse código da seguinte maneira:
Se o método metodoQueRetornaBooleano() NÃO retornar true, faça algo.

public class Teste {
public static void main(String[] args) {

	int x = 1;
	if (!(x != 0 && x < 0)) {
		System.out.printf("Verdadeiro");	
	} else {
		System.out.printf("Falso");
	}
}

}
Resultado = Verdadeiro

Basta fazer :
String nome = " ";
if (! nome.isBlank()) {
System.out.println(nome);

	}

10 anos depois ele já deve ter aprendido a usar o !:slight_smile:

2 curtidas
if (!aprendeu) {
    // Agora tem mais um exemplo.
}

:rofl:

2 curtidas

é pra gravar no topico. (=