Wat is de meest geaccepteerde manier om een boolean
naar een int
in Java te converteren?
Antwoord 1, Autoriteit 100%
int myInt = myBoolean ? 1 : 0;
^^
PS: TRUE = 1 EN FALSE = 0
Antwoord 2, Autoriteit 25%
int val = b? 1 : 0;
Antwoord 3, Autoriteit 11%
Het gebruik van de Ternary-operator is de meest eenvoudige, meest efficiënte en meest leesbare manier om te doen wat u wilt. Ik moedig u aan om deze oplossing te gebruiken.
Ik kan echter niet bestand zijn tegen een alternatief, gecontacteerd, inefficiënte, onleesbare oplossing.
int boolToInt(Boolean b) {
return b.compareTo(false);
}
Hé, mensen willen stemmen op dergelijke coole antwoorden!
bewerken
Trouwens, zag ik vaak conversies van een boolean naar een int, het enige doel van het doen van een vergelijking van de twee waarden (in het algemeen, in implementaties van compareTo
methode). Boolean#compareTo
is de manier om in die specifieke gevallen te gaan.
bewerken 2
Java 7 introduceerde een nieuwe nutsfunctie die rechtstreeks werkt met primitieve typen, Boolean#compare
(bedankt shmosel )
int boolToInt(boolean b) {
return Boolean.compare(b, false);
}
Antwoord 4, Autoriteit 9%
boolean b = ....;
int i = -("false".indexOf("" + b));
Antwoord 5, Autoriteit 4%
public int boolToInt(boolean b) {
return b ? 1 : 0;
}
eenvoudig
Antwoord 6, autoriteit 4%
import org.apache.commons.lang3.BooleanUtils;
boolean x = true;
int y= BooleanUtils.toInteger(x);
Antwoord 7, autoriteit 2%
Dat hangt van de situatie af. Vaak is de meest eenvoudige benadering de beste omdat deze gemakkelijk te begrijpen is:
if (something) {
otherThing = 1;
} else {
otherThing = 0;
}
of
int otherThing = something ? 1 : 0;
Maar soms is het handig om een Enum te gebruiken in plaats van een booleaanse vlag. Stel je voor dat er synchrone en asynchrone processen zijn:
Process process = Process.SYNCHRONOUS;
System.out.println(process.getCode());
In Java kan enum extra attributen en methoden hebben:
public enum Process {
SYNCHRONOUS (0),
ASYNCHRONOUS (1);
private int code;
private Process (int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
Antwoord 8, autoriteit 2%
Als je Apache Commons Langgebruikt (waarvan ik denk dat veel projecten it), kunt u het gewoon zo gebruiken:
int myInt = BooleanUtils.toInteger(boolean_expression);
De methode
toInteger
retourneert 1 als boolean_expression
waar is, anders 0
Antwoord 9
Als true -> 1
en false -> 0
mapping is wat u wilt, u kunt het volgende doen:
boolean b = true;
int i = b ? 1 : 0; // assigns 1 to i.
Antwoord 10
Als je wilt verdoezelen, gebruik dan dit:
System.out.println( 1 & Boolean.hashCode( true ) >> 1 ); // 1
System.out.println( 1 & Boolean.hashCode( false ) >> 1 ); // 0
Antwoord 11
Laten we een spelletje spelen met Boolean.compare(boolean, boolean)
. Standaardgedrag van functie: als beide waarden gelijk zijn, wordt 0
geretourneerd, anders -1
.
public int valueOf(Boolean flag) {
return Boolean.compare(flag, Boolean.TRUE) + 1;
}
Uitleg: zoals we weten is het standaardrendement van Boolean.compare -1 in het geval van een verkeerde match, dus +1 maak de retourwaarde op 0voor False
en 1voor True
Antwoord 12
public static int convBool(boolean b)
{
int convBool = 0;
if(b) convBool = 1;
return convBool;
}
Gebruik dan :
convBool(aBool);