Convert Boolean naar int in Java

Wat is de meest geaccepteerde manier om een ​​booleannaar een intin 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 compareTomethode). Boolean#compareTois 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

toIntegerretourneert 1 als boolean_expressionwaar is, anders 0


Antwoord 9

Als true -> 1en false -> 0mapping 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 0geretourneerd, 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 Falseen 1voor True


Antwoord 12

public static int convBool(boolean b)
{
int convBool = 0;
if(b) convBool = 1;
return convBool;
}

Gebruik dan :

convBool(aBool);

Other episodes