No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
19 Hrs
7 Min
14 Seg
Curso de Introducción a Java

Curso de Introducción a Java

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Casteo entre tipos de datos

19/39
Recursos

Java nos ayuda a realizar casteo automático de los tipos de datos más chicos a otros más grandes.

Sin embargo, en algunos casos vamos a necesitar realizar un cast manualmente, así como aprendimos en la clase anterior ((dataType) variableOperación).

Por ejemplo: supongamos que declaramos dos variables a y b de tipo int y una variable c de tipo double que es igual a la división de las primeras dos variables.

En este caso, aunque definimos que el tipo de dato de c es double, Java automáticamente convertirá el resultado de la división a tipo int, ya que este es el tipo de datos de las dos variables que dividimos, pero seguirá respetando que la variable c es de tipo double y añadirá un decimal al final (.0).

Esto significa que muchas de nuestras operaciones pueden verse afectadas. Por ejemplo:

int a = 30;
int b = 12;

double c = a / b;
System.out.println(c); // 2.0 (??)

En este caso, ya que Java convierte nuestras variables automáticamente, debemos indicarle a nuestra variable c (de tipo double) que debe hacer cast de su valor para que Java no altere los valores de las variables y el resultado de la operación sea correcto:

int a = 30;
int b = 12;

double c = (double) a / b;
System.out.println(c); // 2.5

Es decir, como a y b son de tipo int, el resultado de una operación entre ambas variables será de tipo int, por lo que no tendrá decimales, pero si guardamos el resultado de esta división en una variable de tipo double añadiremos un .0.

Esto podemos solucionarlo si indicamos que además de que la variable c es de tipo double, el valor de esta variable también debe ser de tipo double. Esto significa que Java ejecutará la división entre a y b como si fueran de tipo double, por lo que tendrán decimales a pesar de haber sido definidas inicialmente como números enteros.

Aportes 263

Preguntas 17

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

EL 49 equivale a 1 en la tabla ASCII .

Apuntes que hago en bloc de notas.

Cast entre variables

.::Conversión Automatica::.
byte -> short
short -> int
char -> int
int -> long
long -> float
float -> double

.::Cast Necesario::.
double -> float
float -> long
long -> int
int -> short
short -> byte

char <-> byte
char <-> short
int -> char

Para el caso especial de convertir un String a cualquier otro tipo de dato, Java dispone del método parse con sintaxis:
Tipo.parseTipo(cadena)
Por ejemplo

String edad = "18"
int edadN = Integer.parseInt(edad);

Para el problema inverso, tenemos los métodos toString() y valueOf() con sintaxis:
String nombre = Tipo.toString(numero) Y
String nombreC = String.valuesOf(nombreN) respectivamente, veamos ejemplos:

int a = 15;
String edad1 = Integer.toString(a);
String edad2 = String.valueOf(a);

49 es la posición del 1 en el código ASCII;

Conversión Automática e Conversión Necesaria
.

49 es el código Ascii del “1”

Un detalle interesante. ¿Por qué Java no castea automáticamente de char a short si ambos tipos de datos ocupan 2 bytes en memoria? Si son del mismo tamaño, por qué no puede castearse automáticamente de char a short? ¿Por qué se dice que short es más pequeño que char si ambos ocupan dos bytes?

Sencillamente porque short utiliza los dos bytes para representar números positivos y negativos (desde -32.768 hasta +32.767 ambos incluidos). Y char utiliza los dos bytes para representar números únicamente positivos (desde 0 hasta 65.535) aunque luego se interpretan como caracteres.

Por eso, la conversión de char a short no es automática.

Si estás leyendo este comentario, espero verte en el curso de Java orientado a objetos!!

Cada uno de los símbolos de nuestra computadora tienen una referencia numérica, la cual se traduce de su valor en bytes, que se ocupa como trabajo en memoria y procesamiento.
Este tipo de valores suelen agruparse para poder utilizar y conectar cosas como nuestro teclado y pudan ser leídos por nuestra pc.

Existe una tabla completa con esos valores, traducidos a comandos de teclado (Código ASCII), mediante la tecla** “alt” **(de Alternativa), la cual permite realizar con dichos comandos, cada uno de los valores o símbolos, los cuales imprimimos en nuestras pantallas.

Me imagino que 1 a 49 es la suma de los 16 bits del char y los 32 bits del int + 1 = 49 xd

🤔 El casteo implícito también es conocido como conversión automática.

Para los que hasta ahora están aprendiendo: Solo déjense llevar. Tomen sus apuntes y sigan con el curso. No se estresen por los datos que no tienen respuesta en el vídeo como el significado del número 49. Lo digo porque yo soy de los que se estresan cuando no sabe ni por dónde buscar. La vida me ha enseñado que no tengo que aprenderlo todo de una sola tajada. Poco a poco. Besos.

49 es la còdigo numérico del carácter “1”

49 es 1 en ASCII

