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

15 respostas
P

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é +

15 Respostas

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…

P

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…

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?

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.

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?

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?

P

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.

Hum, entendi ismaelsoj, valeu pela ajuda amigo!

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

P

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?

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

P

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.

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!

P

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?

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.

WellingtonRamos

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.

M

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

Lucas_Bonjardim
Basta fazer :

String nome = " ";

if (! nome.isBlank()) {

System.out.println(nome);
}
pmlm

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

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

:rofl:

Lucas_Bonjardim

é pra gravar no topico. (=

Criado 1 de junho de 2011
Ultima resposta 10 de mar. de 2021
Respostas 15
Participantes 9