¿Cuál es el valor predeterminado de char?


89
char c = '\u0000';

Cuando imprimo c, muestra 'a' en la ventana de línea de comando.

Entonces, ¿cuál es el valor predeterminado de un campo de tipo char?

Alguien dijo que '\ u0000' significa nulo en Unicode; ¿está bien?


puede verificar si su carácter tiene el valor predeterminado:char == 0
ACV

Respuestas:


105

El valor predeterminado de un charatributo es de hecho '\u0000'(el carácter nulo) como se indica en la Especificación del lenguaje Java, sección §4.12.5 Valores iniciales de variables .

En mi sistema, la línea System.out.println('\u0000');imprime un pequeño cuadrado, lo que significa que no es un carácter imprimible, como se esperaba.


26
Es importante tener en cuenta que '\u0000'no es el mismo valor que null
Edd

¿Qué es null character? Algunas respuestas a estas preguntas hacen referencia al valor predeterminado como carácter nulo.
Quazi Irfan

3
@ Óscar López, ¿y el char '\ 0'? Ellos no son los mismos ?
Tarik

5
@Tarik sí, son iguales.
Óscar López

3
@iamcreasy lo que dices es correcto. Mi nota es solo que 'carácter nulo' es un carácter. No está nullen términos de Java, es decir \u0000 == null, volveríafalse
Edd

30

'\ u0000' es el valor predeterminado para un personaje. Su equivalente decimal es 0.

Cuando declaras alguna variable char sin inicializarla, se le asignará '\ u0000' de forma predeterminada.

ver 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á verdadero para la última impresión.


9

El valor predeterminado de Character es Character.MIN_VALUE que se representa internamente comoMIN_VALUE = '\u0000'

Además, puede verificar si el campo de caracteres contiene un valor predeterminado como

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

}

7

'\u0000'representa null. Entonces, si imprime una variable char no inicializada, no obtendrá nada.


2
En realidad, obtendría un error de compilación;) '\ u0000' es el valor predeterminado con el que se 'inicializa' un campo de caracteres
Edd

1
No obtendrás nada. Obtendrá un espacio en blanco o un cuadrado.
Roshana Pitigala

Obtuve un "0" si pongo cy c1 como '\ u0000' System.out.println (c + c1);
Alan


0

El carácter predeterminado es el carácter con un valor int de 0 (cero).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';


0

es tentador decir como espacio en blanco o entero 0 según la siguiente prueba

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

pero no lo diría porque podría diferir en diferentes plataformas o en el futuro. Lo que realmente me importa es que nunca usaré este valor predeterminado, así que antes de usar cualquier carácter, solo verifique que sea \ u0000 o no, luego úselo para evitar conceptos erróneos en los programas. Es tan simple como eso.


0

El valor predeterminado de un tipo de datos char es '\ u0000' (o 0) y un valor máximo de '\ uffff' (o 65,535 inclusive).

Puedes ver la información aquí .


2
La pregunta ya tiene una respuesta aceptada más varias otras respuestas. Para que su respuesta sea útil, debe agregar nueva información útil o nuevos conocimientos al problema. No es útil simplemente repetir información en otras respuestas.
AdrianHHH

0

Tenga en cuenta que existe una clara diferencia entre nulo y cero. En http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (mencionado anteriormente), se hace la declaración: -

También hay un literal nulo especial que se puede usar como valor para cualquier tipo de referencia. Se puede asignar un valor nulo a cualquier variable, excepto a las variables de tipo primitivo. Hay poco que pueda hacer con un valor nulo más allá de probar su presencia. Por lo tanto, null se usa a menudo en programas como marcador para indicar que algún objeto no está disponible.

Es por eso que las siguientes declaraciones te darán un error y no el otro: -

char a = nulo; // Falta de coincidencia de tipos: no se puede convertir de nulo a char.

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


0

\u0000 es el valor predeterminado para el tipo char en Java

Como otros mencionaron, puede usar la comparación para verificar el valor de una variable no inicializada.

char ch;
if(ch==0)
    System.out.println("Default value is the null character");

-1

Creo que es '\u00000'o simplemente en ''lugar de '\u0000' (el primero tiene 5 ceros mientras que el último tiene cuatro ceros).


@ JohannesH.- Esto me parece una respuesta. Marcar esto como 'no es una respuesta' no es correcto en mi opinión.
Krease

-1

El valor predeterminado para chares \ u0000

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

Esto volverá a ser verdad


-1

El valor predeterminado de char es nulo, que es '\ u0000' según el gráfico Unicode . Veamos cómo funciona durante la impresión.

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: La salida está en blanco.


-2

El valor predeterminado de un tipo primitivo char es '\ u0000' (carácter nulo) como se indica en la Especificación del lenguaje Java.

El atajo para 'u0000' es '\ 0', por lo que el nulo se puede representar con 'u0000' o '\ 0'.

El siguiente programa Java valida las representaciones nulas utilizando el campo de carácter de instancia '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);
    }

}

salida:

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.