qual é o valor padrão de char?

89
char c = '\u0000';

Quando imprimo c, ele mostra 'a' na janela da linha de comando.

Então, qual é o valor padrão de um campo do tipo char?

Alguém disse que '\ u0000' significa nulo em Unicode; Isso está certo?

user1298336
fonte
você pode verificar se seu char tem o valor padrão por:char == 0
ACV

Respostas:

105

O valor padrão de um charatributo é de fato '\u0000'(o caractere nulo) conforme declarado na Especificação da linguagem Java, seção §4.12.5 Valores iniciais das variáveis .

No meu sistema, a linha System.out.println('\u0000');imprime um pequeno quadrado, o que significa que não é um caractere imprimível - como esperado.

Óscar López
fonte
26
É importante observar que '\u0000'não é o mesmo valor que null
Edd
O que é null character? Algumas respostas a essas perguntas referem-se ao valor padrão como caractere nulo.
Quazi Irfan
3
@ Óscar López, E o char '\ 0'? Eles não são os mesmos ?
Tarik
5
@Tarik sim, eles são iguais.
Óscar López
3
@iamcreasy o que você diz está correto. Minha observação é apenas que 'caractere nulo' é um caractere. Não está nullem termos de java, ou seja \u0000 == null, retornariafalse
Edd
30

'\ u0000' é o valor padrão para um caractere. Seu equivalente decimal é 0.

Quando você está declarando alguma variável char sem inicializá-la, '\ u0000' será atribuído a ela por padrão.

veja este código

public class Test {
    char c;

    public static void main(String args[]) throws Exception {
        Test t = new Test();
        char c1 = '\u0000';
        System.out.println(t.c);
        System.out.println(c1);
        System.out.println(t.c == c1);
    }
}

Este código imprimirá verdadeiro para a última impressão.

Chandra Sekhar
fonte
9

O valor padrão de Character é Character.MIN_VALUE que internamente representado comoMIN_VALUE = '\u0000'

Além disso, você pode verificar se o campo de caractere contém o valor padrão como

Character DEFAULT_CHAR = new Character(Character.MIN_VALUE);
if (DEFAULT_CHAR.compareTo((Character) value) == 0)
{

}
Yogesh Manware
fonte
7

'\u0000'significa null. Portanto, se você imprimir uma variável char não inicializada, não obterá nada.

Roshan
fonte
2
Na verdade, você obteria um erro de compilação;) '\ u0000' é o valor padrão com o qual um campo char é 'inicializado'
Edd
1
Você não receberá nada. Você terá um espaço em branco ou um quadrado.
Roshana Pitigala
Eu tenho um "0" se eu colocar c e c1 como '\ u0000' System.out.println (c + c1);
alan
0

O char padrão é o caractere com valor int de 0 (zero).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';

O coordenador
fonte
0

é tentador dizer como um espaço em branco ou inteiro 0 conforme a prova abaixo

char c1 = '\u0000';
System.out.println("*"+c1+"*");
System.out.println((int)c1);

mas eu não diria isso porque, pode diferir em diferentes plataformas ou no futuro. O que realmente me importa é nunca usar esse valor padrão, então antes de usar qualquer caractere, verifique se ele é \ u0000 ou não, e use-o para evitar mal-entendidos nos programas. É simples assim.

Mateen
fonte
0

O valor padrão de um tipo de dados char é '\ u0000' (ou 0) e um valor máximo de '\ uffff' (ou 65.535 inclusive).

Você pode ver as informações aqui .

Luis Parada
fonte
2
A questão já tem uma resposta aceita e várias outras respostas. Para que sua resposta seja útil, ela deve adicionar novas informações úteis ou novos insights para o problema. Apenas repetir informações em outras respostas não é útil.
AdrianHHH
0

Observe que há uma diferença distinta entre nulo e zero. Em http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (referenciado acima), a declaração é feita: -

Há também um literal nulo especial que pode ser usado como valor para qualquer tipo de referência. null pode ser atribuído a qualquer variável, exceto variáveis ​​de tipos primitivos. Há pouco que você pode fazer com um valor nulo além de testar sua presença. Portanto, null é frequentemente usado em programas como um marcador para indicar que algum objeto está indisponível.

É por isso que as seguintes declarações fornecerão um erro e não o outro: -

char a = null; // Tipo incompatível: não é possível converter de nulo em char.

char b = 0; // Sintaxe válida.

Choo
fonte
0

\u0000 é o valor padrão para o tipo char em Java

Como outros mencionaram, você pode usar a comparação para verificar o valor de uma variável não inicializada.

char ch;
if(ch==0)
    System.out.println("Default value is the null character");
Anish Sharma
fonte
-1

Eu acho que é, '\u00000'ou apenas em ''vez de '\u0000' (O primeiro tem 5 zeros enquanto o último tem quatro zeros.)

Bcom
fonte
@ JohannesH.- isso parece uma resposta para mim. Sinalizar isso como 'não é uma resposta' não é IMO correto.
Krease de
-1

O valor padrão de charé \ u0000

public class DefaultValues {
char varChar;
public static void main(String...l)
 {
    DefaultValues ob =new DefaultValues();
    System.out.println(ob.varChar=='\u0000');
 }  
}

Isso vai voltar verdadeiro

Shubham Malhotra
fonte
-1

O valor padrão de char é null que é '\ u0000' de acordo com o gráfico Unicode . Vamos ver como funciona durante a impressão.

public class Test_Class {   
     char c;
     void printAll() {  
       System.out.println("c = " + c);
    }   
    public static void main(String[] args) {    
    Test_Class f = new Test_Class();    
    f.printAll();   
    } }

Nota: a saída está em branco.

lft93ryt
fonte
-2

O valor padrão de um tipo primitivo char é '\ u0000' (caractere nulo) conforme declarado na Especificação da linguagem Java.

O atalho para 'u0000' é '\ 0', então o nulo pode ser representado por 'u0000' ou '\ 0'.

O programa Java abaixo valida representações nulas usando o campo char de instância 'c'.

public class DefaultValueForchar {  
    char c;
    public static void main(String[] args) {
        char c0 = '\0';
        char cu0000 = '\u0000';
        DefaultValueForchar obj = new DefaultValueForchar();
        System.out.println(obj.c);
        System.out.println(c0);
        System.out.println(cu0000);
        System.out.println(c0==cu0000);
        System.out.println(obj.c==c0);
        System.out.println(obj.c==cu0000);
    }

}

resultado:

javapedia.net
fonte