1 00:00:00,940 --> 00:00:11,619 Pues esto de la concatenación nos permite obtener textos para el resultado un poquito ya más interesantes, ¿vale? 2 00:00:11,619 --> 00:00:19,000 Es decir, el operador concatenación, este de aquí, no solo, ¿qué me estáis diciendo? 3 00:00:20,980 --> 00:00:34,590 Vale, el operador este de concatenación no funciona solo con cadenas, una cadena a cada lado y entonces es la concatenación. 4 00:00:34,590 --> 00:00:37,590 También funciona con una cadena a un lado 5 00:00:37,590 --> 00:00:40,329 Y al otro lado cualquier otra cosa 6 00:00:40,329 --> 00:00:42,590 ¿Y qué hace la máquina virtual? 7 00:00:42,750 --> 00:00:44,490 Pues ese cualquier otra cosa 8 00:00:44,490 --> 00:00:47,750 Fuerza la conversión a cadena 9 00:00:47,750 --> 00:00:53,899 Es decir, concatenación 10 00:00:53,899 --> 00:00:55,799 El operador concatenación más 11 00:00:55,799 --> 00:01:00,789 Funciona también 12 00:01:00,789 --> 00:01:04,969 Entre una cadena 13 00:01:04,969 --> 00:01:07,230 O un string, como lo queramos llamar 14 00:01:07,230 --> 00:01:07,829 Es lo mismo 15 00:01:07,829 --> 00:01:13,040 Y cualquier otra cosa 16 00:01:13,040 --> 00:01:14,459 Que nos dé la gana poner 17 00:01:14,459 --> 00:01:16,879 Ahora mismo para nosotros cualquier otra cosa 18 00:01:16,879 --> 00:01:17,579 Son números 19 00:01:17,579 --> 00:01:21,030 Y cualquier otra cosa 20 00:01:21,030 --> 00:01:24,010 Por ejemplo 21 00:01:24,010 --> 00:01:28,170 Yo tengo mi numerito n 22 00:01:28,170 --> 00:01:29,769 Igual a 6 23 00:01:29,769 --> 00:01:33,049 Y tengo mi cadena nombre 1 24 00:01:33,049 --> 00:01:34,829 Que la tengo ya declarada arriba 25 00:01:34,829 --> 00:01:36,409 Pues por ejemplo 26 00:01:36,409 --> 00:01:39,739 Puedo concatenar 27 00:01:39,739 --> 00:01:40,879 Nombre 1 28 00:01:40,879 --> 00:01:42,799 Que es un string 29 00:01:42,799 --> 00:01:46,159 lo puedo concatenar con algo que no sea un string 30 00:01:46,159 --> 00:01:48,200 como por ejemplo un numerito 31 00:01:48,200 --> 00:01:49,540 y no pasa nada 32 00:01:49,540 --> 00:01:51,219 ahora hacemos la asignación 33 00:01:51,219 --> 00:01:55,340 entonces cuando el operador 34 00:01:55,340 --> 00:01:57,280 cuando la máquina virtual se encuentra 35 00:01:57,280 --> 00:02:00,980 que un operador más 36 00:02:00,980 --> 00:02:03,640 y uno de los dos es una cadena 37 00:02:03,640 --> 00:02:05,420 uno de los dos es una cadena 38 00:02:05,420 --> 00:02:07,500 automáticamente interpreta 39 00:02:07,500 --> 00:02:10,000 que lo que quieres hacer es concatenar texto 40 00:02:10,000 --> 00:02:12,759 interpreta que quieres concatenar texto 41 00:02:12,759 --> 00:02:15,120 si los dos fueran números 42 00:02:15,120 --> 00:02:17,360 no hay duda, interpreta que quieres sumar 43 00:02:17,360 --> 00:02:19,800 si los dos son cadenas 44 00:02:19,800 --> 00:02:21,780 no hay duda, interpreta que quieres 45 00:02:21,780 --> 00:02:22,500 concatenar 46 00:02:22,500 --> 00:02:25,340 el problema es, y si uno es cadena 47 00:02:25,340 --> 00:02:27,319 y otro es cualquier otra cosa 48 00:02:27,319 --> 00:02:30,020 por ejemplo, número en nuestro caso 49 00:02:30,020 --> 00:02:31,860 porque es lo que estamos usando 50 00:02:31,860 --> 00:02:33,939 pues interpreta 51 00:02:33,939 --> 00:02:35,620 que lo que quieres también es 52 00:02:35,620 --> 00:02:38,319 concatenar, es decir, la concatenación 53 00:02:38,319 --> 00:02:39,900 tiene más peso que la suma 54 00:02:39,900 --> 00:02:44,110 ¿vale? entonces 55 00:02:44,110 --> 00:02:45,710 en este caso como estamos 56 00:02:45,710 --> 00:02:47,870 cadena string 57 00:02:47,870 --> 00:02:49,870 suma numerito 58 00:02:49,870 --> 00:02:52,150 pues automáticamente la máquina virtual 59 00:02:52,150 --> 00:02:54,370 interpreta que quieres concatenar 60 00:02:54,370 --> 00:02:56,169 pues que hace 61 00:02:56,169 --> 00:02:58,110 coge lo que no es cadena 62 00:02:58,110 --> 00:03:00,129 lo que no es cadena 63 00:03:00,129 --> 00:03:02,310 y fuerza su conversión 64 00:03:02,310 --> 00:03:02,849 a cadena 65 00:03:02,849 --> 00:03:05,490 que significa 66 00:03:05,490 --> 00:03:08,030 forzar la conversión a cadena de un 67 00:03:08,030 --> 00:03:10,009 número 6 pues que es como 68 00:03:10,009 --> 00:03:10,909 si estuviéramos 69 00:03:10,909 --> 00:03:14,129 Concatenándolo con esto 70 00:03:14,129 --> 00:03:16,250 Sería como si estuviéramos haciendo esto 71 00:03:16,250 --> 00:03:19,030 Nombre 1 más 72 00:03:19,030 --> 00:03:20,229 Es decir 73 00:03:20,229 --> 00:03:22,990 Cuando él tiene que forzar el numerito 6 74 00:03:22,990 --> 00:03:23,990 Él va a ver la n 75 00:03:23,990 --> 00:03:25,610 Y ve que tiene el 6 76 00:03:25,610 --> 00:03:28,770 Pues para forzar la conversión a cadena 77 00:03:28,770 --> 00:03:30,909 Lo que está haciendo 78 00:03:30,909 --> 00:03:32,770 Es convertirlo directamente 79 00:03:32,770 --> 00:03:33,849 En la cadena 6 80 00:03:33,849 --> 00:03:36,689 El resultado será 81 00:03:36,689 --> 00:03:38,889 Un string, una cadena y tendrá que ir a una cadena 82 00:03:38,889 --> 00:03:39,650 Lógicamente 83 00:03:39,650 --> 00:03:42,490 Pues yo que sé, a esta mismo, por ejemplo 84 00:03:42,490 --> 00:03:44,090 Que ya la tengo declarada 85 00:03:44,090 --> 00:03:46,430 ¿Vale? A esta misma 86 00:03:46,430 --> 00:03:50,379 ¿Vale? 87 00:03:50,860 --> 00:03:52,340 Luego entonces, todo eso está en el texto 88 00:03:52,340 --> 00:03:53,000 Que os he pasado 89 00:03:53,000 --> 00:03:56,479 Cuando el operador más va 90 00:03:56,479 --> 00:03:58,099 Repetimos 91 00:03:58,099 --> 00:04:00,379 Entre una cadena 92 00:04:00,379 --> 00:04:02,340 Uh, le he dado tan fuerte 93 00:04:02,340 --> 00:04:05,780 Que la he roto 94 00:04:05,780 --> 00:04:12,990 Pues sí, cuando le das fuerte se apaga 95 00:04:12,990 --> 00:04:14,969 Ah, pues no 96 00:04:14,969 --> 00:04:15,770 Bueno 97 00:04:15,770 --> 00:04:18,649 vale, cuando el operador 98 00:04:18,649 --> 00:04:20,709 más va con una 99 00:04:20,709 --> 00:04:22,410 cadena y cualquier otra cosa 100 00:04:22,410 --> 00:04:24,470 automáticamente dice, ah, quieres 101 00:04:24,470 --> 00:04:26,569 concatenar, pues coja ese cualquier 102 00:04:26,569 --> 00:04:28,829 otra cosa y lo convierte 103 00:04:28,829 --> 00:04:29,930 en texto, ¿cómo? 104 00:04:31,029 --> 00:04:32,529 depende de cómo seas a cualquier 105 00:04:32,529 --> 00:04:34,550 otra cosa, ya íbamos viendo cómo funciona 106 00:04:34,550 --> 00:04:36,290 lo de convertir en texto, porque no es trivial 107 00:04:36,290 --> 00:04:38,430 pero en el caso del número 108 00:04:38,430 --> 00:04:40,089 que es lo que estamos usando ahora, numeritos 109 00:04:40,089 --> 00:04:41,970 convertir en texto 110 00:04:41,970 --> 00:04:44,209 es convertir en una cadena 111 00:04:44,209 --> 00:04:46,110 ASCII con las cifras, ya está 112 00:04:46,110 --> 00:04:48,149 este como es 6 113 00:04:48,149 --> 00:04:50,069 pero vamos a probar por ejemplo con un 114 00:04:50,069 --> 00:04:57,879 dabble que es más raro, por ejemplo 115 00:04:57,879 --> 00:04:59,620 dabble 6.98 116 00:05:00,720 --> 00:05:03,120 pues en realidad sería 117 00:05:03,120 --> 00:05:07,019 convertirlo a cadena 118 00:05:07,019 --> 00:05:09,639 lo convertiría en la cadena 119 00:05:09,639 --> 00:05:10,939 de caracteres ASCII 120 00:05:10,939 --> 00:05:13,180 el 6, el carácter ASCII punto 121 00:05:13,180 --> 00:05:15,399 el carácter ASCII 9, el carácter ASCII 8 122 00:05:15,399 --> 00:05:17,220 es decir, deja de ser un número 123 00:05:17,220 --> 00:05:19,319 y se convierte en una cadena 124 00:05:19,319 --> 00:05:22,019 y lo concatenaría 125 00:05:22,019 --> 00:05:26,420 a esto, de nuevo 126 00:05:26,420 --> 00:05:28,019 esto lo doy por sentado, claro 127 00:05:28,019 --> 00:05:30,339 que esta conversión se hace 128 00:05:30,339 --> 00:05:32,879 para hacer la operación, lógicamente 129 00:05:32,879 --> 00:05:36,759 para hacer la concatenación, no es que 130 00:05:36,759 --> 00:05:38,519 luego esta variable n 131 00:05:38,519 --> 00:05:40,100 se convierta a string, no, no 132 00:05:40,100 --> 00:05:42,519 la máquina virtual 133 00:05:42,519 --> 00:05:44,120 ve que quieres usar n, dice 134 00:05:44,120 --> 00:05:46,980 uy, n es un dable y tiene 6.98 135 00:05:46,980 --> 00:05:48,819 cojo su valor 136 00:05:48,819 --> 00:05:50,139 cojo su valor 137 00:05:50,139 --> 00:05:52,420 lo convierto en cadena, lo concateno 138 00:05:52,420 --> 00:05:54,379 pero lógicamente la variable n original 139 00:05:54,379 --> 00:05:56,939 sigue siendo n, y no le pasa nada 140 00:05:56,939 --> 00:05:58,660 todo esto 141 00:05:58,660 --> 00:06:00,660 lo hacemos para hacer la operación 142 00:06:00,660 --> 00:06:05,639 pues entonces este operador 143 00:06:05,639 --> 00:06:07,839 recordad que tiene también esa función de concatenar 144 00:06:07,839 --> 00:06:09,500 cadenas y va a concatenar 145 00:06:09,500 --> 00:06:10,480 siempre y cuando 146 00:06:10,480 --> 00:06:13,620 alguno de las dos 147 00:06:13,620 --> 00:06:15,399 cosas sea un string, me da igual que el string sea 148 00:06:15,399 --> 00:06:16,639 la segunda, me da igual 149 00:06:16,639 --> 00:06:19,139 con que una de las dos sea un string 150 00:06:19,139 --> 00:06:21,339 me da igual que sea la que está en primer lugar o la que está 151 00:06:21,339 --> 00:06:23,379 en segundo lugar, cuando una de las dos sea un string 152 00:06:23,379 --> 00:06:24,939 es una 153 00:06:24,939 --> 00:06:28,420 concatenación, vale 154 00:06:28,420 --> 00:06:30,540 de hecho si ejecutamos esto 155 00:06:30,540 --> 00:06:32,120 pues tendremos que ver al final 156 00:06:32,120 --> 00:06:34,620 esto de aquí 157 00:06:34,620 --> 00:06:47,209 este programa 158 00:06:47,209 --> 00:06:49,209 me pide primero el número de usuarios 159 00:06:49,750 --> 00:06:52,050 8 bla bla bla 160 00:06:52,050 --> 00:06:53,069 8 161 00:06:53,069 --> 00:06:55,069 ah bueno es que no lo he mostrado 162 00:06:55,069 --> 00:06:57,449 lo he guardado pero ahora no lo he mostrado 163 00:06:57,449 --> 00:06:58,689 vamos a mostrarla 164 00:06:58,689 --> 00:07:12,199 veis 165 00:07:12,199 --> 00:07:15,019 ha hecho una concatenación 166 00:07:15,019 --> 00:07:19,180 Ha hecho una concatenación entre el nombre 1 167 00:07:19,180 --> 00:07:21,199 Que era Ana 168 00:07:21,199 --> 00:07:26,899 Y ha forzado la conversión a cadena de este 169 00:07:26,899 --> 00:07:30,839 Que le ha dado la cadena 6.98 170 00:07:30,839 --> 00:07:33,399 Ha concatenado los dos 171 00:07:33,399 --> 00:07:35,459 Y lo ha guardado en el string nombre 2 172 00:07:35,459 --> 00:07:38,120 Que es el que hemos mostrado después 173 00:07:38,120 --> 00:07:41,980 ¿Vale? 174 00:07:44,350 --> 00:07:46,189 Entonces, bueno, esto de la concatenación 175 00:07:46,189 --> 00:07:48,149 Nos es muy útil cuando queremos 176 00:07:48,149 --> 00:07:52,310 ahora ya pues mostrar avisos 177 00:07:52,310 --> 00:07:55,589 un poquito más sofisticados, por ejemplo 178 00:07:55,589 --> 00:08:01,170 nos vamos aquí arriba cuando estábamos incrementando los usuarios 179 00:08:01,170 --> 00:08:05,029 introduzca número de usuarios, lo leemos, ¿cuántos más? estos 180 00:08:05,029 --> 00:08:09,649 hacíamos la operación de a los usuarios antiguos 181 00:08:09,649 --> 00:08:11,769 le sumamos los nuevos y el resultado final 182 00:08:11,769 --> 00:08:15,689 actualiza la variable, que es lo que vimos 183 00:08:15,689 --> 00:08:17,790 que lo podíamos 184 00:08:17,790 --> 00:08:19,649 abreviar con el más igual 185 00:08:19,649 --> 00:08:22,189 vamos a hacer ahora que me muestre 186 00:08:22,189 --> 00:08:25,589 la nueva cantidad 187 00:08:25,589 --> 00:08:27,269 de usuarios es 188 00:08:27,269 --> 00:08:29,209 entonces el system out 189 00:08:29,209 --> 00:08:30,649 ¿qué le pasamos? 190 00:08:31,110 --> 00:08:32,490 le vamos a pasar una cadena 191 00:08:32,490 --> 00:08:35,649 vale, pues le vamos a pasar 192 00:08:35,649 --> 00:08:37,649 el nuevo número 193 00:08:37,649 --> 00:08:45,450 usuarios es 194 00:08:45,450 --> 00:08:48,250 y ahora esta cadena 195 00:08:48,250 --> 00:08:51,049 la quiero concatenar yo 196 00:08:51,049 --> 00:08:54,129 Con el contenido de esta variable 197 00:08:54,129 --> 00:08:56,570 Porque quiero que me muestre 198 00:08:56,570 --> 00:08:58,149 El nuevo número de usuarios es 199 00:08:58,149 --> 00:08:59,970 Y el valor de esa variable 200 00:08:59,970 --> 00:09:03,049 Pues la concateno 201 00:09:03,049 --> 00:09:04,669 Con esta variable 202 00:09:04,669 --> 00:09:07,269 Usuarios 203 00:09:07,269 --> 00:09:09,450 ¿Vale? 204 00:09:09,509 --> 00:09:11,870 Entonces esta tontería de la concatenación 205 00:09:11,870 --> 00:09:14,570 Me permite mostrar texto un poquito 206 00:09:14,570 --> 00:09:16,870 Que tenga variables dentro 207 00:09:16,870 --> 00:09:18,610 Que tenga valores de variables dentro 208 00:09:18,610 --> 00:09:19,789 ¿Vale? 209 00:09:21,049 --> 00:09:29,639 porque esto ahora mismo, esto es una cadena enterita, 210 00:09:30,639 --> 00:09:39,399 que es el resultado de concatenar esta cadena, 211 00:09:40,200 --> 00:09:43,860 concatenada con el contenido de esta variable. 212 00:09:45,600 --> 00:09:48,299 Bueno, pues este mensaje de resultado ya será más bonito, 213 00:09:48,299 --> 00:09:51,580 porque me dirá, el nuevo número de usuarios es, 214 00:09:51,700 --> 00:09:55,980 y me pondrá después la conversión a cadena de lo que contenga esta variable. 215 00:09:55,980 --> 00:09:58,679 Si contiene 7, pues el carácter 7 216 00:09:58,679 --> 00:10:01,700 Si contiene 28, pues 2 y 8 217 00:10:01,700 --> 00:10:06,389 Entonces, concatenando 218 00:10:06,389 --> 00:10:08,570 Podemos hacer, escribir texto 219 00:10:08,570 --> 00:10:10,129 Para el usuario 220 00:10:10,129 --> 00:10:12,990 Que tenga valores de variables 221 00:10:12,990 --> 00:10:13,809 Dentro del texto 222 00:10:13,809 --> 00:10:15,669 Lo voy concatenando con las variables 223 00:10:15,669 --> 00:10:16,970 Y ya está 224 00:10:16,970 --> 00:10:28,830 Si lo ejecutamos aquí 225 00:10:28,830 --> 00:10:31,370 Introduzca el número de usuarios 226 00:10:31,370 --> 00:10:32,190 54 227 00:10:32,190 --> 00:10:33,970 ¿Cuántos usuarios más han llegado? 228 00:10:34,049 --> 00:10:34,809 76 229 00:10:34,809 --> 00:10:38,970 El nuevo número de usuarios es 206 230 00:10:38,970 --> 00:10:41,610 ¿Vale? Sumo esto, sumo esto 231 00:10:41,610 --> 00:10:45,029 Y yo luego hice una cadena que era la concatenación de 232 00:10:45,029 --> 00:10:47,330 El nuevo número de usuarios es no sé qué 233 00:10:47,330 --> 00:10:52,649 Concatenado con la nueva variable convertida a string 234 00:10:52,649 --> 00:10:55,470 54 más 76 es 206 235 00:10:55,470 --> 00:10:58,149 Forzamos la conversión a string 236 00:10:58,149 --> 00:10:59,870 2, 0, 6 237 00:10:59,870 --> 00:11:02,909 La concatenación es este mensajito 238 00:11:02,909 --> 00:11:06,049 Este mensajito es la concatenación 239 00:11:06,049 --> 00:11:09,669 Que es el que me ha mostrado aquí 240 00:11:09,669 --> 00:11:10,929 Vale 241 00:11:10,929 --> 00:11:34,100 Vamos aquí, concatenación de string 242 00:11:34,100 --> 00:11:35,360 Bueno 243 00:11:35,360 --> 00:11:37,259 Pues aquí lo tenéis 244 00:11:37,259 --> 00:11:58,850 Bueno, esto de aquí 245 00:11:58,850 --> 00:11:59,230 Dime 246 00:11:59,230 --> 00:12:10,740 Es que le he puesto un espacio 247 00:12:10,740 --> 00:12:13,340 Claro, aquí en la cadena le he metido un espacio 248 00:12:13,340 --> 00:12:19,120 El nuevo usuario es 249 00:12:19,120 --> 00:12:20,980 Y le he metido este espacio 250 00:12:20,980 --> 00:12:37,919 Bueno, te sale junto 251 00:12:37,919 --> 00:12:40,340 Si la cadena no tiene un espacio 252 00:12:40,340 --> 00:12:42,559 Es que aquí el nombre 253 00:12:42,559 --> 00:12:44,059 O sea, te refieres aquí, por ejemplo 254 00:12:44,059 --> 00:12:45,460 Nombre 3, que me salía 255 00:12:45,460 --> 00:12:47,860 Claro, pero porque es que el nombre 256 00:12:47,860 --> 00:12:49,200 O sea, aquí estoy 257 00:12:49,200 --> 00:12:50,460 A ver si te refieres a eso 258 00:12:50,460 --> 00:12:54,259 Tengo... ¿Te refieres a esta situación? 259 00:12:56,889 --> 00:12:57,669 O a esta 260 00:12:57,669 --> 00:13:00,450 Que yo tengo nombre 1, que aquí me salía todo junto 261 00:13:00,450 --> 00:13:01,970 El nombre pegadito al 6 262 00:13:01,970 --> 00:13:04,230 Claro, pero porque nombre 1 263 00:13:04,230 --> 00:13:06,769 no tiene ningún espacio aquí, entonces 264 00:13:06,769 --> 00:13:08,889 él lo concatena, si yo pongo aquí un espacio 265 00:13:08,889 --> 00:13:10,029 pues ya no me sale junto 266 00:13:10,029 --> 00:13:12,830 o sea, concatena tal cual 267 00:13:12,830 --> 00:13:14,730 lo concatena, lo deja pegado 268 00:13:14,730 --> 00:13:16,769 claro, la cadena y el número 269 00:13:16,769 --> 00:13:18,990 lo que pasa es que 270 00:13:18,990 --> 00:13:20,409 yo aquí cuando he hecho el 271 00:13:20,409 --> 00:13:22,889 system.out.println para concatenar 272 00:13:22,889 --> 00:13:24,669 este texto con el otro 273 00:13:24,669 --> 00:13:28,500 pues le he puesto aquí un espacio 274 00:13:28,500 --> 00:13:30,559 para que esta 275 00:13:30,559 --> 00:13:32,279 variable vaya pegada 276 00:13:32,279 --> 00:13:33,860 al espacio de después 277 00:13:33,860 --> 00:13:36,159 para que vaya pegada al espacio 278 00:13:36,159 --> 00:13:37,559 porque si no queda muy apiñado, claro 279 00:13:37,559 --> 00:13:40,480 el espacio es un carácter así más, lo puedo poner dentro de las cadenas 280 00:13:40,480 --> 00:13:49,149 esto ya lo hemos mencionado 281 00:13:49,149 --> 00:13:53,090 los operadores aritméticos ya lo hemos mencionado 282 00:13:53,090 --> 00:13:55,029 sabéis que en matemáticas 283 00:13:55,029 --> 00:13:57,769 hay un acuerdo 284 00:13:57,769 --> 00:14:01,610 que los operadores de multiplicación y división 285 00:14:01,610 --> 00:14:03,669 tengan precedencia 286 00:14:03,669 --> 00:14:04,950 frente a los de suma y resta 287 00:14:04,950 --> 00:14:07,710 entonces si en una expresión están todos puestos sin paréntesis 288 00:14:07,710 --> 00:14:09,889 primero se hacen las multiplicaciones y divisiones 289 00:14:09,889 --> 00:14:11,370 luego las sumas y restas, ya lo sabéis 290 00:14:11,370 --> 00:14:13,870 pero si hay paréntesis entonces no 291 00:14:13,870 --> 00:14:15,350 se hacen los paréntesis primeros 292 00:14:15,350 --> 00:14:17,090 pero bueno, esto es lo de mates de siempre 293 00:14:17,090 --> 00:14:19,629 pues es lo que mencionamos aquí y ya está 294 00:14:19,629 --> 00:14:21,389 ¿vale? 295 00:14:23,210 --> 00:14:24,809 esto de conversión automática 296 00:14:24,809 --> 00:14:27,230 y promoción casting 297 00:14:27,230 --> 00:14:30,250 también lo hemos usado en algunos ejemplitos 298 00:14:30,250 --> 00:14:32,309 la conversión automática 299 00:14:32,309 --> 00:14:33,490 es lo que hemos dicho 300 00:14:33,490 --> 00:14:36,129 promocionar un entero 301 00:14:36,129 --> 00:14:38,129 a un double cuando están mezclados 302 00:14:38,129 --> 00:14:39,129 en la misma operación 303 00:14:39,129 --> 00:14:42,450 ¿vale? aquí tenemos mezclados 304 00:14:42,450 --> 00:14:44,370 un entero 305 00:14:44,370 --> 00:14:45,809 está sumado 306 00:14:45,809 --> 00:14:48,049 a un decimal, pues entonces 307 00:14:48,049 --> 00:14:49,850 la máquina virtual, el entero 308 00:14:49,850 --> 00:14:51,929 le pone el punto cero y eso es la 309 00:14:51,929 --> 00:14:53,230 promoción automática 310 00:14:53,230 --> 00:14:55,950 ¿vale? esto ya lo hemos 311 00:14:55,950 --> 00:14:57,250 mencionado, está 312 00:14:57,250 --> 00:14:59,389 aquí todo 313 00:14:59,389 --> 00:15:01,929 explicado de nuevo 314 00:15:01,929 --> 00:15:02,889 ¿vale? 315 00:15:07,179 --> 00:15:19,259 entonces, lo del 316 00:15:19,259 --> 00:15:21,299 casting es 317 00:15:21,299 --> 00:15:23,600 forzar la conversión interna. 318 00:15:25,000 --> 00:15:27,000 No lo vamos a usar ahora 319 00:15:27,000 --> 00:15:29,259 porque el casting es peligroso y no 320 00:15:29,259 --> 00:15:33,399 aquí está mencionado para completar el apartado 321 00:15:33,399 --> 00:15:35,100 para que el apartado no se quede a medias. 322 00:15:35,940 --> 00:15:37,299 Entonces, si leéis todo esto 323 00:15:37,299 --> 00:15:39,279 para hacer el repaso de todo, lo deberíais leer 324 00:15:39,279 --> 00:15:41,340 para hacer el repaso de todo y aseguraros de que 325 00:15:41,340 --> 00:15:42,960 lo tenéis. Vale. 326 00:15:43,200 --> 00:15:44,799 Pues si hacéis la lectura, 327 00:15:44,799 --> 00:15:46,200 ¿qué es lo que explica aquí? 328 00:15:47,700 --> 00:15:48,919 Bueno, nosotros ya sabemos 329 00:15:48,919 --> 00:15:52,500 lo que hemos dicho antes, que si tenemos 330 00:15:52,500 --> 00:16:00,700 un numerito dabel, que es la suma de un entero 331 00:16:00,700 --> 00:16:04,379 que estaba por aquí declarado, n igual a 7 332 00:16:04,379 --> 00:16:08,100 por ejemplo, n más 333 00:16:08,100 --> 00:16:12,620 4.3, imaginaos esta sentencia 334 00:16:12,620 --> 00:16:16,799 ningún problema, está mezclando el operador 335 00:16:16,799 --> 00:16:20,379 sumas, un decimal que es 4.3 336 00:16:20,379 --> 00:16:22,620 con este que es entero 337 00:16:22,620 --> 00:16:24,019 porque está en una variable entera 338 00:16:24,019 --> 00:16:26,080 no hay ningún problema 339 00:16:26,080 --> 00:16:28,039 coge el que es entero 340 00:16:28,039 --> 00:16:29,620 lo promociona dabel 341 00:16:29,620 --> 00:16:32,460 que sería como coger el 7 que está aquí 342 00:16:32,460 --> 00:16:34,679 y una vez que ha cogido el 7 343 00:16:34,679 --> 00:16:36,759 le pone el punto 0 344 00:16:36,759 --> 00:16:38,480 ¿vale? esta variable 345 00:16:38,480 --> 00:16:40,200 lógicamente se queda intacta 346 00:16:40,200 --> 00:16:41,539 no se entera, sigue con su 7 347 00:16:41,539 --> 00:16:44,480 pero la máquina virtual ha cogido el valor 348 00:16:44,480 --> 00:16:46,840 le ha puesto el punto 0 349 00:16:46,840 --> 00:16:48,299 para poder hacer la suma 350 00:16:48,299 --> 00:16:50,200 y ahora ya le queda pues 351 00:16:50,200 --> 00:16:52,480 11.3, que es un double 352 00:16:52,480 --> 00:16:54,200 y una vez que tiene el resultado 353 00:16:54,200 --> 00:16:56,200 dice, ¿y ahora qué hago con esto? Pues ahora ya 354 00:16:56,200 --> 00:16:57,840 cuando tenga el resultado, ya al final de todo 355 00:16:57,840 --> 00:16:59,659 se va a mirar aquí 356 00:16:59,659 --> 00:17:02,000 y dice, a ver, aquí que tengo 357 00:17:02,000 --> 00:17:04,539 una variable double, menos mal 358 00:17:04,539 --> 00:17:06,359 porque esto 359 00:17:06,359 --> 00:17:08,099 si no, no cabría, menos mal que tengo 360 00:17:08,099 --> 00:17:09,720 una variable double, con lo cual 361 00:17:09,720 --> 00:17:12,200 lo guarda en double y listo 362 00:17:12,200 --> 00:17:12,539 ¿vale? 363 00:17:14,119 --> 00:17:16,200 Ya sabemos, porque lo hemos probado 364 00:17:16,200 --> 00:17:18,180 que si 365 00:17:18,180 --> 00:17:19,900 esta variable 366 00:17:19,900 --> 00:17:20,799 Resulta 367 00:17:20,799 --> 00:17:24,119 Que no la hubiéramos declarado dabel 368 00:17:24,119 --> 00:17:26,319 Sino que la hubiéramos 369 00:17:26,319 --> 00:17:27,140 Declarado int 370 00:17:27,140 --> 00:17:31,450 Sabemos que aquí hay un problema 371 00:17:31,450 --> 00:17:31,970 Dime 372 00:17:31,970 --> 00:17:36,470 Sabemos que aquí hay un problema 373 00:17:36,470 --> 00:17:37,549 Porque me diría 374 00:17:37,549 --> 00:17:38,509 Eh, ojo, ojo 375 00:17:38,509 --> 00:17:40,710 Esto me va a dar dabel 376 00:17:40,710 --> 00:17:43,509 Dabel en int no cabe 377 00:17:43,509 --> 00:17:45,230 ¿Vale? Esto ya lo vamos 378 00:17:45,230 --> 00:17:47,569 Lo tenemos ya, lo van metiendo en la cabeza 379 00:17:47,569 --> 00:17:49,970 Int en dabel cabe 380 00:17:49,970 --> 00:17:51,029 Digo int y dabel 381 00:17:51,029 --> 00:17:53,430 porque son los más estándar, podría ser int y float 382 00:17:53,430 --> 00:17:55,269 son los mismos, float y double son decimales 383 00:17:55,269 --> 00:17:57,430 int en double cabe 384 00:17:57,430 --> 00:17:59,509 pero 385 00:17:59,509 --> 00:18:01,150 perdona, double en 386 00:18:01,150 --> 00:18:03,450 int no, luego aquí 387 00:18:03,450 --> 00:18:05,470 ya el compilador ya te marcaría 388 00:18:05,470 --> 00:18:07,430 un error y te diría, no te voy 389 00:18:07,430 --> 00:18:09,269 a dejar que compiles esto y por tanto 390 00:18:09,269 --> 00:18:10,009 lo ejecutes 391 00:18:10,009 --> 00:18:12,630 ¿por qué? 392 00:18:13,730 --> 00:18:15,150 convertir de double a int 393 00:18:15,150 --> 00:18:17,170 sí que implica 394 00:18:17,170 --> 00:18:19,329 perder información, convertir de double 395 00:18:19,329 --> 00:18:20,230 a int sería 396 00:18:20,230 --> 00:18:22,410 quitar el punto 3 397 00:18:22,410 --> 00:18:23,750 quedarse con 11 398 00:18:23,750 --> 00:18:26,390 y eso es alterar el número completamente 399 00:18:26,390 --> 00:18:28,210 pasar de 7 400 00:18:28,210 --> 00:18:29,670 a 7.0 401 00:18:29,670 --> 00:18:31,650 no altera la información 402 00:18:31,650 --> 00:18:33,569 tenemos 7 unidades 403 00:18:33,569 --> 00:18:36,150 no altera el número para nada 404 00:18:36,150 --> 00:18:37,450 la cantidad es la misma 405 00:18:37,450 --> 00:18:40,049 hay la misma cantidad en 7 que en 7.0 406 00:18:40,049 --> 00:18:40,970 la cantidad es la misma 407 00:18:40,970 --> 00:18:44,069 pero pasar de 11.3 408 00:18:44,069 --> 00:18:45,230 a 11 409 00:18:45,230 --> 00:18:47,849 esto claro que altera la información 410 00:18:47,849 --> 00:18:49,730 porque estoy perdiendo 411 00:18:49,730 --> 00:18:52,170 cero con tres, que es una cantidad 412 00:18:52,170 --> 00:18:53,710 real, cero con tres 413 00:18:53,710 --> 00:18:56,049 luego por eso el compilador no nos deja 414 00:18:56,049 --> 00:18:56,769 hacer esas cosas 415 00:18:56,769 --> 00:18:59,869 pero imaginémonos que aún así 416 00:18:59,869 --> 00:19:02,150 nosotros queremos decir 417 00:19:02,150 --> 00:19:03,910 me da lo mismo, yo necesito que este 418 00:19:03,910 --> 00:19:06,049 número sea entero, entonces si hay 419 00:19:06,049 --> 00:19:07,730 que quitar la parte decimal, que se quite 420 00:19:07,730 --> 00:19:10,089 pero tú mete esto en un entero 421 00:19:10,089 --> 00:19:11,970 aunque sea dabel, me da igual 422 00:19:11,970 --> 00:19:14,009 entonces si queremos hacer 423 00:19:14,009 --> 00:19:15,089 eso, que es 424 00:19:15,089 --> 00:19:18,109 convertir un valor de un tipo 425 00:19:18,109 --> 00:19:20,250 más grande, comodable 426 00:19:20,250 --> 00:19:22,210 a uno más pequeño, que sí, podemos hacer 427 00:19:22,210 --> 00:19:23,849 lo que explica el texto, que es un cast 428 00:19:23,849 --> 00:19:25,890 que tendremos que hacer, pero en otras situaciones 429 00:19:25,890 --> 00:19:28,049 y un casting 430 00:19:28,049 --> 00:19:29,930 significa, castea 431 00:19:29,930 --> 00:19:32,390 a entero 432 00:19:32,390 --> 00:19:34,329 o lo que es lo mismo 433 00:19:34,329 --> 00:19:36,390 quita la parte decimal, y ¿cómo escribo 434 00:19:36,390 --> 00:19:38,230 eso en código? ¿cómo escribo eso en código? 435 00:19:38,329 --> 00:19:40,170 porque si lo tengo que decir al 436 00:19:40,170 --> 00:19:42,049 compilador, le tengo que decir, no, perdona 437 00:19:42,049 --> 00:19:43,369 es que quiero hacer el cast 438 00:19:43,369 --> 00:19:46,190 ¿cómo lo escribo 439 00:19:46,190 --> 00:19:48,269 ese código? Pues hacer un casting 440 00:19:48,269 --> 00:19:49,390 se hace 441 00:19:49,390 --> 00:19:57,700 poniendo delante 442 00:19:57,700 --> 00:19:59,559 del número resultado, delante 443 00:19:59,559 --> 00:20:01,339 de la expresión, pongo 444 00:20:01,339 --> 00:20:03,599 el tipo al que quiero convertir 445 00:20:03,599 --> 00:20:05,160 entre paréntesis. 446 00:20:05,700 --> 00:20:07,079 ¿Quieres convertir a in? 447 00:20:07,880 --> 00:20:09,460 Pues pon el tipo al que quieres 448 00:20:09,460 --> 00:20:11,519 convertir entre paréntesis. Ponlo. 449 00:20:12,099 --> 00:20:13,140 Al que quieres convertir. 450 00:20:13,640 --> 00:20:15,500 Y ahora ya pones eso 451 00:20:15,500 --> 00:20:17,420 que quieres convertir, que en nuestro 452 00:20:17,420 --> 00:20:19,420 caso era, pues por ejemplo, n 453 00:20:19,420 --> 00:20:21,640 más 4 con 2 o lo que fuera, no lo sé. 454 00:20:21,660 --> 00:21:06,380 Vale, entonces vamos a escribirlo ahí para que se vea, lo añadimos aquí, a ver, cuidado con los cambios de tipo, esto sin problema, vamos a imaginar que tenemos un int número igual a 4 455 00:21:06,380 --> 00:21:17,440 Y ahora, un double decimal que es igual a número más 4.5, por ejemplo. 456 00:21:18,279 --> 00:21:19,759 Esto ya sabemos que sin problema. 457 00:21:21,319 --> 00:21:27,960 Coge el 4, le pone el punto 0, lo suma 4 con 5, le sale 8 con 5 y 8 con 5 va a double. 458 00:21:28,180 --> 00:21:28,500 Ya está. 459 00:21:33,400 --> 00:21:37,880 Esto no se puede, como ya sabemos. 460 00:21:38,160 --> 00:21:40,339 Vamos a guardarlo en una variable entera. 461 00:21:40,440 --> 00:21:43,660 Por ejemplo, en el propio número 462 00:21:43,660 --> 00:21:44,839 Como ya sabemos que 463 00:21:44,839 --> 00:21:50,660 Número más 4.5 464 00:21:50,660 --> 00:21:53,140 Aquí ya se queja 465 00:21:53,140 --> 00:21:54,019 ¿Vale? 466 00:21:54,720 --> 00:21:55,559 Coge número 467 00:21:55,559 --> 00:21:57,539 Número es un entero 468 00:21:57,539 --> 00:21:58,519 Muy bien, 4 469 00:21:58,519 --> 00:22:00,859 Como lo suma a un decimal 470 00:22:00,859 --> 00:22:02,119 Le pone el punto 0 471 00:22:02,119 --> 00:22:02,740 Muy bien 472 00:22:02,740 --> 00:22:04,720 Le queda 8.5 473 00:22:04,720 --> 00:22:05,400 ¿Vale? 474 00:22:06,079 --> 00:22:07,920 Ahora ese 8.5 475 00:22:07,920 --> 00:22:09,940 Intenta llevarlo a un int 476 00:22:09,940 --> 00:22:12,420 Dice, no puedo llevar un 8.5 a un int 477 00:22:12,420 --> 00:22:14,480 ¿Vale? Hasta aquí es lo que sabemos 478 00:22:14,480 --> 00:22:17,500 Pero puede ocurrir 479 00:22:17,500 --> 00:22:19,900 Que yo quiera hacerlo 480 00:22:19,900 --> 00:22:26,150 Igualmente y decir, no pasa nada 481 00:22:26,150 --> 00:22:28,130 Si quiero hacerlo igualmente 482 00:22:28,130 --> 00:22:29,349 Quitando la parte decimal 483 00:22:29,349 --> 00:22:34,859 Podemos hacer un casting 484 00:22:34,859 --> 00:22:43,759 Es decir, yo quiero 485 00:22:43,759 --> 00:22:46,119 Me da lo mismo que esto sea 8.5 486 00:22:46,119 --> 00:22:47,759 Quiero guardarlo en un int 487 00:22:47,759 --> 00:22:50,240 Que pierdo el .5 488 00:22:50,240 --> 00:22:51,559 Pierdo el .5 489 00:22:51,559 --> 00:22:52,960 Lo siento 490 00:22:52,960 --> 00:22:55,640 Pero claro, tengo que forzarlo y decirle al compilador 491 00:22:55,640 --> 00:22:56,799 Que yo quiero hacer eso 492 00:22:56,799 --> 00:22:59,500 Aun sabiendo que pierdo par de decimal 493 00:22:59,500 --> 00:23:01,839 Pues como se hace un casting a un tipo 494 00:23:01,839 --> 00:23:03,000 Un casting siempre es 495 00:23:03,000 --> 00:23:05,180 Convertir un dato que tiene un tipo, en este caso 496 00:23:05,180 --> 00:23:07,420 Double, a otro, en este caso 497 00:23:07,420 --> 00:23:08,460 Int, eso es un casting 498 00:23:08,460 --> 00:23:11,220 Cambiar el tipo de un dato, vale 499 00:23:11,220 --> 00:23:16,660 Pues entonces, pongo 500 00:23:16,660 --> 00:23:18,859 Al principio de todo 501 00:23:18,859 --> 00:23:20,000 Entre paréntesis 502 00:23:20,000 --> 00:23:22,059 El tipo al que quiero convertir 503 00:23:22,059 --> 00:23:24,980 Vale, el tipo al que quiero convertir 504 00:23:24,980 --> 00:23:27,460 y luego ya después 505 00:23:27,460 --> 00:23:29,660 el valor que quiera convertir 506 00:23:29,660 --> 00:23:31,279 aquí lo único cuidado 507 00:23:31,279 --> 00:23:33,660 quiero convertir todo el resultado 508 00:23:33,660 --> 00:23:34,779 entonces 509 00:23:34,779 --> 00:23:37,140 tengo que ponerlo entre paréntesis para 510 00:23:37,140 --> 00:23:39,099 que quede claro que el int 511 00:23:39,099 --> 00:23:41,039 se refiere a todo enterito 512 00:23:41,039 --> 00:23:45,630 a todo, si no pongo el paréntesis 513 00:23:45,630 --> 00:23:46,990 el casting 514 00:23:46,990 --> 00:23:49,109 se refiere solo a lo que tenga pegado 515 00:23:49,109 --> 00:23:51,329 a lo que tenga ahí pegadito 516 00:23:51,329 --> 00:23:52,809 si yo lo dejo así 517 00:23:52,809 --> 00:23:55,069 el casting entiende 518 00:23:55,069 --> 00:23:57,170 Del compilador que se refiere solo a número 519 00:23:57,170 --> 00:23:59,130 Lo cual es una tontería, porque el número ya es entero 520 00:23:59,130 --> 00:23:59,930 Sería una tontería 521 00:23:59,930 --> 00:24:03,049 No, ojo, el casting se refiere a todo 522 00:24:03,049 --> 00:24:03,869 El resultado final 523 00:24:03,869 --> 00:24:06,869 Pues cuidadín, paréntesis 524 00:24:06,869 --> 00:24:08,930 Vale 525 00:24:08,930 --> 00:24:10,650 Pues estamos forzando 526 00:24:10,650 --> 00:24:12,910 Que esto, que era decimal 527 00:24:12,910 --> 00:24:15,289 Da igual, conviértelo 528 00:24:15,289 --> 00:24:16,349 A int sí o sí 529 00:24:16,349 --> 00:24:18,930 Quito la parte decimal 530 00:24:18,930 --> 00:24:20,670 Y ahora ya sí que cabe en un entero 531 00:24:20,670 --> 00:24:22,029 Ya sí que me ha dejado 532 00:24:22,029 --> 00:24:25,789 entonces cuidado con los castings 533 00:24:25,789 --> 00:24:27,630 porque es una solución maravillosa 534 00:24:27,630 --> 00:24:30,009 para quitar todos los errores de compilación 535 00:24:30,009 --> 00:24:32,009 y para generar todos los de ejecución 536 00:24:32,009 --> 00:24:32,569 del mundo 537 00:24:32,569 --> 00:24:36,029 uno ve un programa con muchas cosas rojas 538 00:24:36,029 --> 00:24:38,109 muchas veces es porque lo ha diseñado 539 00:24:38,109 --> 00:24:39,710 mal, lo ha planteado mal y está 540 00:24:39,710 --> 00:24:41,750 metiendo en variables cosas que no son 541 00:24:41,750 --> 00:24:43,930 entonces el compilador te dice 542 00:24:43,930 --> 00:24:45,470 este tipo no es este tipo 543 00:24:45,470 --> 00:24:47,309 y el compilador como lógicamente 544 00:24:47,309 --> 00:24:49,650 no sabe programar ni el Eclipse ni nada 545 00:24:49,650 --> 00:24:51,630 te lo soluciona 546 00:24:51,630 --> 00:24:52,450 haciéndote un casting 547 00:24:52,450 --> 00:24:55,569 todo lo rojo se quitó 548 00:24:55,569 --> 00:24:56,849 pero el programa ha perdido todo el sentido 549 00:24:56,849 --> 00:24:59,069 esto es como tienes un programa 550 00:24:59,069 --> 00:25:00,990 con usuarios, facturas de usuarios 551 00:25:00,990 --> 00:25:01,890 que vas gestionando 552 00:25:01,890 --> 00:25:04,549 y lo has hecho tan mal que hay una línea 553 00:25:04,549 --> 00:25:06,089 en la cual a un usuario 554 00:25:06,089 --> 00:25:09,109 le estás asignando una factura 555 00:25:09,109 --> 00:25:10,089 o sea un usuario 556 00:25:10,089 --> 00:25:12,049 de repente es una factura 557 00:25:12,049 --> 00:25:14,349 porque lo has diseñado mal 558 00:25:14,349 --> 00:25:16,130 el compilador te dice 559 00:25:16,130 --> 00:25:18,930 a una variable usuario le estás asignando 560 00:25:18,930 --> 00:25:20,250 un objeto tipo factura 561 00:25:20,250 --> 00:25:22,710 error, si le haces un casting 562 00:25:22,710 --> 00:25:24,930 y factura, la transformas 563 00:25:24,930 --> 00:25:26,730 a usuario, compila 564 00:25:26,730 --> 00:25:28,190 sí, maravilloso, compila 565 00:25:28,190 --> 00:25:30,569 pero no tiene ningún sentido que tú transformes 566 00:25:30,569 --> 00:25:32,789 un papelito, factura, que la transformes de repente 567 00:25:32,789 --> 00:25:33,710 en un humano 568 00:25:33,710 --> 00:25:36,630 ¿vale? pero el compilador se ha quitado el error 569 00:25:36,630 --> 00:25:38,869 claro, luego tú ponte a ejecutar eso 570 00:25:38,869 --> 00:25:40,589 cuando te pongas a ejecutar eso 571 00:25:40,589 --> 00:25:42,549 y la máquina virtual se encuentra porque tiene que 572 00:25:42,549 --> 00:25:44,869 transformar un papelito en un humano 573 00:25:44,869 --> 00:25:46,869 pues lógicamente el programa peta 574 00:25:46,869 --> 00:25:48,750 ¿vale? entonces los 575 00:25:48,750 --> 00:25:50,829 castings se tienen que 576 00:25:50,829 --> 00:25:52,410 hacer cuando realmente 577 00:25:52,410 --> 00:25:54,769 se controle que eso es lo que quiero 578 00:25:54,769 --> 00:25:56,690 hacer, no porque 579 00:25:56,690 --> 00:25:58,769 me quitan errores de compilación, creo que me quitan todos los 580 00:25:58,769 --> 00:26:00,589 del mundo, pero el programa que 581 00:26:00,589 --> 00:26:02,809 no tiene ningún sentido si yo cambio unos 582 00:26:02,809 --> 00:26:04,349 tipos a otros así para que 583 00:26:04,349 --> 00:26:06,549 las asignaciones se callen 584 00:26:06,549 --> 00:26:11,809 ¿vale? entonces los castings siempre van 585 00:26:11,809 --> 00:26:13,730 a alterar el valor, que a mí no me importa 586 00:26:13,730 --> 00:26:15,710 alterarlo y lo tengo controlado porque a mí no me 587 00:26:15,710 --> 00:26:17,190 importa quitar aquí la parte decimal 588 00:26:17,190 --> 00:26:19,390 pues venga, pongo el casting 589 00:26:19,390 --> 00:26:21,849 Pero porque he identificado 590 00:26:21,849 --> 00:26:23,230 Que aquí sí que quiero hacerlo 591 00:26:23,230 --> 00:26:40,369 Bueno, pues ya está 592 00:26:40,369 --> 00:26:42,390 Esto explica todo eso 593 00:26:42,390 --> 00:26:52,960 Si tú necesitas 594 00:26:52,960 --> 00:26:54,200 Hacer la conversión 595 00:26:54,200 --> 00:26:55,640 Por ejemplo, esto 596 00:26:55,640 --> 00:26:58,839 Como tal 597 00:26:58,839 --> 00:27:00,740 Tiene sentido 598 00:27:00,740 --> 00:27:03,599 Tú dices, convierte entero este 599 00:27:03,599 --> 00:27:04,960 Entonces esto estaría sumando 600 00:27:04,960 --> 00:27:07,299 El valor de este más 4 601 00:27:07,299 --> 00:27:10,079 y el resultado convirtiéndolo a entero 602 00:27:10,079 --> 00:27:11,039 ya sería entero 603 00:27:11,039 --> 00:27:16,380 bueno, sí, 4 más el número 604 00:27:16,380 --> 00:27:16,980 este que fuera 605 00:27:16,980 --> 00:27:19,819 no lo sé, pero vamos, lo que valiera 606 00:27:19,819 --> 00:27:21,920 4, 8, esto sería 607 00:27:21,920 --> 00:27:23,940 este resultado sería 608 00:27:23,940 --> 00:27:26,339 8 y sin el int 609 00:27:26,339 --> 00:27:27,779 sería 8 también 610 00:27:27,779 --> 00:27:29,940 porque lo hemos cambiado a entero 611 00:27:29,940 --> 00:27:31,640 vale 612 00:27:31,640 --> 00:27:33,920 a ver, siempre que necesites cambiar un tipo de dato 613 00:27:33,920 --> 00:27:34,940 pero cuando necesitas cambiar 614 00:27:34,940 --> 00:27:37,960 Haces ese casting, pero tienes que saber lo que haces 615 00:27:37,960 --> 00:27:38,920 ¿Vale? 616 00:27:48,900 --> 00:27:49,420 Vale 617 00:27:49,420 --> 00:27:50,960 Esto es muy 618 00:27:50,960 --> 00:27:53,200 Esto es muy fácil 619 00:27:53,200 --> 00:27:54,160 De entender 620 00:27:54,160 --> 00:27:56,339 ¿Vale? 621 00:27:58,099 --> 00:27:58,880 A veces 622 00:27:58,880 --> 00:28:00,960 A una variable le queremos sumar uno 623 00:28:00,960 --> 00:28:03,599 Antes a número de usuarios le hemos sumado cualquier otra cosa 624 00:28:03,599 --> 00:28:04,660 A veces le queremos sumar uno 625 00:28:04,660 --> 00:28:07,700 Eso significa incrementar la variable 626 00:28:07,700 --> 00:28:09,779 O a veces le queremos quitar uno 627 00:28:09,779 --> 00:28:11,359 A una variable, eso se llama decrementar 628 00:28:11,359 --> 00:28:15,660 Como es una operación muy habitual, tanto incrementar en 1 como decrementar, 629 00:28:16,220 --> 00:28:18,039 porque es lo que hacemos cuando contamos, ¿no? 630 00:28:18,500 --> 00:28:20,819 Me da igual contar hacia adelante que contar hacia atrás. 631 00:28:21,000 --> 00:28:23,019 Contar es una operación natural. 632 00:28:24,680 --> 00:28:29,339 Y entonces, en programación, también tenemos que contar muchas veces. 633 00:28:29,920 --> 00:28:32,700 El programa nuestro muchas veces tendrá que contar. 634 00:28:33,319 --> 00:28:34,440 ¿Y contar qué es? 635 00:28:35,039 --> 00:28:37,140 Incrementar en 1 muchas veces. 636 00:28:37,140 --> 00:28:38,019 Eso es contar. 637 00:28:38,019 --> 00:28:40,960 1, 2, 3, 4, incrementar en 1 638 00:28:40,960 --> 00:28:41,859 un montón de veces 639 00:28:41,859 --> 00:28:44,319 1 cuando paso a 2 ya he incrementado en 1 640 00:28:44,319 --> 00:28:46,640 del 2 cuando paso a 3 ya he incrementado en 1 641 00:28:46,640 --> 00:28:48,900 del 3 cuando paso a 4 ya he incrementado en 1 642 00:28:48,900 --> 00:28:50,519 pues eso es contar 643 00:28:50,519 --> 00:28:52,160 mi contador inicial 644 00:28:52,160 --> 00:28:53,740 el que inicialmente está en 0 645 00:28:53,740 --> 00:28:56,880 le incremento 1, ahora le incremento 1 otra vez 646 00:28:56,880 --> 00:28:58,259 ahora le incremento 1 otra vez 647 00:28:58,259 --> 00:29:00,240 y así mi contador inicial va pasando 648 00:29:00,240 --> 00:29:01,579 0, 1, 2, 3 649 00:29:01,579 --> 00:29:02,880 luego contar 650 00:29:02,880 --> 00:29:05,859 es una operación natural 651 00:29:05,859 --> 00:29:08,099 que tendrá que hacer un programa 652 00:29:08,099 --> 00:29:10,180 muchas veces, contar cuántas veces 653 00:29:10,180 --> 00:29:12,180 ha pasado algo, contar cuántos 654 00:29:12,180 --> 00:29:14,299 usuarios se han dado de alta, contar 655 00:29:14,299 --> 00:29:16,019 cuántas facturas se han pagado 656 00:29:16,019 --> 00:29:17,920 o sea, contar es 657 00:29:17,920 --> 00:29:20,240 una 658 00:29:20,240 --> 00:29:21,859 actividad natural en un programa 659 00:29:21,859 --> 00:29:23,720 bueno, pues contar implica 660 00:29:23,720 --> 00:29:25,819 a una variable sumarle uno 661 00:29:25,819 --> 00:29:28,359 muchas veces, luego sumar 662 00:29:28,359 --> 00:29:30,380 uno a una variable es una operación natural 663 00:29:30,380 --> 00:29:32,279 ¿cómo sumamos uno a una 664 00:29:32,279 --> 00:29:34,019 variable? pues ya lo sabemos hacer 665 00:29:34,019 --> 00:29:35,259 ¿verdad? 666 00:29:35,859 --> 00:29:45,220 Si tenemos, por ejemplo, una variable contador para hacer una cuenta, que inicialmente es 0, voy a incrementarla en 1. 667 00:29:45,740 --> 00:30:02,170 Ya sabemos que haríamos o bien esto, contador más 1, y ahora ya esta la incrementa en 1, su valor antiguo le suma 1 y valor nuevo a contador. 668 00:30:03,789 --> 00:30:09,809 O esta de aquí, que es la misma que la de arriba. 669 00:30:09,809 --> 00:30:13,519 vale, ya hemos visto antes 670 00:30:13,519 --> 00:30:15,440 que esta expresión de abajo es la misma 671 00:30:15,440 --> 00:30:16,759 que la de arriba, la misma 672 00:30:16,759 --> 00:30:19,720 quito el igual, me queda contador más uno 673 00:30:19,720 --> 00:30:21,200 ¿qué hago con contador más uno? 674 00:30:21,359 --> 00:30:23,619 se va a contador, son dos formas de hacer lo mismo 675 00:30:23,619 --> 00:30:25,519 pero es que para este caso 676 00:30:25,519 --> 00:30:27,240 cuando yo quiero incrementar uno 677 00:30:27,240 --> 00:30:29,680 y solo uno, no cualquier otra burrada por aquí 678 00:30:29,680 --> 00:30:30,640 sino solo uno 679 00:30:30,640 --> 00:30:32,819 tengo otra abreviatura más 680 00:30:32,819 --> 00:30:34,440 otra abreviatura más 681 00:30:34,440 --> 00:30:36,160 que es esta 682 00:30:36,160 --> 00:30:39,079 contador más más 683 00:30:39,079 --> 00:30:44,049 luego 684 00:30:44,049 --> 00:30:47,029 esta línea, esta línea 685 00:30:47,029 --> 00:30:47,930 y esta línea 686 00:30:47,930 --> 00:30:51,230 hacen exactamente 687 00:30:51,230 --> 00:30:52,950 lo mismo, las tres 688 00:30:52,950 --> 00:30:54,349 exactamente lo mismo 689 00:30:54,349 --> 00:30:57,750 me da igual hacerlo así 690 00:30:57,750 --> 00:31:00,170 que hacerlo así, que hacerlo así 691 00:31:00,170 --> 00:31:01,710 ¿vale? 692 00:31:03,349 --> 00:31:04,690 esta es la abreviatura 693 00:31:04,690 --> 00:31:05,410 más usada 694 00:31:05,410 --> 00:31:08,049 entonces cuando veis contador++ 695 00:31:08,049 --> 00:31:10,710 ¿qué expresión matemática estáis viendo? 696 00:31:10,710 --> 00:31:11,650 estáis viendo 697 00:31:11,650 --> 00:31:14,529 una suma y una asignación 698 00:31:14,529 --> 00:31:16,089 Todo esto estáis viendo 699 00:31:16,089 --> 00:31:18,809 Una suma y una asignación 700 00:31:18,809 --> 00:31:21,130 Estáis viendo todo eso 701 00:31:21,130 --> 00:31:22,589 Cuando veis contador más más 702 00:31:22,589 --> 00:31:27,640 Y también funciona 703 00:31:27,640 --> 00:31:29,500 Cuando queremos decrementar en 1 704 00:31:29,500 --> 00:31:32,099 Por ejemplo 705 00:31:32,099 --> 00:31:33,920 Que ahora yo quiero al contador 706 00:31:33,920 --> 00:31:35,920 Quitarle 1 porque estoy contando 707 00:31:35,920 --> 00:31:36,619 Hacia atrás 708 00:31:36,619 --> 00:31:39,559 Pues podríamos hacer 709 00:31:39,559 --> 00:31:41,339 Contador menos 710 00:31:41,339 --> 00:31:43,480 1 711 00:31:43,480 --> 00:31:50,400 vale, entonces con esta expresión 712 00:31:50,400 --> 00:31:52,660 el valor viejo de contador 713 00:31:52,660 --> 00:31:54,039 lo he decrementado en 1 714 00:31:54,039 --> 00:31:56,119 y el nuevo valor 715 00:31:56,119 --> 00:31:57,380 a contador 716 00:31:57,380 --> 00:32:01,500 vale, pues esto mismo con el operador 717 00:32:01,500 --> 00:32:03,440 de arriba, ya sabemos 718 00:32:03,440 --> 00:32:04,759 que lo podríamos hacer así 719 00:32:04,759 --> 00:32:12,390 la de arriba y la de abajo son idénticas 720 00:32:12,390 --> 00:32:15,609 y 721 00:32:15,609 --> 00:32:18,069 hay una tercera forma de abreviar 722 00:32:18,069 --> 00:32:18,450 esto 723 00:32:18,450 --> 00:32:28,109 que es esta, entonces 724 00:32:28,109 --> 00:32:30,130 de nuevo, las tres 725 00:32:30,130 --> 00:32:31,789 son iguales 726 00:32:31,789 --> 00:32:34,269 y cuando veis esta así tan cortita 727 00:32:34,269 --> 00:32:35,589 estáis viendo dos cosas 728 00:32:35,589 --> 00:32:38,329 una resta y una asignación 729 00:32:38,329 --> 00:32:39,509 las dos 730 00:32:39,509 --> 00:32:41,869 esto es una resta 731 00:32:41,869 --> 00:32:43,890 en uno y el resultado 732 00:32:43,890 --> 00:32:50,380 una asignación, entonces se usa 733 00:32:50,380 --> 00:32:52,140 tanto lo de incrementar en uno o 734 00:32:52,140 --> 00:32:54,220 decrementar en uno, porque lo 735 00:32:54,220 --> 00:32:56,500 hacemos muchas veces cuando contamos 736 00:32:56,500 --> 00:32:58,559 pues que hay una abreviatura 737 00:32:58,559 --> 00:33:01,359 que es la que 738 00:33:01,359 --> 00:33:03,599 usamos cuando incrementamos 739 00:33:03,599 --> 00:33:05,220 en 1, no ponemos todo esto 740 00:33:05,220 --> 00:33:06,759 porque es muy largo 741 00:33:06,759 --> 00:33:09,160 pero podríamos porque es exactamente igual 742 00:33:09,160 --> 00:33:11,279 hace lo mismo, es la misma expresión 743 00:33:11,279 --> 00:33:33,630 pues esta abreviatura no puedes hacer 744 00:33:33,630 --> 00:33:36,730 si quieres que, con contar 2 a que te refieres 745 00:33:36,730 --> 00:33:42,250 sumar de 2 en 2 746 00:33:42,250 --> 00:33:44,130 pues entonces esa abreviatura no te vale 747 00:33:44,130 --> 00:33:46,130 tendrías que usar esta expresión 748 00:33:46,130 --> 00:33:47,210 o esta 749 00:33:47,210 --> 00:33:55,069 Entonces si quieres que cuente de dos en dos 750 00:33:55,069 --> 00:33:56,410 Usas esta 751 00:33:56,410 --> 00:33:58,210 O usas esta, esta no 752 00:33:58,210 --> 00:34:00,710 Porque esta solo vale para contar de uno en uno 753 00:34:00,710 --> 00:34:02,549 ¿Vale? Esa solo vale 754 00:34:02,549 --> 00:34:03,710 Para contar de uno en uno 755 00:34:03,710 --> 00:34:06,430 ¿Dónde va usted? 756 00:34:08,510 --> 00:34:10,050 Ay, no puedes esperar los cinco minutos 757 00:34:10,050 --> 00:34:11,809 Que faltan para que terminemos 758 00:34:11,809 --> 00:34:13,150 Que ya en cinco minutos nos vamos 759 00:34:13,150 --> 00:34:18,309 Cinco minutos, que serán ahí nueve 760 00:34:18,309 --> 00:34:24,500 Aquí en el texto dice 761 00:34:24,500 --> 00:34:25,960 Cinco minutos y ya nos vamos 762 00:34:25,960 --> 00:34:27,900 Y relajamos 763 00:34:27,900 --> 00:34:28,980 Que esto ha sido un rollo muy largo 764 00:34:28,980 --> 00:34:32,199 Pero es que de verdad en mi caso es que no podemos hacer prácticamente nada 765 00:34:32,199 --> 00:34:34,099 Si no tenemos esto 766 00:34:34,099 --> 00:34:36,219 Revisado 767 00:34:36,219 --> 00:34:38,599 Vale, aquí en el texto digo 768 00:34:38,599 --> 00:34:40,519 El operador este puede ir 769 00:34:40,519 --> 00:34:41,739 A la derecha o a la izquierda 770 00:34:41,739 --> 00:34:42,880 Claro que puede ir 771 00:34:42,880 --> 00:34:44,960 Es decir, si yo pongo 772 00:34:44,960 --> 00:34:46,500 Más más 773 00:34:46,500 --> 00:34:48,420 Contador 774 00:34:48,420 --> 00:34:50,639 Esto también funciona 775 00:34:50,639 --> 00:34:52,659 Y si pongo 776 00:34:52,659 --> 00:34:53,699 Menos menos 777 00:34:53,699 --> 00:34:55,840 Contador 778 00:34:55,840 --> 00:34:58,739 Esto también funciona 779 00:34:58,739 --> 00:35:01,699 Entonces 780 00:35:01,699 --> 00:35:06,559 ¿Cuál es la diferencia? 781 00:35:06,920 --> 00:35:08,880 Entre ponerlo delante o ponerlo detrás 782 00:35:08,880 --> 00:35:11,860 Pues así 783 00:35:11,860 --> 00:35:13,840 Cuando va suelto 784 00:35:13,840 --> 00:35:14,780 Con la variable 785 00:35:14,780 --> 00:35:15,920 Cuando va suelto 786 00:35:15,920 --> 00:35:17,460 No hay ninguna diferencia 787 00:35:17,460 --> 00:35:18,400 Me da lo mismo 788 00:35:18,400 --> 00:35:21,340 lo normal es que lo ponga detrás porque se ve mejor 789 00:35:21,340 --> 00:35:22,699 no hay ninguna diferencia 790 00:35:22,699 --> 00:35:25,300 esto y esto hace lo mismo que es incrementar en uno 791 00:35:25,300 --> 00:35:27,420 contador y esto y esto hace lo mismo 792 00:35:27,420 --> 00:35:28,699 que es incrementar en uno contador 793 00:35:28,699 --> 00:35:30,820 entonces porque hay dos versiones 794 00:35:30,820 --> 00:35:31,940 ponerlo delante y ponerlo detrás 795 00:35:31,940 --> 00:35:35,679 hay dos versiones porque Java me permite 796 00:35:35,679 --> 00:35:37,559 a la vez que incremento 797 00:35:37,559 --> 00:35:39,280 una variable usarla 798 00:35:39,280 --> 00:35:41,079 dentro de otra expresión más complicada 799 00:35:41,079 --> 00:35:43,420 por ejemplo 800 00:35:43,420 --> 00:35:51,170 podemos 801 00:35:51,170 --> 00:35:53,590 usar el incremento 802 00:35:54,570 --> 00:36:03,710 o el decremento dentro de otras expresiones. 803 00:36:04,190 --> 00:36:12,039 Por ejemplo, vamos a imaginar que tenemos aquí nuestro numerito, 804 00:36:12,300 --> 00:36:15,000 número, que tendremos algún número por ahí declarado entero, ¿verdad? 805 00:36:15,179 --> 00:36:15,820 Sí, este. 806 00:36:18,400 --> 00:36:18,639 Vale. 807 00:36:20,199 --> 00:36:25,380 Yo tengo aquí mi número y mi número, por ejemplo, 808 00:36:25,480 --> 00:36:27,940 va a ser igual a contador más 3. 809 00:36:29,079 --> 00:36:29,559 ¿Vale? 810 00:36:29,880 --> 00:36:31,500 Primera expresión que se me ha ocurrido. 811 00:36:32,880 --> 00:36:33,079 Vale. 812 00:36:33,079 --> 00:36:53,369 Pues entonces, yo necesito incrementar este número a lo que tenga el contador más 3 y quiero dejar contador incrementado, quiero dejarlo incrementado además, porque el contador cada vez que lo use para lo que sea, además luego lo quiero dejar incrementado, por ejemplo. 813 00:36:53,369 --> 00:36:59,530 Pues entonces, Java me permite, a la vez que uso una variable dentro de una expresión, 814 00:36:59,650 --> 00:37:05,750 a la vez que la uso, contador o la que sea, a la vez que la uso, incrementarla. 815 00:37:06,630 --> 00:37:07,510 Me deja esto. 816 00:37:08,289 --> 00:37:08,489 ¿Vale? 817 00:37:09,210 --> 00:37:16,860 Entonces, yo cualquier variable que yo use dentro de una expresión, cualquiera, como esta, cualquier variable, 818 00:37:16,980 --> 00:37:20,159 yo puedo, si quiero, ponerle el incremento. 819 00:37:20,219 --> 00:37:21,099 ¿Y esto qué significa? 820 00:37:21,739 --> 00:37:23,619 El incremento al principio es como si no existiera. 821 00:37:24,679 --> 00:37:27,780 Tú haces contador más 3. 822 00:37:28,340 --> 00:37:28,559 Vale. 823 00:37:29,219 --> 00:37:30,679 El resultado va a número. 824 00:37:31,300 --> 00:37:35,159 Y este significa, y ahora que ya has terminado, 825 00:37:35,780 --> 00:37:38,380 además deja contador incrementado en 1. 826 00:37:39,760 --> 00:37:42,900 Luego, esto me permite hacer dos operaciones en una. 827 00:37:43,539 --> 00:37:47,739 Primera, la asignación a número de contador más 3. 828 00:37:48,579 --> 00:37:51,420 Y luego, una vez terminado, dejo contador incrementado. 829 00:37:51,940 --> 00:37:53,380 Porque a lo mejor hay una operación, 830 00:37:53,380 --> 00:38:01,139 Hay una situación en la cual yo quiero usar esta variable contador, pero cada vez que la use, la quiero dejar incrementada en 1 para avisar de que la he usado. 831 00:38:02,079 --> 00:38:02,280 ¿Vale? 832 00:38:04,480 --> 00:38:07,340 Bueno, pues pongo el más más y eso significa. 833 00:38:09,659 --> 00:38:20,320 Bueno, pues aquí sí que hay diferencia entre que el más más vaya antes o que el más más vaya antes o que vaya después. 834 00:38:20,579 --> 00:38:21,599 Aquí sí que hay diferencia. 835 00:38:21,599 --> 00:38:40,269 es decir, estas dos expresiones tienen comportamiento distinto, 836 00:38:40,389 --> 00:38:58,300 comportamiento distinto, esta y esta, pero poniendo el más más delante, 837 00:39:01,440 --> 00:39:05,940 ambas son válidas y serían contador más 3 a número, 838 00:39:05,940 --> 00:39:08,059 Y luego deja incrementado el contador 839 00:39:08,059 --> 00:39:10,739 Pero esta deja incrementado el contador luego 840 00:39:10,739 --> 00:39:12,219 Y esta lo incrementa antes 841 00:39:12,219 --> 00:39:14,079 Luego lo vemos ya despacio 842 00:39:14,079 --> 00:39:17,619 Y paramos aquí