visual que programacion metodo ejemplos ejemplo booleanas java boolean

que - ¿Por qué boolean en Java solo toma verdadero o falso? ¿Por qué no 1 o 0 también?



que es boolean en programacion (7)

¿Hay alguna razón por la cual los booleanos de Java tomen solo true o false por qué no 1 o 0 también?


En c y C ++ no hay ningún tipo de datos llamado BOOLEAN. Es por eso que usa 1 y 0 como verdadero valor falso. y en JAVA 1 y 0 cuentan como un tipo INTEGER, por lo que produce un error en java. Y java tiene sus propios valores booleanos verdadero y falso con tipo de datos booleanos.

👍👍 programación feliz ...


En una nota relacionada: el compilador de java usa int para representar booleano ya que JVM tiene un soporte limitado para el tipo booleano. Consulte la Sección 3.3.4 El tipo booleano .

En JVM, el entero cero representa falso , y cualquier entero distinto de cero representa verdadero (Fuente: Máquina virtual Java interna de Bill Venners)


Java, a diferencia de los lenguajes como C y C ++, trata a boolean como un tipo de datos completamente separado que tiene 2 valores distintos: verdadero y falso. Los valores 1 y 0 son del tipo int y no son implícitamente convertibles en boolean .


Porque las personas que crearon Java querían que boolean significara inequívocamente verdadero o falso, no 1 o 0.

No hay consenso entre los idiomas acerca de cómo 1 y 0 se convierten a booleanos. C usa 1 para significar verdad y 0 para significar falsa, pero algunas conchas de UNIX hacen lo contrario. Usar ints debilita la verificación de tipo, se podría pasar un valor entero además de 1 o 0 y el compilador no podría protegerse de ello.


Porque los booleanos tienen dos valores: true o false . Tenga en cuenta que estos no son cadenas, sino literales booleanos reales.

1 y 0 son enteros, y no hay razón para confundir las cosas haciéndolas "alternativa verdadera" y "alternativa falsa" (¿o al revés para aquellos que usan los códigos de salida de Unix?). Con un tipado fuerte en Java, solo debería haber exactamente dos valores booleanos primitivos.

EDITAR: tenga en cuenta que puede escribir fácilmente una función de conversión si lo desea:

public static boolean intToBool(int input) { if (input < 0 || input > 1) { throw new IllegalParameterException("input must be 0 or 1"); } // Note we designate 1 as true and 0 as false though some may disagree return input == 1; }

Aunque no recomendaría esto. Tenga en cuenta que no puede garantizar que una variable int realmente sea 0 o 1; y no hay una semántica 100% obvia de lo que uno quiere decir verdadero. Por otro lado, una variable boolean siempre es true o false y es obvio cuál es verdadera. :-)

Entonces, en lugar de la función de conversión, acostúmbrate a usar variables boolean para todo lo que represente un concepto verdadero / falso. Si debe usar algún tipo de cadena de texto primitiva (por ejemplo, para almacenar en un archivo plano), "verdadero" y "falso" son mucho más claros en su significado, y el método de la biblioteca Boolean.valueOf puede convertirlo inmediatamente en booleano.


Ser específico acerca de esto te mantiene alejado de todo el VERDADERO en VB es -1 y en otros lenguajes cierto es simplemente NO CERO. Mantener el campo booleano como verdadero o falso mantiene java fuera de este argumento.


Una cosa que otras respuestas no han señalado es que una de las ventajas de no tratar enteros como valores de verdad es que evita este síndrome de errores de C / C ++:

int i = 0; if (i = 1) { print("the sky is falling!/n"); }

En C / C ++, el uso erróneo de = lugar de == hace que la condición se evalúe inesperadamente como "verdadera" y actualice i como un efecto secundario accidental.

En Java, eso es un error de compilación, porque el valor de la asignación i = 1 tiene tipo int y se requiere un valor boolean en ese punto. El único caso en el que te meterías en problemas en Java es si escribes un código cojo como este:

boolean ok = false; if (ok = true) { // bug and lame style print("the sky is falling!/n"); }

... que cualquiera con un gramo de "buen gusto" escribiría como ...

boolean ok = false; if (ok) { print("the sky is falling!/n"); }