public static void main(String[] args) {
// Exactitud
int a = 30;
int b = 12;
System.out.println("EL NUMERO EXACTO DE PERRTIOS AL MES ES: "+((double) (a/b)));

    double c = (double) a/b;
    System.out.println(c);

    // CASTING DE CHAR IMPLICITO
    char n = '1';
    int nI = n;
    System.out.println("CASTING DE CHAR IMPLICITO: "+ nI);

    // CASTING DE CHAR EXPLICITO
    char n2 = '1';
    short ns = (short) n2;
    System.out.println("CASTING DE CHAR EXPLICITO: "+ ns);
}

En este ejercicio, tenemos un carácter ‘1’ almacenado en una variable llamada “n”. Luego, convertimos este carácter en un entero usando una asignación directa de la variable “n” a la variable “nI”. Cuando se asigna un valor de tipo char a una variable de tipo int, Java convierte automáticamente el carácter en su equivalente numérico según la tabla ASCII. Por lo tanto, en este caso, el carácter ‘1’ se convierte en su equivalente numérico, que es 49.

Luego, utilizamos el método println() para imprimir el valor de la variable “nI”. La salida de este código será 49 porque es el valor numérico asociado al carácter ‘1’ en la tabla ASCII.

Es importante tener en cuenta que cuando se convierte un carácter en un entero, la conversión solo funciona si el carácter representa un dígito del 0 al 9. Si el carácter no representa un dígito válido, el resultado de la conversión será diferente.

Es el códgo ASCII del número 1

Yo creo que el 49 esta representando el numero que se le da en el tabla ASCII al caracter que se le asigno.

ESE 49 SALE DEBIDO A QUE EN LA TABLA ASCII 1 OCUPA LA POSICION 49

Es el código ASCII 49 = 1.

Para entender el por qué del 49, es tan fácil como poner “Alt + 49”.
1

Los tipos short y char ocupan el mismo espacio, 2 byes. No hay cast automático porque al ser short signed y char unsigned, los valores que representa char no son un subconjunto de los valores que puede representar short.

  • flechas azules (conversión automática).
  • flechas blancas (requiere un cast)
  • Lo que vemos en la pantalla es la tabla de conversión entre tipos de datos que podemos tener, estos son la mayoría de los tipos de datos, no son todos… Tenemos byte, short, int, long, float, bouble y char.
  • Si notamos están desde el tamaño más chiquito que es el tipo byte hasta uno de los más grandes que es long.
  • Hay unas flechas claves:
  1. En el flujo de las flechas azules una conversión automática, más o menos una variable chiva siempre va a poder caber en una variable grande. En este caso la conversión automática significa que no es necesario que coloquemos un cast, no es necesario que lo coloquemos explícitamente con los paréntesis y el tipo de datos, porque la conversión ocurre automáticamente como el tipo de dato cabe fácilmente, pues no pasa nada.
  2. En las flechas blancas si se requiere un cast y aquí podemos notar que pues son normalmente los tipos de datos que son mucho más grandes que no pueden caber en un tipo de dato más pequeño, lo que sucede en el 100% de los casos lo que va a suceder es un truncamiento de los dígitos que no pueden caber en el tamaño de la variable más pequeña donde estamos intentado meterla

En código ASCII el 1 se representa como 49

No tengo idea a que es el numero 49 pero leyendo los comentarios ya lo se

Código ASCII?

codigo ASCLL el 1

Se ejecuta un CAST cuando el tipo de dato es mayor al que se convertirá

Código ASCII

Interesante el tema del cast

Siempre tengan en cuenta eso, una variable chica puede caber en una variable grande, pero una grande requiere un cast para entrar en una chica.

  • Lo recomendable es usar siempre un cast a menos que los decimales no te importen.

Jugando con ASCII:

