sentencia - tipos de for en java
Forma abreviada para la sentencia Java If (14)
Los ? : operador en Java
En Java, puedes escribir:
if (a > b) {
max = a;
}
else {
max = b;
}
Establecer una sola variable en uno de dos estados en función de una sola condición es un uso tan común de if-else que se ha ideado un atajo para él, el operador condicional,?:. Usando el operador condicional puede reescribir el ejemplo anterior en una sola línea como esta:
max = (a > b) ? a : b;
(a> b)? a: b; es una expresión que devuelve uno de dos valores, a o b. La condición, (a> b), se prueba. Si es verdadero, se devuelve el primer valor, a. Si es falso, se devuelve el segundo valor, b. El valor que se devuelve depende de la prueba condicional, a> b. La condición puede ser cualquier expresión que devuelva un valor booleano.
Sé que hay una forma de escribir java if statement en forma abreviada
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
¿Alguien sabe cómo escribir una forma corta para más de 5 líneas en una línea ...
Puede eliminar corchetes y saltos de línea .
Sintaxis:
if (city.getName() != null) name = city.getName(); else name = "N/A";
Puedes usar ?: Operadores en java.
Sintaxis:
Variable = Condition ? Block1 : Block2;
Entonces en tu código puedes hacer esto:
name = city.getName() == null ? "N/A" : city.getName();
Asignar resultado de condición para booleano
boolean hasName = city.getName() != null;
EXTRA: por curiosidad
En algunos idiomas basados en JAVA
como Groovy
, puede usar esta sintaxis:
name = city.getName() ?: "N/A";
Puedes hacer esto en Groovy
porque si pides esta condición:
if (city.getName()) {
//returns true if city.getName() != null
} else {
//returns false if city.getName() == null
}
Entonces, ¿el operador ?:
Asigne el valor devuelto por la condición. En este caso, el valor de city.getName()
si no es null
.
La forma de hacerlo es con el operador ternario:
name = city.getName() == null ? city.getName() : "N/A"
Sin embargo, creo que tiene un error tipográfico en su código anterior, y quiere decir:
if (city.getName() != null) ...
Para evitar llamar .getName()
dos veces, usaría
name = city.getName();
if (name == null) name = "N/A";
Puede usar un operador ternario en java.
Sintaxis:
Condition ? Block 1 : Block 2
Entonces en tu código puedes hacer esto,
name = ((city.getName() == null) ? "N/A" : city.getName());
Para obtener más información, puede consultar this recurso.
Puedes escribir if, else if, else
declaraciones en forma corta. Por ejemplo:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
Esta es una forma corta de:
Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
isCapitalName = "";
} else if(isCapital) {
isCapitalName = "Capital";
} else {
isCapitalName = "City";
}
Siempre estoy olvidando cómo usar el operador ?:
Ternario . Esta respuesta suplementaria es un recordatorio rápido. Es una abreviatura de if-then-else
.
myVariable = (testCondition) ? someValue : anotherValue;
dónde
-
()
contiene elif
-
?
significathen
-
:
significaelse
Es lo mismo que
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
Use el operador ternario:
name = ((city.getName() == null) ? "N/A" : city.getName());
Creo que tienes las condiciones al revés: si es nulo, quieres que el valor sea "N / A".
¿Qué pasa si la ciudad es nula? Tu código * golpea la cama en ese caso. Agregaría otro cheque:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
Use org.apache.commons.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
en java 8:
name = Optional.ofNullable(city.getName()).orElse("N/A")
Simple y claro:
String manType = hasMoney() ? "rich" : "poor";
Versión larga:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
o cómo lo uso para que quede claro para otros lectores de código:
String manType = "poor";
if (hasMoney())
manType = "rich";
name = ( (city.getName() == null)? "N/A" : city.getName() );
en primer lugar, se (city.getName() == null)
la condición (city.getName() == null)
. En caso afirmativo, se asigna "N/A"
a nombre o simplemente name="N/A"
o, de lo contrario, el valor de city.getName()
se asigna al nombre, es decir, name=city.getName()
.
Cosas a tener en cuenta aquí:
- la condición está entre paréntesis seguida de un signo de interrogación. Es por eso que escribo
(city.getName() == null)?
. Aquí el signo de interrogación es justo después de la condición. ¡Fácil de ver / leer / adivinar incluso! - El valor a la izquierda de dos puntos (:) y el valor de dos puntos a la izquierda de dos puntos se asignan cuando la condición es verdadera; de lo contrario, se asigna el valor de dos puntos a la variable.
aquí hay una referencia: http://www.cafeaulait.org/course/week2/43.html
name = (city.getName() != null) ? city.getName() : "N/A";
name = city.getName()!=null?city.getName():"N/A"