Uma variável que pode ter apenas um de dois valores, verdadeiro ou falso, é uma variável do tipo booleano, e verdadeiro e falso são quantidades diretas booleanas. Você pode definir uma variável booleana chamada state usando a seguinte instrução:
estado booleano = verdadeiro
Esta instrução inicializa o estado da variável com um valor verdadeiro. Você também pode usar a instrução de atribuição para atribuir um valor a uma variável booleana. Por exemplo, a declaração,
estado=falso
Defina o valor da variável state como false.
Atualmente, não podemos fazer muito mais do que atribuir valores às variáveis booleanas, mas como você verá no próximo capítulo, as variáveis booleanas são úteis ao tomar decisões em um programa, especialmente quando podemos usar expressões para gerar um It. é mais útil para resultados booleanos.
Existem vários operadores que combinam valores booleanos, incluindo: Boolean AND (AND), Boolean OR (oR) e Boolean NOT (que correspondem a &&, 11 e !, respectivamente), bem como operadores de comparação que produzem resultados booleanos. Em vez de aprendê-los agora de forma abstrata, passaremos para o próximo capítulo, onde poderemos ver em exercícios como aplicá-los para alterar a ordem de execução de um programa.
Uma coisa que você precisa observar é que a variável booleana é diferente de outros tipos de dados básicos. Ela não pode ser convertida em nenhum outro tipo básico e outros tipos básicos não podem ser convertidos no tipo booleano.
Comparação de três métodos para geração de objetos booleanos em Java
A primeira maneira comum pela qual Java gera objetos booleanos é através do operador new
Booleano booleano1 = novo Booleano(1==1);
A segunda é através do método estático valueOf
Boolean boolean1 = Boolean.valueOf(1==1);
O terceiro tipo é o boxe automático após JDK1.5
Booleano booleano1 = 1==1;
Qual é a diferença entre esses três métodos?
Vejamos primeiro um trecho de código
Boolean[] boolean1 = new Boolean[100];Boolean[] boolean2 = new Boolean[100];Boolean[] boolean3 = new Boolean[100];for (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}for (int i = 0;i < 100;i++){ boolean2[i] = new Boolean(1==1);}for (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("novo Booleano: " + String.valueOf(boolean2[1] == boolean2[2]));System.out.println("auto wrap: " + String.valueOf(boolean3[1] == boolean3[2]));
A saída é:
valueOf: truenew Booleano: falseauto wrap: true
Por que isso está acontecendo?
A razão é que o objeto booleano criado com new cria continuamente um novo objeto de instância, enquanto valueOf retorna as variáveis de membro estáticas na classe booleana e não gera um grande número de variáveis de instância idênticas. O empacotamento automático é semelhante ao valueOf.
Na verdade, o documento jdk também recomenda o uso de valueOf em vez de new para criar objetos de classe booleana.