int arroba = 64;
char aa = (char)arroba;
System.out.println(aa);```

Como adición al contenido visto, el casteo implícito es conocido como conversión implícita y el casteo explícito es conocido también como conversión explicita o conversión de tipos.

*Para redondear el valor.
Math.round(2.6); //3

*Para elegir la cantidad de decimales.
import java.text.DecimalFormat;
DecimalFormat nameVar = new DecimalFormat("#.##");
nameVar.format(2.33333333) // 2.33

‘1’ en Código Ascii es 49

es el valor del carácter en código ASCII

1 es 49 en ASCII

Si no me equivoco, equivale al código ASCII.

codigo Ascii correspondiente al caracter ‘1’

El número 49 corresponde al código ASCII del caracter “1”.

Según sus siglas en ingles se refiere a American Standard Code for Information Interchange ==> ASCII

Java nos ayuda a realizar casteo automático de los tipos de datos más chicos a otros más grandes.

El 49 es el código ASCII del carácter 1 Eso del código ASCII lo aprendí en el curso de Fundamentos de Ingeniería de software. Super recomendado

El 49 corresponde al valor ASCII del caracter ‘1’

El resultado del cast implícito del char a int no me lo esperaba

lo que me gusta mucho del curso es la limpieza del codigo

El código decimal de 1 en la tabla de ASCII es 49

49 = 1 en la tabla ASCII : código de caracteres basado en el alfabeto latino, tal como se usa en inglés moderno. Fue creado en 1963 por el Comité Estadounidense de Estándares como una evolución de los conjuntos de códigos utilizados entonces en telegrafía.

El caracter 1 equivale a 49 en la tabla ASCII

Exacto

El numero 49 equivale a 1 en la tabla ASCII .

Un byte se podrìa definir como un octeto de informaciòn, esta compuesto por un conjunto ordenado de 8 bits.​​ El tipo de dato byte en JAVA puede tomar un valor entre el rango mínimo de -128 y el máximo 127 (inclusive).

Código ASCII del número 1

¿Y si quiero convertir el dato de char a su valor literal en entero?
Por ejemplo:

char numeroChar = '1'; int numeroEntero = numeroChar;

yo necesito el valor de uno y no el de la tabla ASCII
¿como lo puedo castear?
Gracias.

El 49 es el equivalente al numero 1 en la tabla ascii

El 49 es el equivalente al 1 en la tabla ASCII.

Es del código ASCII el ‘1’ es un 49

Viene del código ASCII

Pues para que digo mentiras, iba a comentar lo que creía que era pero ya veo que todos dicen que es el 49 en código ASCII 😦

Codigo Ascii del 1.

Quizá 49 corresponde al código ascii del caracter 1.

al equivalente en la tabla ASCII

ASCII 49 = 1

int a =30;
int b =12;
System.out.println(a/b); // al ser numeros enteros devuelve un valor entero
System.out.println("dato casteable-exactitud: " + (double) a/b); //castea a un numero entero a un numero en decimales

    //casteo
    double c= (double)a/b; //casteas antes de imprimir
    System.out.println(c);

    char n = '1'; //caracter en forma de valor
    int nI = n;
    System.out.println(nI); //casteo automatico sin necesidad de forzarlo
                            // 49 = 1 en ascii
    short nS = (short) n; // casteo forzado por que char es mas grande que short
    System.out.println(nS);

A ver si entendí.

a y b son variables de tipo int, por lo que hacer una división entre ellas tendrá como resultado un número entero. Pero si asignamos este resultado a una variable de tipo double, Java añadirá decimales al resultado de la división, pero como era una división de enteros y el resultado no tenía decimales, el resultado será el mismo pero con un .0 al final para “respetar” que la nueva variable es de tipo double.

Y la forma de solucionarlo es usando cast, así le indicamos a Java que el resultado de la división entre a y b (que son de tipo int) debe ser de tipo double.

¿Correcto?

Para que pueda existir una conversión automática o implícita es necesario que la variable destino sea de igual o mayor tamaño que la de origen.

Existen dos excepciones:

  • Cuando el destino es entero y el origen es decimal
  • Cuando el destino es char y el origen es numérico

Un dato curioso es que en JAVA se pueden realizar conversiones entre todos los tipos básicos, menos el tipo boolean.

como limito el numero de decimales que quiero tener de un tipo de dato Double o float?

Código ASCII.

Buenas noches tengo la duda de porque cuando hago un cast explicito de un tipo de dato int a byte me genera un numero negativo. Gracias.

int k = 737;
byte castByteVark = (byte) k;

El resultado de este casting es -31 ¿por que?

Super!! Me perdí por un momento pero entendido!

Lo tomo como carácter.

Lo tomo como carácter.

el 49 es el 1 en el codigo Ascii

Corresponde a el 1 en código ASCII

El número 49 es el equivalente al 1 en ASCII.

muy interesante lo del casteo automatico

49 se refiere al nro ascii

El numero 49 corresponde a la representación ASCII del char ‘1’

parece ser el código ascii del 1

49 es el código ASCII de ‘1’!

Todo claro.

Exacto, el 49 corresponde al código ASCII del número 1

Bien, ahora sé que 49 es el código ASCII que hace referencia al numero 1 y que debemos observar la relación de tamaño entre tipos de datos para hacer un casteo explícito (si el dato no cabe dentro de otro, ej: char no cabe en short) o, caso contrario, se ejecuta un casteo automático (char cabe en int).

En código ACSII, 49 equivale al 1

Unicode Decimal Code &#49 = 1

Asignación de tecla.

Pausa el video en la parte que indica Anahí : Erróneamente iba a comentar que se imprime 49 por “basura en memoria” o algo por el estilo pero que reciba el char 1 como entero e imprima su designación en ASCII tiene mucho más sentido… jaja

El casting de un tipo char al imprimir en consola; nos muestra su equivalente en la tabla ASCII

Esto se consideraria un casteo de un casteo?. No me marca un error y le manda el valor sin problemas a la variable numeroInt

        char nC = '1';
        int numeroInt = (int)((double) nC);
        System.out.println(numeroInt);

El 49 viene de la tabla ASCII

49 es el equivalente entero al caracter “1” en código ASCII

Pregunta: el casteo es algo con lo que me voy a topar a menudo en proyectos?

49 es la posición del carácter 1 en la tabla ASCII

A su valor correspondiente en el código ASCII

es el codigo ASCII 49 es 1

increible