1 00:00:00,000 --> 00:00:02,839 vale, pues vamos a revisar 2 00:00:02,839 --> 00:00:04,780 ahora sí, de nuevo 3 00:00:04,780 --> 00:00:06,799 os aviso de que es un poco rollo, pero 4 00:00:06,799 --> 00:00:08,980 esta parte 5 00:00:08,980 --> 00:00:10,820 es así, vale, vamos 6 00:00:10,820 --> 00:00:12,759 a revisar, ahora ya 7 00:00:12,759 --> 00:00:15,160 sí que sí, de qué operadores 8 00:00:15,160 --> 00:00:16,719 disponemos para 9 00:00:16,719 --> 00:00:18,780 construir ya expresiones en Java 10 00:00:18,780 --> 00:00:20,820 vale, conocemos 11 00:00:20,820 --> 00:00:22,679 lógicamente algunas cosas básicas 12 00:00:22,679 --> 00:00:25,179 que hemos usado para hacer algunas cosas básicas 13 00:00:25,179 --> 00:00:26,480 para ver 14 00:00:26,480 --> 00:00:29,079 un poquito de qué va el rollo de las variables, lógicamente 15 00:00:29,079 --> 00:00:33,000 Conocemos el operador de asignación 16 00:00:33,000 --> 00:00:33,479 ¿Verdad? 17 00:00:35,299 --> 00:00:37,140 Conocemos los aritméticos 18 00:00:37,140 --> 00:00:42,039 Conocemos los de comparación 19 00:00:42,039 --> 00:00:42,780 Claro 20 00:00:42,780 --> 00:00:45,619 Menor que, mayor que, menor o igual 21 00:00:45,619 --> 00:00:46,759 Mayor o igual 22 00:00:46,759 --> 00:00:49,179 Entonces algunos operadores ya los conocemos 23 00:00:49,179 --> 00:00:51,820 ¿Y cómo los usamos para construir expresiones? 24 00:00:52,439 --> 00:00:55,179 Pues como los usamos en el contexto de las matemáticas 25 00:00:55,179 --> 00:00:56,039 También, claro 26 00:00:56,039 --> 00:00:58,340 Pues cualquiera de estos operadores 27 00:00:58,340 --> 00:01:01,240 tendrá un operador delante y otro detrás 28 00:01:01,240 --> 00:01:04,560 y me devolverá un resultado 29 00:01:04,560 --> 00:01:06,700 que a su vez asignaré a otro sitio 30 00:01:06,700 --> 00:01:07,560 ¿vale? 31 00:01:08,340 --> 00:01:11,280 estos operadores también funcionan 32 00:01:11,280 --> 00:01:13,920 con un operando delante y otro detrás 33 00:01:13,920 --> 00:01:16,459 lo que pasa es que lo que obtengo ahora 34 00:01:16,459 --> 00:01:17,500 como vimos el otro día 35 00:01:17,500 --> 00:01:22,500 ahora no será un número 36 00:01:22,500 --> 00:01:24,819 no será un valor numérico 37 00:01:24,819 --> 00:01:26,180 ahora será un valor booleano 38 00:01:26,180 --> 00:01:28,280 lo que obtenemos será un true o un false 39 00:01:28,280 --> 00:01:34,500 Entonces estos operadores básicos de asignación, aritméticos y de comparación 40 00:01:34,500 --> 00:01:37,900 Ya los hemos usado para hacer expresiones sencillas 41 00:01:37,900 --> 00:01:40,560 Que involucraban valores variables 42 00:01:40,560 --> 00:01:45,079 Me daba un resultado que yo usaba para guardar una variable 43 00:01:45,079 --> 00:01:50,040 Pero hay más operadores que admite el lenguaje Java 44 00:01:50,040 --> 00:01:54,079 Para poder hacer expresiones un poquito más complejas 45 00:01:54,079 --> 00:01:57,680 Que reflejen más situaciones, más posibilidades 46 00:01:57,680 --> 00:02:01,159 bueno, pues en el aula virtual hay un pequeño compendio 47 00:02:01,159 --> 00:02:03,439 que lo podemos usar 48 00:02:03,439 --> 00:02:06,859 como referencia para no perdernos 49 00:02:06,859 --> 00:02:08,500 entonces 50 00:02:08,500 --> 00:02:11,020 si 51 00:02:11,020 --> 00:02:23,539 si abrimos el aula 52 00:02:23,539 --> 00:02:25,240 virtual 53 00:02:25,240 --> 00:02:43,490 uy, ya me he metido en el que no es 54 00:02:43,490 --> 00:03:05,560 este, vale, pues si nos metemos 55 00:03:05,560 --> 00:03:06,539 aquí 56 00:03:06,539 --> 00:03:13,360 Porque se ha quitado 57 00:03:13,360 --> 00:03:14,960 Si estaba antes puesto 58 00:03:14,960 --> 00:03:17,659 Ah, es que no lo he conectado 59 00:03:17,659 --> 00:03:19,439 A la 60 00:03:19,439 --> 00:03:22,000 Pantalla 61 00:03:22,000 --> 00:03:25,400 Lo he conectado a la otra 62 00:03:25,400 --> 00:03:56,400 Ahora sí 63 00:03:56,400 --> 00:04:00,199 Pues aquí en el aula virtual 64 00:04:00,199 --> 00:04:02,729 Vale 65 00:04:02,729 --> 00:04:06,860 Tenemos aquí 66 00:04:06,860 --> 00:04:07,139 Ah 67 00:04:07,139 --> 00:04:10,960 Que habíamos dicho que antes de meternos 68 00:04:10,960 --> 00:04:12,900 En operadores íbamos a incorporar 69 00:04:12,900 --> 00:04:14,960 el string, aunque fuera tipo 70 00:04:14,960 --> 00:04:16,899 objeto, fue lo último que dijimos el 71 00:04:16,899 --> 00:04:18,120 miércoles, es verdad 72 00:04:18,120 --> 00:04:20,920 que ayer, claro, no tuvimos clase y ayer 73 00:04:20,920 --> 00:04:22,779 no lo hicimos, vale, vale, vale, dijimos que 74 00:04:22,779 --> 00:04:24,899 comprar el string para poder trabajar con 75 00:04:24,899 --> 00:04:27,060 cadenas de texto, vale, que eso no 76 00:04:27,060 --> 00:04:27,959 vale, vale, vale 77 00:04:27,959 --> 00:04:30,680 pues antes de revisar los operadores 78 00:04:30,680 --> 00:04:31,920 vamos a incorporar 79 00:04:31,920 --> 00:04:34,759 ese tipo de dato 80 00:04:34,759 --> 00:04:35,600 el noveno 81 00:04:35,600 --> 00:04:39,199 tenemos ocho tipos de datos primitivos 82 00:04:39,199 --> 00:04:40,680 que ya sabemos cómo funcionan 83 00:04:40,680 --> 00:04:44,240 pero cuando queremos trabajar con un texto al completo 84 00:04:44,240 --> 00:04:47,920 una frase, un nombre, ninguno de esos tipos nos vale 85 00:04:47,920 --> 00:04:49,899 porque el char es solo un carácter 86 00:04:49,899 --> 00:04:54,220 entonces, como desde ya nos viene bien 87 00:04:54,220 --> 00:04:56,980 poder trabajar con textos completos 88 00:04:56,980 --> 00:05:00,459 vamos a incorporarlo, aunque sea un tipo de dato 89 00:05:00,459 --> 00:05:02,079 no primitivo, sino objeto 90 00:05:02,079 --> 00:05:04,259 todo eso ya lo explicamos el otro día 91 00:05:04,259 --> 00:05:07,180 que un tipo de dato objeto es un tipo de dato 92 00:05:07,180 --> 00:05:10,660 que se construye como una agregación 93 00:05:10,660 --> 00:05:12,860 de datos primitivos 94 00:05:12,860 --> 00:05:14,699 dentro, entonces el 95 00:05:14,699 --> 00:05:16,560 string en particular es una 96 00:05:16,560 --> 00:05:18,139 agregación de muchos char 97 00:05:18,139 --> 00:05:19,459 vale 98 00:05:19,459 --> 00:05:22,680 entonces vamos a verlo en una 99 00:05:22,680 --> 00:05:23,959 clase 100 00:05:23,959 --> 00:05:26,740 que sea ejemplo 101 00:05:26,740 --> 00:05:28,959 string 102 00:05:28,959 --> 00:05:29,560 y ya está 103 00:05:29,560 --> 00:05:41,420 ahora lo vemos 104 00:05:41,420 --> 00:05:43,120 admite una 105 00:05:43,120 --> 00:05:44,819 cadena de texto, entonces 106 00:05:44,819 --> 00:05:47,040 una cadena de texto puede tener muchas palabras 107 00:05:47,040 --> 00:05:49,019 porque están separadas por espacios que a su vez 108 00:05:49,019 --> 00:05:49,620 son booleanos 109 00:05:49,620 --> 00:05:51,639 perdón, chat 110 00:05:51,639 --> 00:05:54,060 vale, pues venga 111 00:05:54,060 --> 00:05:56,600 sí, pero es que esto vosotros 112 00:05:56,600 --> 00:05:58,160 organizados como queráis 113 00:05:58,160 --> 00:06:01,120 vosotros ya sabéis 114 00:06:01,120 --> 00:06:02,899 crear un proyecto 115 00:06:02,899 --> 00:06:04,980 y dentro del proyecto crear 116 00:06:04,980 --> 00:06:06,220 diferentes paquetes para 117 00:06:06,220 --> 00:06:08,860 dividir conceptualmente vuestros programas 118 00:06:08,860 --> 00:06:10,939 y dentro de cada paquete ya hacéis vuestras clases 119 00:06:10,939 --> 00:06:12,019 o programas 120 00:06:12,019 --> 00:06:14,060 que para nosotros ahora son sinónimos 121 00:06:14,060 --> 00:06:16,899 ahora ya vuestra organización interna para las cosas 122 00:06:16,899 --> 00:06:19,000 ya la vuestra 123 00:06:19,000 --> 00:06:20,899 no tenéis que hacer así a tiro fijo 124 00:06:20,899 --> 00:06:22,360 todo lo que yo vaya haciendo aquí 125 00:06:22,360 --> 00:06:24,519 ¿vale? entonces 126 00:06:24,519 --> 00:06:27,360 si tú te quieres organizar todas las clases en un proyecto 127 00:06:27,360 --> 00:06:28,879 en diferente proyecto 128 00:06:28,879 --> 00:06:30,939 yo voy a hacer una clase, un programa 129 00:06:30,939 --> 00:06:33,240 para ejemplificarlo de stream 130 00:06:33,240 --> 00:06:34,939 ¿vale? yo cada cosa que 131 00:06:34,939 --> 00:06:36,839 vayamos explicando 132 00:06:36,839 --> 00:06:39,379 la iré poniendo en práctica 133 00:06:39,379 --> 00:06:40,660 a través de un 134 00:06:40,660 --> 00:06:42,420 programa, de una clase 135 00:06:42,420 --> 00:06:44,600 ¿dónde guardéis ese programa vosotros? 136 00:06:44,759 --> 00:06:46,920 pues según vuestra organización de proyectos, de paquetes 137 00:06:46,920 --> 00:06:47,560 la que queráis 138 00:06:47,560 --> 00:06:52,240 vale, pues entonces 139 00:06:52,240 --> 00:06:57,110 estoy quitando 140 00:06:57,110 --> 00:06:59,649 estoy quitando el public todo el rato 141 00:06:59,649 --> 00:07:01,529 porque como no hace, da igual 142 00:07:01,529 --> 00:07:03,149 podéis no quitarlo y no pasa nada 143 00:07:03,149 --> 00:07:05,490 pero precisamente 144 00:07:05,490 --> 00:07:07,189 como no sabemos lo que significa 145 00:07:07,189 --> 00:07:09,250 y realmente que esté o no esté 146 00:07:09,250 --> 00:07:11,149 da igual, porque no lo estamos usando 147 00:07:11,149 --> 00:07:13,509 porque no sabemos lo que significa, pues por eso lo quito 148 00:07:13,509 --> 00:07:15,329 para no meter cosas que no hemos dado 149 00:07:15,329 --> 00:07:17,550 vale, pues ya tengo 150 00:07:17,550 --> 00:07:19,230 yo un programita limpio 151 00:07:19,230 --> 00:07:21,689 ahí vacío para empezar a hacer cosas con él 152 00:07:21,689 --> 00:07:25,550 ¿Qué queríamos ahora mostrar? 153 00:07:26,110 --> 00:07:29,790 Queríamos mostrar un noveno tipo de dato que nos puede ser útil 154 00:07:29,790 --> 00:07:35,810 Por ejemplo, imaginad un programa que necesita nombres de usuarios 155 00:07:35,810 --> 00:07:40,310 Entonces el programa, pues quiere un nombre 156 00:07:42,310 --> 00:07:43,949 Introduzca su nombre 157 00:07:43,949 --> 00:07:49,790 Para hacer cosas con el nombre, yo que sé, para hola o para saludarte, para cualquier cosa 158 00:07:49,790 --> 00:07:52,730 introduzcas un nombre que yo te voy a saludar 159 00:07:52,730 --> 00:07:54,250 o voy a hacer cualquier cosa con tu nombre 160 00:07:54,250 --> 00:07:57,370 entonces aquí ya se nos plantea 161 00:07:57,370 --> 00:07:58,850 el problema 162 00:07:58,850 --> 00:08:00,170 de que un nombre 163 00:08:00,170 --> 00:08:02,949 es una cadena de texto 164 00:08:02,949 --> 00:08:04,870 es decir, muchos caracteres 165 00:08:04,870 --> 00:08:05,649 no es solo uno 166 00:08:05,649 --> 00:08:08,810 entonces, para guardar 167 00:08:08,810 --> 00:08:09,790 el dato nombre 168 00:08:09,790 --> 00:08:13,250 ¿qué variable utilizo? 169 00:08:14,509 --> 00:08:14,870 esa 170 00:08:14,870 --> 00:08:17,009 porque las que yo tengo 171 00:08:17,009 --> 00:08:18,370 ahora no me vale ninguna 172 00:08:18,370 --> 00:08:20,610 esta no me vale para guardar un nombre 173 00:08:20,610 --> 00:08:22,490 ni por supuesto un número int 174 00:08:22,490 --> 00:08:23,310 ni un número double 175 00:08:23,310 --> 00:08:25,810 ¿qué tipo de dato puedo poner ahí? 176 00:08:26,629 --> 00:08:27,970 bueno pues afortunadamente 177 00:08:27,970 --> 00:08:30,410 hay ya un tipo de dato construido 178 00:08:30,410 --> 00:08:31,029 por Java 179 00:08:31,029 --> 00:08:34,750 que sirve para guardar 180 00:08:34,750 --> 00:08:36,590 una cadena de caracteres 181 00:08:36,590 --> 00:08:38,529 y ese tipo 182 00:08:38,529 --> 00:08:39,629 de dato ¿cómo se llama? 183 00:08:39,789 --> 00:08:42,690 se llama string con la S en mayúscula 184 00:08:42,690 --> 00:08:44,549 ¿vale? 185 00:08:46,740 --> 00:08:47,259 entonces 186 00:08:47,259 --> 00:08:48,659 esta variable nombre 187 00:08:48,659 --> 00:08:53,980 Ahora ya vale para guardar una cadena de caracteres 188 00:08:53,980 --> 00:09:01,059 En una variable de tipo string 189 00:09:01,059 --> 00:09:03,080 ¿Qué es lo que guardamos? 190 00:09:04,000 --> 00:09:08,759 Se guardan cadenas de caracteres 191 00:09:08,759 --> 00:09:12,820 Y cuando digo una cadena de caracteres 192 00:09:12,820 --> 00:09:16,080 Digo cualquier sucesión de caracteres de la tabla ASCII 193 00:09:16,080 --> 00:09:19,159 Incluyendo espacios, saltos de línea 194 00:09:19,159 --> 00:09:22,419 por ejemplo, un párrafo con varias líneas 195 00:09:22,419 --> 00:09:24,159 también es un string 196 00:09:24,159 --> 00:09:27,299 porque es una sucesión de los caracteres 197 00:09:27,299 --> 00:09:28,799 el carácter salto de línea 198 00:09:28,799 --> 00:09:30,259 que también es un carácter ASCII 199 00:09:30,259 --> 00:09:33,039 el carácter espacio, el carácter que sea 200 00:09:33,039 --> 00:09:35,919 cualquier sucesión de caracteres 201 00:09:35,919 --> 00:09:37,720 que está en la tabla ASCII 202 00:09:37,720 --> 00:09:39,779 se puede guardar en una variable string 203 00:09:39,779 --> 00:09:42,539 ahora otra cosa ya es 204 00:09:42,539 --> 00:09:44,940 ¿cómo se va a imprimir eso cuando se muestre? 205 00:09:45,559 --> 00:09:47,080 bueno, pues si tiene un salto de línea 206 00:09:47,080 --> 00:09:48,659 ahí metido dentro de esa cadena 207 00:09:48,659 --> 00:09:52,419 pues se imprimirá en líneas separadas, claro, pero eso es otra cosa, 208 00:09:52,519 --> 00:09:56,779 ¿cómo se imprime? Pero string lo que guarda es una cadena de cualquier 209 00:09:56,779 --> 00:10:00,320 sucesión que a mí me dé la gana y de cualquier tamaño 210 00:10:00,320 --> 00:10:04,639 de cadenas de caracteres que están en la tabla ASCII. 211 00:10:05,399 --> 00:10:12,879 ¿Vale? Entonces, si a esta variable 212 00:10:12,879 --> 00:10:18,440 nombre yo le quiero hacer una asignación, 213 00:10:19,620 --> 00:10:22,879 se la haré como siempre, como siempre hacemos, con 214 00:10:22,879 --> 00:10:24,639 nombre de la variable, igual 215 00:10:24,639 --> 00:10:26,139 el valor que yo le quiera dar. 216 00:10:27,679 --> 00:10:28,820 ¿Qué valor le 217 00:10:28,820 --> 00:10:30,940 podemos dar a una variable de tipo stream? 218 00:10:31,320 --> 00:10:32,820 Lo acabamos de decir, una 219 00:10:32,820 --> 00:10:33,899 cadena de caracteres. 220 00:10:34,720 --> 00:10:36,779 Y una cadena de caracteres para 221 00:10:36,779 --> 00:10:38,659 Java, ¿cómo se 222 00:10:38,659 --> 00:10:40,519 representa? Como 223 00:10:40,519 --> 00:10:42,460 el texto que yo quiera, 224 00:10:42,700 --> 00:10:44,220 entre comillas, dobles. 225 00:10:45,279 --> 00:10:46,659 Nunca entre simples, porque 226 00:10:46,659 --> 00:10:48,299 simples tiene ya una función, 227 00:10:48,799 --> 00:10:50,379 que es un único carácter. 228 00:10:51,600 --> 00:10:52,279 Entonces, 229 00:10:52,879 --> 00:10:59,480 Esto es una cadena de caracteres perfectamente válida, ¿vale? 230 00:11:00,419 --> 00:11:08,980 Porque son todo caracteres de la tabla ASCII, el espacio, la o tildada, etcétera, son todo caracteres de la tabla ASCII. 231 00:11:08,980 --> 00:11:22,759 Y como se los he dado a Java entre comillas dobles, pues le estoy diciendo a Java, es el texto este tal cual, el texto tal cual, entre comillas dobles, ¿vale? 232 00:11:22,879 --> 00:11:27,480 Si tú no pones las comillas 233 00:11:27,480 --> 00:11:29,879 Entonces Java interpretará que lo que le estás dando 234 00:11:29,879 --> 00:11:31,200 Es el nombre de una variable 235 00:11:31,200 --> 00:11:35,350 Claro, aquí te daría un error 236 00:11:35,350 --> 00:11:37,350 Porque no hay ninguna variable que se llame Pepito 237 00:11:37,350 --> 00:11:39,149 ¿Vale? 238 00:11:39,549 --> 00:11:40,029 Entonces 239 00:11:40,029 --> 00:11:42,750 Voy a quitar el espacio porque así ya, claro 240 00:11:42,750 --> 00:11:45,549 Esto es la cadena 241 00:11:45,549 --> 00:11:46,649 De texto Pepito 242 00:11:46,649 --> 00:11:48,830 Pero esto 243 00:11:48,830 --> 00:11:52,769 Es 244 00:11:52,769 --> 00:11:56,169 Asigna a nombre el contenido 245 00:11:56,169 --> 00:11:58,149 ido de la variable que se llame Pepito. 246 00:11:58,850 --> 00:12:01,330 La máquina virtual, ¿hay alguna variable que se llame Pepito? 247 00:12:01,590 --> 00:12:01,889 No. 248 00:12:02,190 --> 00:12:02,970 Por eso te da el error. 249 00:12:03,169 --> 00:12:04,110 Pero podría haberla. 250 00:12:04,990 --> 00:12:05,750 Podría haberla. 251 00:12:05,850 --> 00:12:07,950 Podría haber una cadena que se llama Pepito por ahí. 252 00:12:10,090 --> 00:12:10,769 Una variable. 253 00:12:16,960 --> 00:12:19,460 String Pepito igual a lo que sea, por ejemplo. 254 00:12:22,720 --> 00:12:27,740 Aquí tenemos una variable perfectamente declarada de tipo 255 00:12:27,740 --> 00:12:32,440 string y además inicializada con un valor correcto para el 256 00:12:32,440 --> 00:12:34,580 string, que es una cadena de texto entre comillas 257 00:12:34,580 --> 00:12:36,320 doble, variable 258 00:12:36,320 --> 00:12:37,960 ningún problema 259 00:12:37,960 --> 00:12:40,460 ahora dos asignaciones que hacen cosas 260 00:12:40,460 --> 00:12:41,919 completamente distintas, claro 261 00:12:41,919 --> 00:12:44,419 aquí a la variable 262 00:12:44,419 --> 00:12:46,320 nombre le estamos asignando 263 00:12:46,320 --> 00:12:48,639 directamente la cadena pepito 264 00:12:48,639 --> 00:12:49,379 lógicamente 265 00:12:49,379 --> 00:12:52,720 entonces si nosotros aquí mostráramos 266 00:12:52,720 --> 00:12:53,679 lo que tiene nombre 267 00:12:53,679 --> 00:12:56,639 está claro lo que nos mostraría, el valor 268 00:12:56,639 --> 00:12:58,399 que le hemos asignado, que es la cadena 269 00:12:58,399 --> 00:12:59,740 de texto pepito tal cual 270 00:12:59,740 --> 00:13:02,679 ahora yo hago otra asignación diferente 271 00:13:02,679 --> 00:13:03,440 la de abajo 272 00:13:03,440 --> 00:13:06,460 la de abajo es una asignación 273 00:13:06,460 --> 00:13:08,639 completamente distinta a la de arriba 274 00:13:08,639 --> 00:13:10,799 porque esto no está entre comillas 275 00:13:10,799 --> 00:13:12,500 dobles, luego eso 276 00:13:12,500 --> 00:13:14,539 significa, oye como no estoy 277 00:13:14,539 --> 00:13:16,580 entrecomillado, yo soy el 278 00:13:16,580 --> 00:13:18,519 nombre de una variable, búscame 279 00:13:18,519 --> 00:13:20,120 a ver que tengo 280 00:13:20,120 --> 00:13:22,399 y lo que yo tenga se lo das a este 281 00:13:22,399 --> 00:13:24,440 pues eso es lo que hace la máquina 282 00:13:24,440 --> 00:13:26,419 virtual, busca la 283 00:13:26,419 --> 00:13:27,980 variable con este nombre 284 00:13:27,980 --> 00:13:30,080 coge lo que tenga 285 00:13:30,080 --> 00:13:30,879 y se lo da a este 286 00:13:30,879 --> 00:13:33,820 la variable tiene que estar declarada 287 00:13:33,820 --> 00:13:36,259 previamente, si no el compilador 288 00:13:36,259 --> 00:13:37,860 nos habría dejado ejecutar esto 289 00:13:37,860 --> 00:13:38,639 lo está 290 00:13:38,639 --> 00:13:41,720 y además tiene que tener un valor 291 00:13:41,720 --> 00:13:44,259 porque si no, también nos saldría 292 00:13:44,259 --> 00:13:45,220 el error de, oye 293 00:13:45,220 --> 00:13:47,240 que valor cojo yo de aquí 294 00:13:47,240 --> 00:13:49,600 en este caso están las dos 295 00:13:49,600 --> 00:13:51,139 condiciones satisfechas 296 00:13:51,139 --> 00:13:53,940 la variable pepito existe 297 00:13:53,940 --> 00:13:55,639 porque está declarada previamente 298 00:13:55,639 --> 00:13:56,700 aquí está declarada 299 00:13:56,700 --> 00:13:58,500 y además tiene un valor 300 00:13:58,500 --> 00:14:01,720 luego todo perfecto 301 00:14:01,720 --> 00:14:04,200 la máquina virtual irá a esta variable 302 00:14:04,200 --> 00:14:05,700 cogerá lo que tiene dentro 303 00:14:05,700 --> 00:14:09,019 y se lo asignará a la otra variable nombre 304 00:14:09,019 --> 00:14:11,730 ¿no? 305 00:14:11,789 --> 00:14:14,450 entonces si volvemos a mostrar lo que tiene nombre ahora 306 00:14:14,450 --> 00:14:16,970 pues ahora nombre tendrá esto de arriba 307 00:14:16,970 --> 00:14:18,970 ¿verdad? 308 00:14:28,269 --> 00:14:28,669 ¿vale? 309 00:14:29,210 --> 00:14:33,950 la primera vez ha mostrado efectivamente 310 00:14:33,950 --> 00:14:36,809 ha mostrado 311 00:14:36,809 --> 00:14:38,269 lo que tiene la variable nombre 312 00:14:38,269 --> 00:14:40,149 que es tal cual esa cadena 313 00:14:40,149 --> 00:14:40,830 tal cual 314 00:14:40,830 --> 00:14:43,990 la segunda vez le he asignado a nombre 315 00:14:43,990 --> 00:14:45,529 una variable 316 00:14:45,529 --> 00:14:48,090 la máquina virtual 317 00:14:48,090 --> 00:14:49,090 ve que no hay comillas 318 00:14:49,090 --> 00:14:51,750 es una variable, me voy a la variable 319 00:14:51,750 --> 00:14:54,190 cojo su valor y se lo asigno 320 00:14:54,190 --> 00:14:55,669 y cuando lo muestro 321 00:14:55,669 --> 00:14:58,149 efectivamente tiene ese contenido 322 00:14:58,149 --> 00:14:59,669 vale 323 00:14:59,669 --> 00:15:03,840 entonces texto entre comillas 324 00:15:03,840 --> 00:15:05,519 dobles es una cadena 325 00:15:05,519 --> 00:15:09,480 de texto tal cual, literal, ¿para qué las usamos? 326 00:15:09,600 --> 00:15:13,240 para asignárselas a variables string, que son las variables 327 00:15:13,240 --> 00:15:16,419 que nos sirven para guardar cadenas de texto, para eso las usamos 328 00:15:16,419 --> 00:15:23,100 entonces de nuevo comprobemos que aquí no vale poner 329 00:15:23,100 --> 00:15:27,159 una comilla simple, la comilla simple ya tiene 330 00:15:27,159 --> 00:15:31,440 una función, que es indicar un carácter astiliteral, solo uno 331 00:15:31,440 --> 00:15:35,200 entonces la comilla simple si tiene 332 00:15:35,200 --> 00:15:37,559 sentido si yo pongo un solo carácter 333 00:15:37,559 --> 00:15:41,399 pero claro, se la tendría que asignar 334 00:15:41,399 --> 00:15:42,679 a un char, no a un string 335 00:15:42,679 --> 00:15:45,259 un único carácter 336 00:15:45,259 --> 00:15:46,679 entre comillas dobles 337 00:15:46,679 --> 00:15:49,259 es un char y tiene que ir a char 338 00:15:49,259 --> 00:15:50,120 ¿vale? 339 00:15:53,120 --> 00:15:55,539 vamos a, por ejemplo, yo aquí tengo mi variable 340 00:15:55,539 --> 00:15:56,779 char carácter 341 00:15:56,779 --> 00:16:01,840 a mi variable char carácter 342 00:16:01,840 --> 00:16:04,100 le puedo asignar la p 343 00:16:04,100 --> 00:16:05,580 ningún problema 344 00:16:05,580 --> 00:16:08,360 ¿vale? es un único carácter 345 00:16:08,360 --> 00:16:09,340 entre comillas simples 346 00:16:09,340 --> 00:16:11,960 a mi variable char 347 00:16:11,960 --> 00:16:13,940 carácter no le puedo asignar 348 00:16:13,940 --> 00:16:17,820 esto, no le puedo asignar 349 00:16:17,820 --> 00:16:19,700 la p entre comillas dobles 350 00:16:19,700 --> 00:16:21,179 esto no puedo 351 00:16:21,179 --> 00:16:23,559 esto si puedo 352 00:16:23,559 --> 00:16:24,639 esto no puedo 353 00:16:24,639 --> 00:16:27,200 porque al tener aquí comillas dobles 354 00:16:27,200 --> 00:16:29,340 la máquina virtual interpreta 355 00:16:29,340 --> 00:16:31,960 que eso es un tipo cadena de caracteres 356 00:16:31,960 --> 00:16:33,480 ¿qué es una cadena de caracteres 357 00:16:33,480 --> 00:16:35,100 solo con uno? bueno, solo con uno 358 00:16:35,100 --> 00:16:36,919 pero es una cadena de caracteres 359 00:16:36,919 --> 00:16:38,019 no es un carácter solo 360 00:16:38,019 --> 00:16:40,940 entonces no es lo mismo como se almacena por dentro 361 00:16:40,940 --> 00:16:43,179 en la RAM, algo que va a ser 362 00:16:43,179 --> 00:16:44,220 char toda su vida 363 00:16:44,220 --> 00:16:47,080 que algo que es cadena 364 00:16:47,080 --> 00:16:48,620 de caracteres, entonces 365 00:16:48,620 --> 00:16:51,120 cuando la máquina virtual cree el valor p 366 00:16:51,120 --> 00:16:52,580 para asignárselo a carácter 367 00:16:52,580 --> 00:16:54,240 lo va a crear como char 368 00:16:54,240 --> 00:16:57,000 cuando la máquina virtual cree 369 00:16:57,000 --> 00:16:59,059 el valor p, como ve 370 00:16:59,059 --> 00:17:00,460 que hay comillas dobles 371 00:17:00,460 --> 00:17:02,580 lo crea como string 372 00:17:02,580 --> 00:17:04,779 entonces al crearlo como string 373 00:17:04,779 --> 00:17:06,259 jamás puede ir a un char 374 00:17:06,259 --> 00:17:09,099 entonces me da igual 375 00:17:09,099 --> 00:17:10,880 la cantidad de caracteres que hay adentro 376 00:17:10,880 --> 00:17:28,079 Las comillas dobles implican, tú eres cadena de caracteres, aunque tengas 0, 1, 2, porque podría tener 0 también, esto es una cadena de caracteres válida, tiene 0 caracteres, es perfectamente válida, ¿vale? 377 00:17:28,079 --> 00:17:43,940 Entonces, cuando la máquina virtual ve algo entre comillas dobles, es algo que construye como cadena. Luego solamente se puede asignar a las cadenas, o lo que es lo mismo a los strings, solo. A este no, esto mal, no puede asignar una cadena de caracteres aquí. 378 00:17:43,940 --> 00:17:45,759 vale 379 00:17:45,759 --> 00:17:49,180 esto estaría mal 380 00:17:49,180 --> 00:17:52,119 esto también por lo que hemos dicho 381 00:17:52,119 --> 00:17:53,559 porque nombre es un string 382 00:17:53,559 --> 00:17:56,200 este string que he declarado yo aquí arriba 383 00:17:56,200 --> 00:18:00,190 nombre es un string 384 00:18:00,190 --> 00:18:01,789 entonces como nombre 385 00:18:01,789 --> 00:18:03,970 es un string no puede recibir un único 386 00:18:03,970 --> 00:18:05,690 carácter, no puede recibir 387 00:18:05,690 --> 00:18:07,250 algo entre comillas simples 388 00:18:07,250 --> 00:18:08,450 esto 389 00:18:08,450 --> 00:18:11,190 está mal también 390 00:18:11,190 --> 00:18:15,990 sin embargo si yo lo que quiero 391 00:18:15,990 --> 00:18:16,769 es darle la P 392 00:18:16,769 --> 00:18:19,609 esto ya sí que estaría bien 393 00:18:19,609 --> 00:18:20,970 nombre 394 00:18:20,970 --> 00:18:23,589 igual 395 00:18:23,589 --> 00:18:27,369 a p, esto ya sí 396 00:18:27,369 --> 00:18:31,210 está bien, esto mal 397 00:18:31,210 --> 00:18:33,250 esto bien, ¿por qué? 398 00:18:33,369 --> 00:18:34,630 porque nombre es un string 399 00:18:34,630 --> 00:18:37,190 un string solamente puede recibir 400 00:18:37,190 --> 00:18:38,309 cadenas de caracteres 401 00:18:38,309 --> 00:18:41,349 las cadenas de caracteres se indican a java 402 00:18:41,349 --> 00:18:42,150 que lo son 403 00:18:42,150 --> 00:18:44,490 en comillas dobles 404 00:18:44,490 --> 00:18:46,789 esta tiene solo un carácter, no pasa nada 405 00:18:46,789 --> 00:18:49,509 una cadena de caracteres puede tener uno, no pasa nada 406 00:18:49,509 --> 00:18:50,990 Pero es cadena de caracteres 407 00:18:50,990 --> 00:18:55,630 Bueno, si lo quieres ver así, sí 408 00:18:55,630 --> 00:18:57,589 O sea, yo me construyo mi cadena 409 00:18:57,589 --> 00:18:59,750 Con un carácter, pero me construyo 410 00:18:59,750 --> 00:19:01,890 Una cadena en realidad, y eso tiene unas implicaciones 411 00:19:01,890 --> 00:19:03,750 De almacenamiento interno distintas 412 00:19:03,750 --> 00:19:05,569 Que si solo construyes un chat 413 00:19:05,569 --> 00:19:07,750 ¿Vale? Como que habilitas 414 00:19:07,750 --> 00:19:08,910 Dinámicamente espacio, etc. 415 00:19:10,349 --> 00:19:10,789 Entonces 416 00:19:10,789 --> 00:19:12,710 Esto no lo podemos hacer 417 00:19:12,710 --> 00:19:15,410 Esto es como lo tendríamos que hacer si queremos que vaya 418 00:19:15,410 --> 00:19:16,210 Una P aquí 419 00:19:16,210 --> 00:19:21,789 ¿Vale? Entonces esto 420 00:19:21,789 --> 00:19:28,750 Y esto ya lo hemos dicho 421 00:19:28,750 --> 00:19:30,869 Todo lo que yo asigne a una variable string 422 00:19:30,869 --> 00:19:31,789 Tiene que ser string 423 00:19:31,789 --> 00:19:34,190 O bien porque sea una cadena tal cual 424 00:19:34,190 --> 00:19:35,150 Que yo he construido 425 00:19:35,150 --> 00:19:38,210 O bien porque sea otra variable que tiene string 426 00:19:38,210 --> 00:19:40,730 Pepito es un string 427 00:19:40,730 --> 00:19:42,369 Pues yo se lo puedo asignar a nombre 428 00:19:42,369 --> 00:19:43,470 Porque es un string 429 00:19:43,470 --> 00:19:46,690 Con lo cual el valor que yo saco de esa variable 430 00:19:46,690 --> 00:19:48,009 Es compatible con este 431 00:19:48,009 --> 00:19:50,309 Y en las asignaciones 432 00:19:50,309 --> 00:19:52,690 Siempre el valor de la izquierda 433 00:19:52,690 --> 00:19:54,769 Tiene que ser compatible con lo de la derecha 434 00:19:54,769 --> 00:20:01,069 Yo a nombre no le puedo asignar un char 435 00:20:01,069 --> 00:20:03,210 No va a hacer una promoción automática 436 00:20:03,210 --> 00:20:05,990 Es decir, yo aquí tengo mi char 437 00:20:05,990 --> 00:20:08,650 Carácter que es P mayúscula 438 00:20:08,650 --> 00:20:12,990 Voy a intentar asignarle a nombre ese char 439 00:20:12,990 --> 00:20:19,519 A mi variable nombre que es string 440 00:20:19,519 --> 00:20:22,900 Voy a tratar de asignarle un único carácter 441 00:20:22,900 --> 00:20:24,079 Una variable char 442 00:20:24,079 --> 00:20:26,500 carácter 443 00:20:26,500 --> 00:20:29,960 la máquina virtual me dice 444 00:20:29,960 --> 00:20:31,759 bueno, ya el compilador no me deja seguir 445 00:20:31,759 --> 00:20:33,099 me dice, no, perdona 446 00:20:33,099 --> 00:20:35,819 carácter es una variable char 447 00:20:35,819 --> 00:20:38,119 no puede ir a una variable stream 448 00:20:38,119 --> 00:20:41,119 hombre, se podría haber hecho 449 00:20:41,119 --> 00:20:43,799 esa es la filosofía de Python, que todo vale 450 00:20:43,799 --> 00:20:45,980 se podría haber hecho en Java 451 00:20:45,980 --> 00:20:49,759 a ver, haz una promoción automática de un char 452 00:20:49,759 --> 00:20:53,660 almacénalo en stream y ya pasáselo 453 00:20:53,660 --> 00:20:56,380 Pues no, no es algo que haga automáticamente 454 00:20:56,380 --> 00:20:58,720 Las cosas que hace automáticamente 455 00:20:58,720 --> 00:21:00,460 Están muy muy limitadas 456 00:21:00,460 --> 00:21:01,480 Y muy pensadas 457 00:21:01,480 --> 00:21:04,160 Para que casi en ninguna circunstancia 458 00:21:04,160 --> 00:21:05,240 Te causen errores 459 00:21:05,240 --> 00:21:08,640 Porque todo lo que él haga automáticamente 460 00:21:08,640 --> 00:21:10,480 Seguramente 461 00:21:10,480 --> 00:21:11,980 Puede ocurrir que tú 462 00:21:11,980 --> 00:21:14,680 A lo mejor no lo querías 463 00:21:14,680 --> 00:21:16,880 Hacer eso, entonces te sale error en tiempo de ejecución 464 00:21:16,880 --> 00:21:18,019 Que es el problema 465 00:21:18,019 --> 00:21:20,240 Entonces Java 466 00:21:20,240 --> 00:21:21,480 Es muy restrictivo 467 00:21:21,480 --> 00:21:24,720 para asegurarse de que lo que tú estás escribiendo 468 00:21:24,720 --> 00:21:26,779 es realmente lo que quieres hacer. 469 00:21:28,200 --> 00:21:28,640 ¿Vale? 470 00:21:28,660 --> 00:21:29,660 Y no te cambia las cosas. 471 00:21:29,880 --> 00:21:32,000 Dice, ay, asumo que querías hacer esto. 472 00:21:32,420 --> 00:21:33,299 Él no asume nada. 473 00:21:33,599 --> 00:21:35,779 Dice, no, no, tú escribe lo que quieres hacer realmente. 474 00:21:35,900 --> 00:21:36,880 Yo no voy a asumir nada. 475 00:21:37,660 --> 00:21:38,099 ¿Vale? 476 00:21:39,799 --> 00:21:41,740 Bueno, pues esto mal, entonces. 477 00:21:42,119 --> 00:21:42,339 ¿Vale? 478 00:21:46,720 --> 00:21:50,519 Si queremos, vamos, como ya estamos leyendo datos de teclado 479 00:21:50,519 --> 00:21:54,059 para poder hacer programas un poquito más interesantes 480 00:21:54,059 --> 00:21:56,380 pues podemos incorporar ya aquí 481 00:21:56,380 --> 00:21:59,180 cómo leo una cadena de texto por teclado 482 00:21:59,180 --> 00:22:01,960 sabemos leer números enteros por teclado 483 00:22:01,960 --> 00:22:03,559 con el next int 484 00:22:03,559 --> 00:22:06,819 sabemos leer números decimales por teclado 485 00:22:06,819 --> 00:22:07,900 con el next double 486 00:22:07,900 --> 00:22:10,960 pues también podemos leer cadenas por teclado 487 00:22:10,960 --> 00:22:13,900 también nos hace falta nuestro objeto famoso 488 00:22:13,900 --> 00:22:16,579 nuestro objeto escáner también nos hace falta 489 00:22:16,579 --> 00:22:20,440 pues vamos a ponérnoslo aquí arriba por ejemplo 490 00:22:20,440 --> 00:22:34,019 vale 491 00:22:34,019 --> 00:22:36,839 vamos a ponernos nuestro objeto 492 00:22:36,839 --> 00:22:37,539 famoso 493 00:22:37,539 --> 00:22:43,720 esto, si lo queréis llamar 494 00:22:43,720 --> 00:22:44,480 de otra manera 495 00:22:44,480 --> 00:22:47,500 llamadlo como queráis, esto en realidad 496 00:22:47,500 --> 00:22:49,180 aunque no sepamos muy bien lo que es 497 00:22:49,180 --> 00:22:51,140 un objeto ni este en particular 498 00:22:51,140 --> 00:22:53,680 nos suena a declaración 499 00:22:53,680 --> 00:22:55,000 de variable, porque es lo que es 500 00:22:55,000 --> 00:22:57,539 declaramos una variable de este 501 00:22:57,539 --> 00:22:58,920 tipo raro 502 00:22:58,920 --> 00:23:01,099 que desconocemos de donde ha salido 503 00:23:01,099 --> 00:23:02,099 pero es un tipo más 504 00:23:02,099 --> 00:23:05,200 y además le damos un valor a esta variable 505 00:23:05,200 --> 00:23:07,700 ¿por qué se lo damos de esta manera tan extraña? 506 00:23:08,200 --> 00:23:10,220 no sabemos todavía, pero le estamos dando un valor 507 00:23:10,220 --> 00:23:11,420 bueno, pues este 508 00:23:11,420 --> 00:23:13,819 es una variable más 509 00:23:13,819 --> 00:23:15,700 pero es una variable de tipo scanner 510 00:23:15,700 --> 00:23:17,519 igual que int n 511 00:23:17,519 --> 00:23:19,380 n es una variable de tipo int 512 00:23:19,380 --> 00:23:21,440 pues esta es una variable más 513 00:23:21,440 --> 00:23:24,099 lo que quiero decir con esto es que si no os gusta el nombre scan 514 00:23:24,099 --> 00:23:25,519 y queréis llamarlo 515 00:23:25,519 --> 00:23:26,960 mi super lector del teclado 516 00:23:26,960 --> 00:23:29,380 es un nombre de variable, elegís el que queráis 517 00:23:29,380 --> 00:23:31,420 ¿vale? el que queráis 518 00:23:31,420 --> 00:23:33,140 lo decía por eso 519 00:23:33,140 --> 00:23:34,940 bueno, pues nosotros creamos 520 00:23:34,940 --> 00:23:36,920 Nuestra variable esta 521 00:23:36,920 --> 00:23:38,640 De este tipo raro 522 00:23:38,640 --> 00:23:40,660 Que se crea 523 00:23:40,660 --> 00:23:42,579 Se le da este valor extraño 524 00:23:42,579 --> 00:23:44,039 Que no sabemos por qué se le da ese 525 00:23:44,039 --> 00:23:45,160 Ya lo entenderemos 526 00:23:45,160 --> 00:23:47,200 Y de repente nos aparece ahí 527 00:23:47,200 --> 00:23:51,019 Algo que sabe leer del teclado 528 00:23:51,019 --> 00:23:52,460 ¿Vale? 529 00:23:52,559 --> 00:23:54,859 Pues como en particular leeríamos un nombre 530 00:23:54,859 --> 00:23:56,799 Vamos a leerlo aquí 531 00:23:56,799 --> 00:23:57,599 String nombre 532 00:23:57,599 --> 00:24:00,920 Este nombre 533 00:24:00,920 --> 00:24:03,559 Vamos a darle 534 00:24:03,559 --> 00:24:06,279 El resultado de leer 535 00:24:06,279 --> 00:24:08,019 por teclado una cadena de texto 536 00:24:08,019 --> 00:24:10,359 pues scan en lugar 537 00:24:10,359 --> 00:24:12,059 de next in, next double 538 00:24:12,059 --> 00:24:13,460 como u 539 00:24:13,460 --> 00:24:20,720 pues next line 540 00:24:20,720 --> 00:24:27,180 ya está, con scan 541 00:24:27,180 --> 00:24:28,539 punto next line 542 00:24:28,539 --> 00:24:30,140 que hace el programa 543 00:24:30,140 --> 00:24:32,980 va por aquí, paso por paso 544 00:24:32,980 --> 00:24:34,480 llega aquí 545 00:24:34,480 --> 00:24:37,000 se queda aquí atascado 546 00:24:37,000 --> 00:24:39,019 y aquí se queda 547 00:24:39,019 --> 00:24:41,319 cruzado de brazos 548 00:24:41,319 --> 00:24:43,460 nuestra máquina virtual hasta el infinito 549 00:24:43,460 --> 00:24:45,700 hasta que alguien decida 550 00:24:45,700 --> 00:24:47,460 que va al teclado a escribir algo 551 00:24:47,460 --> 00:24:50,039 cuando alguien por fin ha decidido 552 00:24:50,039 --> 00:24:51,460 que va al teclado a escribir algo 553 00:24:51,460 --> 00:24:54,180 ya la máquina virtual despierta 554 00:24:54,180 --> 00:24:56,259 de aquí, que estaba aquí parada durmiendo 555 00:24:56,259 --> 00:24:57,240 despierta 556 00:24:57,240 --> 00:24:59,579 coge esa cadena de texto 557 00:24:59,579 --> 00:25:01,279 que haya escrito el usuario 558 00:25:01,279 --> 00:25:03,619 y se la guarda aquí 559 00:25:03,619 --> 00:25:05,200 ¿vale? 560 00:25:07,359 --> 00:25:09,819 exactamente igual que hacían NextIn y NextAble 561 00:25:09,819 --> 00:25:11,819 también se quedaban ahí cruzados de brazos 562 00:25:11,819 --> 00:25:13,539 esperando que alguien escriba 563 00:25:13,539 --> 00:25:14,640 en el teclado 564 00:25:14,640 --> 00:25:17,660 cuando alguien escribía un número 565 00:25:17,660 --> 00:25:20,400 esto despertaba de su ensueño 566 00:25:20,400 --> 00:25:22,339 cogía ese numerito y lo guardaba en la variable 567 00:25:22,339 --> 00:25:23,140 pues aquí igual 568 00:25:23,140 --> 00:25:30,319 entonces vamos a 569 00:25:30,319 --> 00:25:32,720 saludar 570 00:25:32,720 --> 00:25:36,619 vale, ahora 571 00:25:36,619 --> 00:25:39,400 vamos a incorporar desde ya que es fácil 572 00:25:39,400 --> 00:25:41,359 y que luego cuando veamos 573 00:25:41,359 --> 00:25:43,299 los operadores ya lo vamos a entender rápido 574 00:25:43,299 --> 00:25:44,819 para que 575 00:25:44,819 --> 00:25:47,819 para confirmarlo 576 00:25:47,819 --> 00:25:50,539 el system.out.println 577 00:25:50,539 --> 00:25:52,019 lo hemos estado usando 578 00:25:52,019 --> 00:25:54,400 para mostrar o bien texto 579 00:25:54,400 --> 00:25:56,039 directamente por consola 580 00:25:56,039 --> 00:25:57,559 poniéndolo entre comillas 581 00:25:57,559 --> 00:26:00,759 o bien una variable, le pasábamos una variable 582 00:26:00,759 --> 00:26:02,880 sin más y el system out 583 00:26:02,880 --> 00:26:04,440 cogía el contenido de la variable 584 00:26:04,440 --> 00:26:05,900 y lo mostraba 585 00:26:05,900 --> 00:26:08,740 vale, pero podemos hacer que el system out 586 00:26:08,740 --> 00:26:09,920 me muestre 587 00:26:09,920 --> 00:26:11,980 las dos cosas 588 00:26:11,980 --> 00:26:14,599 un texto y además el contenido 589 00:26:14,599 --> 00:26:16,819 de una variable, porque aquí a mi me gustaría 590 00:26:16,819 --> 00:26:18,200 mostrar hola coma 591 00:26:18,200 --> 00:26:20,180 y el nombre que fuera aquí 592 00:26:20,180 --> 00:26:22,380 entonces en este system out 593 00:26:22,380 --> 00:26:23,259 bueno, podría 594 00:26:23,259 --> 00:26:26,640 no hacerlo así 595 00:26:26,640 --> 00:26:27,819 no combinarlo 596 00:26:27,819 --> 00:26:29,640 y hacerlo de esta manera 597 00:26:29,640 --> 00:26:32,660 hola y aquí poner nombre 598 00:26:32,660 --> 00:26:35,119 con dos system out 599 00:26:35,119 --> 00:26:36,079 ¿vale? 600 00:26:37,700 --> 00:26:39,059 entonces este programa 601 00:26:39,059 --> 00:26:40,579 me pide el nombre y luego me dice 602 00:26:40,579 --> 00:26:41,839 hola, no sé quién 603 00:26:41,839 --> 00:26:44,420 y ya está, luego sigue haciendo cosas 604 00:26:44,420 --> 00:26:45,660 ¿no? 605 00:26:46,339 --> 00:26:48,220 vamos a comprobarlo 606 00:26:48,220 --> 00:26:57,670 hola Lara 607 00:26:57,670 --> 00:26:59,670 y luego ya el resto de cosas que le hemos puesto 608 00:26:59,670 --> 00:27:01,069 de que mostrar, asignar 609 00:27:01,069 --> 00:27:05,390 pero el system out 610 00:27:05,390 --> 00:27:06,869 podemos hacer, pero eso 611 00:27:06,869 --> 00:27:08,789 ahora que vamos a repasar los operadores 612 00:27:08,789 --> 00:27:11,890 pues mediante el operador de concatenación 613 00:27:11,890 --> 00:27:13,490 podemos hacer que 614 00:27:13,490 --> 00:27:15,190 en una sola llamada 615 00:27:15,190 --> 00:27:16,609 el system out me concatene 616 00:27:16,609 --> 00:27:18,990 tanto esto como esto 617 00:27:18,990 --> 00:27:21,190 pero bueno, como vamos a ver a los operadores 618 00:27:21,190 --> 00:27:23,230 vamos a esperar 619 00:27:23,230 --> 00:27:24,930 a ver el operador de concatenación y ya está 620 00:27:24,930 --> 00:27:27,509 bueno, el tipo string 621 00:27:27,509 --> 00:27:29,150 ¿vale? 622 00:27:29,390 --> 00:27:30,289 el tipo string 623 00:27:30,289 --> 00:27:33,549 lo podemos usar así como cualquier otro 624 00:27:33,549 --> 00:27:34,269 tipo de dato 625 00:27:34,269 --> 00:27:37,609 asignándole cadenas 626 00:27:37,609 --> 00:27:39,309 de texto, mostrándolas 627 00:27:39,309 --> 00:27:41,430 y poco más, podemos usarlo así 628 00:27:41,430 --> 00:27:43,369 pero el tipo string, como dije 629 00:27:43,369 --> 00:27:45,369 ya 630 00:27:45,369 --> 00:27:48,029 el miércoles 631 00:27:48,029 --> 00:27:49,609 tiene una particularidad 632 00:27:50,210 --> 00:27:51,650 y es que 633 00:27:51,650 --> 00:27:52,430 es un tipo 634 00:27:52,430 --> 00:27:54,069 objeto 635 00:27:54,069 --> 00:27:56,910 no es primitivo 636 00:27:56,910 --> 00:27:58,430 como los ocho anteriores 637 00:27:58,430 --> 00:28:00,650 y la particularidad 638 00:28:00,650 --> 00:28:02,569 de un tipo objeto es que es una especie 639 00:28:02,569 --> 00:28:03,990 de dato 640 00:28:03,990 --> 00:28:06,569 que tiene muchas cosas primitivas 641 00:28:06,569 --> 00:28:08,789 dentro, este en particular 642 00:28:08,789 --> 00:28:09,910 no es fácil entender 643 00:28:09,910 --> 00:28:11,950 que tiene dentro, pues mucho chat 644 00:28:11,950 --> 00:28:14,269 tiene un chat, tiene un chat 645 00:28:14,269 --> 00:28:15,230 tiene un chat, muchos 646 00:28:15,230 --> 00:28:18,250 eso es lo que tiene dentro 647 00:28:18,250 --> 00:28:20,670 y eso le convierte en tipo 648 00:28:20,670 --> 00:28:22,450 objeto, el tener muchos primitivos 649 00:28:22,450 --> 00:28:22,849 dentro 650 00:28:22,849 --> 00:28:26,319 entonces 651 00:28:26,319 --> 00:28:28,720 el tipo de dato objeto afortunadamente 652 00:28:28,720 --> 00:28:30,759 ya está construido, no lo tenemos que construir 653 00:28:30,759 --> 00:28:32,599 nosotros, lo podemos usar siempre que queramos 654 00:28:32,599 --> 00:28:36,380 ¿qué más particularidades 655 00:28:36,380 --> 00:28:38,400 tiene una variable 656 00:28:38,400 --> 00:28:40,000 que es de tipo objeto? 657 00:28:40,980 --> 00:28:42,400 pues tiene algo 658 00:28:42,400 --> 00:28:44,480 estupendo 659 00:28:44,480 --> 00:28:46,079 que no tienen las variables 660 00:28:46,079 --> 00:28:47,480 de datos primitivas 661 00:28:47,480 --> 00:28:50,200 como las variables int, float 662 00:28:50,200 --> 00:28:52,240 tiene algo que no tiene las variables de datos primitivas 663 00:28:52,240 --> 00:28:54,319 y es que además de 664 00:28:54,319 --> 00:28:55,299 tener un valor dentro 665 00:28:55,299 --> 00:28:58,500 como este que tiene su valor, Pepito, Juanito 666 00:28:58,500 --> 00:28:59,660 el que sea, además de tenerlo 667 00:28:59,660 --> 00:29:01,960 son capaces de lanzar código 668 00:29:01,960 --> 00:29:03,960 ¿vale? 669 00:29:04,039 --> 00:29:06,460 entonces una variable de tipo objeto 670 00:29:06,460 --> 00:29:08,539 es capaz de llamar 671 00:29:08,539 --> 00:29:09,940 a funciones que hagan cosas 672 00:29:09,940 --> 00:29:12,500 una variable primitiva, no una variable 673 00:29:12,500 --> 00:29:14,420 primitiva, solamente vale 674 00:29:14,420 --> 00:29:16,619 para tener un valor dentro guardadito 675 00:29:16,619 --> 00:29:18,579 y cuando alguien 676 00:29:18,579 --> 00:29:20,660 lo usa para asignarlo a otra 677 00:29:20,660 --> 00:29:22,339 pues lo ofrece, lo entrega 678 00:29:22,339 --> 00:29:24,759 y se asigna, pues una variable objeto 679 00:29:24,759 --> 00:29:26,059 además de eso 680 00:29:26,059 --> 00:29:28,720 es capaz de llamar 681 00:29:28,720 --> 00:29:30,660 a funciones para que hagan cosas 682 00:29:30,660 --> 00:29:31,980 con su propio dato 683 00:29:31,980 --> 00:29:33,519 con su propio dato 684 00:29:33,519 --> 00:29:36,880 esta es la base de la operación de entorno de objetos 685 00:29:36,880 --> 00:29:38,960 que ya entenderemos un poco más adelante 686 00:29:38,960 --> 00:29:40,640 pero que ahora mismo 687 00:29:40,640 --> 00:29:42,380 podemos simplemente 688 00:29:42,380 --> 00:29:44,859 incorporar dos, tres 689 00:29:44,859 --> 00:29:46,799 cositas a las que puede 690 00:29:46,799 --> 00:29:49,019 llamar una variable string 691 00:29:49,019 --> 00:29:50,519 porque esas dos, tres cositas 692 00:29:50,519 --> 00:29:52,900 a las que va a poder llamar no son muy útiles 693 00:29:52,900 --> 00:29:54,740 para poder hacer cosas desde ya 694 00:29:54,740 --> 00:29:59,079 entonces vamos a 695 00:29:59,079 --> 00:30:01,859 ponerlo aquí y ya está 696 00:30:01,859 --> 00:30:03,640 y luego ya revisamos los operadores 697 00:30:03,640 --> 00:30:05,000 entonces 698 00:30:05,000 --> 00:30:11,309 las variables string entonces por tanto 699 00:30:11,309 --> 00:30:15,779 por ser objeto 700 00:30:15,779 --> 00:30:18,500 y no primitivas 701 00:30:18,500 --> 00:30:27,210 pueden además 702 00:30:27,210 --> 00:30:29,470 de tener almacenado un valor 703 00:30:29,470 --> 00:30:31,029 que eso es para 704 00:30:31,029 --> 00:30:33,230 lo que vale una variable esencialmente 705 00:30:33,230 --> 00:30:34,269 para tener un valor dentro 706 00:30:34,269 --> 00:30:42,440 Además de para guardar un valor 707 00:30:42,440 --> 00:30:44,019 Que es para lo que valen las variables 708 00:30:44,019 --> 00:30:48,329 Pues además de para esto 709 00:30:48,329 --> 00:30:49,670 Valen 710 00:30:49,670 --> 00:30:56,230 Pueden, perdón, además de para 711 00:30:56,230 --> 00:30:57,049 Guardar 712 00:30:57,049 --> 00:30:59,650 Joder, qué mal 713 00:30:59,650 --> 00:31:01,789 Qué mal expresado 714 00:31:01,789 --> 00:31:09,750 Pues además de eso valen para 715 00:31:09,750 --> 00:31:11,670 Llamar 716 00:31:11,670 --> 00:31:13,049 A funciones 717 00:31:13,049 --> 00:31:15,950 Que hagan cosas 718 00:31:15,950 --> 00:31:20,730 Con ese valor que tienen guardado dentro 719 00:31:20,730 --> 00:31:28,450 Además valen para eso 720 00:31:28,450 --> 00:31:32,029 yo como soy variable objeto, variable string 721 00:31:32,029 --> 00:31:34,529 valgo como caja que guarda un valor 722 00:31:34,529 --> 00:31:37,430 y además soy capaz 723 00:31:37,430 --> 00:31:40,269 de llamar a funciones, de tener un comportamiento 724 00:31:40,269 --> 00:31:43,289 que se llama para hacer cosas con ese valor que tengo dentro 725 00:31:43,289 --> 00:31:46,390 además valgo para eso porque soy un objeto 726 00:31:46,390 --> 00:31:48,910 es decir, los objetos tienen datos 727 00:31:48,910 --> 00:31:51,970 y los objetos además pueden hacer cosas 728 00:31:51,970 --> 00:31:55,329 esa es la diferencia entre una variable objeto 729 00:31:55,329 --> 00:31:56,589 y una variable primitiva 730 00:31:56,589 --> 00:31:58,789 las variables primitivas 731 00:31:58,789 --> 00:32:00,230 solamente valen 732 00:32:00,230 --> 00:32:01,869 para tener un dato dentro 733 00:32:01,869 --> 00:32:02,809 se acabó 734 00:32:02,809 --> 00:32:05,609 si alguien quiere luego ya 735 00:32:05,609 --> 00:32:07,950 usarlas en una expresión matemática 736 00:32:07,950 --> 00:32:08,509 las usa 737 00:32:08,509 --> 00:32:11,269 pero solo valen para tener un dato dentro 738 00:32:11,269 --> 00:32:14,410 las variables objeto valen para tener un dato dentro 739 00:32:14,410 --> 00:32:16,549 y además para llamar 740 00:32:16,549 --> 00:32:18,250 a 741 00:32:18,250 --> 00:32:20,250 código, a funciones 742 00:32:20,250 --> 00:32:22,170 lo que llamaremos método más adelante 743 00:32:22,170 --> 00:32:24,369 que hacen cosas con ese valor 744 00:32:24,369 --> 00:32:26,329 que tengo dentro y eso es muy útil 745 00:32:26,329 --> 00:32:28,670 por ejemplo 746 00:32:28,670 --> 00:32:32,289 esta variable string nombre 747 00:32:32,289 --> 00:32:34,970 esta variable string nombre 748 00:32:34,970 --> 00:32:38,690 podemos mostrar su valor 749 00:32:38,690 --> 00:32:39,670 ya lo hemos mostrado 750 00:32:39,670 --> 00:32:42,509 pero a lo mejor a lo mejor a mí también me interesa 751 00:32:42,509 --> 00:32:43,009 ver 752 00:32:43,009 --> 00:32:45,329 cuál es su longitud 753 00:32:45,329 --> 00:32:47,130 cuántos caracteres tiene 754 00:32:47,130 --> 00:32:49,730 bueno pues eso ya es hacer algo 755 00:32:49,730 --> 00:32:52,970 contar la cantidad de caracteres 756 00:32:52,970 --> 00:32:54,690 que tiene un string ya es hacer algo 757 00:32:54,690 --> 00:32:56,930 entonces podría yo hacerlo 758 00:32:56,930 --> 00:32:59,029 por programa si es que sé hacerlo 759 00:32:59,029 --> 00:33:04,349 y o digo, anda, nombre es una variable objeto. 760 00:33:05,289 --> 00:33:09,170 Además, puede hacer cosas con el dato que tiene dentro. 761 00:33:10,309 --> 00:33:12,549 Una de esas cosas, por casualidad, 762 00:33:12,710 --> 00:33:14,589 será contar los caracteres que tiene, 763 00:33:15,369 --> 00:33:17,990 porque si una de esas fuera eso, qué suerte, 764 00:33:18,750 --> 00:33:21,809 llamo a esa función y ya tengo eso que yo quería hacer. 765 00:33:22,450 --> 00:33:25,990 Bueno, pues efectivamente, las variables string, 766 00:33:26,730 --> 00:33:28,650 entre todas las cosas que pueden hacer, 767 00:33:28,650 --> 00:33:30,970 que son muchas, hay una que es 768 00:33:30,970 --> 00:33:32,930 contar los caracteres que tengo 769 00:33:32,930 --> 00:33:34,589 dentro y entregártelos 770 00:33:34,589 --> 00:33:35,369 como resultado 771 00:33:35,369 --> 00:33:38,970 vale, pues como hacemos para que una variable 772 00:33:38,970 --> 00:33:40,609 objeto llame 773 00:33:40,609 --> 00:33:42,869 a las funciones 774 00:33:42,869 --> 00:33:44,250 que puede invocar 775 00:33:44,250 --> 00:33:46,750 porque cada variable objeto puede invocar un montón de 776 00:33:46,750 --> 00:33:48,569 funciones propias suyas 777 00:33:48,569 --> 00:33:50,089 para hacer cosas con lo que tiene dentro 778 00:33:50,089 --> 00:33:52,670 pues esto es parte de la aplicación 779 00:33:52,670 --> 00:33:54,890 de entrada de objetos, pero ahora mismo podemos ponerlo 780 00:33:54,890 --> 00:33:55,509 para que 781 00:33:55,509 --> 00:33:57,950 para usar las funciones básicas 782 00:33:57,950 --> 00:33:59,950 pues si en una variable objeto 783 00:33:59,950 --> 00:34:01,809 se pone un punto 784 00:34:01,809 --> 00:34:07,400 automáticamente después de poner el punto 785 00:34:07,400 --> 00:34:09,340 ya podemos poner 786 00:34:09,340 --> 00:34:10,780 un nombrecito 787 00:34:10,780 --> 00:34:12,599 que es la llamada 788 00:34:12,599 --> 00:34:15,300 a ese código que a mi me interesa ejecutar 789 00:34:15,300 --> 00:34:17,260 claro 790 00:34:17,260 --> 00:34:19,480 el nombre de ese código 791 00:34:19,480 --> 00:34:20,679 que a mi me interesa ejecutar 792 00:34:20,679 --> 00:34:22,579 lo tengo que saber 793 00:34:22,579 --> 00:34:24,019 tengo que saberlo 794 00:34:24,019 --> 00:34:26,980 no me lo puedo inventar 795 00:34:26,980 --> 00:34:29,300 bueno pues el que hizo 796 00:34:29,300 --> 00:34:31,739 el tipo de dato string 797 00:34:31,739 --> 00:34:33,219 decidió 798 00:34:33,219 --> 00:34:35,059 la cantidad de cosas 799 00:34:35,059 --> 00:34:37,079 a las que podía llamar la variable 800 00:34:37,079 --> 00:34:38,820 y le puso un nombre a cada una 801 00:34:38,820 --> 00:34:40,460 pues yo lo tengo que averiguar 802 00:34:40,460 --> 00:34:43,079 me tendré que ir a la documentación de Java 803 00:34:43,079 --> 00:34:44,800 de Oracle, a ver, oye 804 00:34:44,800 --> 00:34:46,960 ¿a qué cosas puede llamar una variable string? 805 00:34:47,099 --> 00:34:48,539 lo tengo que averiguar 806 00:34:48,539 --> 00:34:50,860 ah, mira, puede llamar a esto 807 00:34:50,860 --> 00:34:52,219 que se llama longitud 808 00:34:52,219 --> 00:34:54,539 que me calcula la longitud de la cadena 809 00:34:54,539 --> 00:34:56,340 ah, puede llamar a esto 810 00:34:56,340 --> 00:34:58,579 que se llama 811 00:34:58,579 --> 00:35:00,440 vaciar que me 812 00:35:00,440 --> 00:35:02,519 hace que el string se quede vacío 813 00:35:02,519 --> 00:35:04,739 fíjate, puede llamar a todas estas cosas 814 00:35:04,739 --> 00:35:06,300 con este nombre que me hacen esto 815 00:35:06,300 --> 00:35:08,880 todo eso lo habrá 816 00:35:08,880 --> 00:35:10,860 programado el que hizo ese tipo de string 817 00:35:10,860 --> 00:35:13,300 y estará en la documentación 818 00:35:13,300 --> 00:35:14,679 pues me tendré que ir a buscarlo 819 00:35:14,679 --> 00:35:15,500 a ver que puede hacer 820 00:35:15,500 --> 00:35:18,739 pero bueno, afortunadamente, gracias a que 821 00:35:18,739 --> 00:35:20,179 tenemos un entorno de desarrollo 822 00:35:20,179 --> 00:35:23,440 no tenemos que irnos a la documentación 823 00:35:23,440 --> 00:35:24,440 cada vez que usamos 824 00:35:24,440 --> 00:35:26,719 una variable objeto para ver 825 00:35:26,719 --> 00:35:28,659 qué cosas puede hacer, porque 826 00:35:28,659 --> 00:35:30,400 gracias a que tenemos un entorno de desarrollo 827 00:35:30,400 --> 00:35:33,139 que tiene incorporadas 828 00:35:33,139 --> 00:35:34,000 ayuditas, 829 00:35:34,900 --> 00:35:36,599 pues cualquier entorno de desarrollo 830 00:35:36,599 --> 00:35:38,559 cuando tú pones un punto 831 00:35:38,559 --> 00:35:40,619 él ya automáticamente se va 832 00:35:40,619 --> 00:35:42,619 a la documentación, a la aguja, a todo y te muestra 833 00:35:42,619 --> 00:35:44,519 aquí un listado de todas 834 00:35:44,519 --> 00:35:46,579 las cosas que puede hacer 835 00:35:46,579 --> 00:35:48,599 esa variable por el hecho de ser 836 00:35:48,599 --> 00:35:50,699 objeto, todas las que puede hacer 837 00:35:50,699 --> 00:35:52,840 con su 838 00:35:52,840 --> 00:35:54,659 nombrecito, pues uno 839 00:35:54,659 --> 00:35:56,480 las mira y en cada una de ellas 840 00:35:56,480 --> 00:35:58,780 además le especifica 841 00:35:58,780 --> 00:35:59,559 lo que hace eso. 842 00:36:01,039 --> 00:36:02,039 Nosotros estamos buscando 843 00:36:02,039 --> 00:36:04,420 una, ahora en particular, 844 00:36:05,019 --> 00:36:06,659 que me cuente cuántos 845 00:36:06,659 --> 00:36:08,300 caracteres tiene ese nombre 846 00:36:08,300 --> 00:36:09,900 y que me lo devuelva 847 00:36:09,900 --> 00:36:12,440 como resultado. Pues, hombre, 848 00:36:12,519 --> 00:36:14,500 yo puedo navegar por aquí hasta que encuentre una. 849 00:36:16,739 --> 00:36:17,619 Hasta que encuentre una. 850 00:36:17,719 --> 00:36:19,940 Lo normal, el que programó ese 851 00:36:19,940 --> 00:36:22,119 objeto stream, si lo hizo 852 00:36:22,119 --> 00:36:23,199 bien y fue listo, 853 00:36:24,099 --> 00:36:25,599 pues a los nombrecitos 854 00:36:25,599 --> 00:36:26,860 de esas funciones 855 00:36:26,860 --> 00:36:28,679 les dio nombrecitos lo más 856 00:36:28,679 --> 00:36:30,679 explicativo posible, porque si no es 857 00:36:30,679 --> 00:36:32,739 un rollo. Entonces, si yo 858 00:36:32,739 --> 00:36:34,519 quiero ver si hay 859 00:36:34,519 --> 00:36:36,039 alguna funcionalidad 860 00:36:36,039 --> 00:36:38,599 para algo relacionado con la longitud, pues tendré 861 00:36:38,599 --> 00:36:40,139 que buscar algún método 862 00:36:40,139 --> 00:36:42,599 que tenga dentro 863 00:36:42,599 --> 00:36:44,119 el término lens, que menos, ¿no? 864 00:36:45,099 --> 00:36:46,800 Entonces, uno va buscando por aquí 865 00:36:46,800 --> 00:36:48,679 a ver si hay alguno, le suena 866 00:36:48,679 --> 00:36:50,119 y 867 00:36:50,119 --> 00:36:52,440 papapá, llega 868 00:36:52,440 --> 00:36:53,179 a 869 00:36:53,179 --> 00:36:55,400 lens. 870 00:36:55,400 --> 00:36:57,260 Anda, qué suerte 871 00:36:57,260 --> 00:37:00,739 Hay una funcionalidad 872 00:37:00,739 --> 00:37:04,260 Que oficialmente se llama método 873 00:37:04,260 --> 00:37:06,340 Podemos llamarlo método desde ahora 874 00:37:06,340 --> 00:37:07,659 Y así adelantamos trabajo 875 00:37:07,659 --> 00:37:10,659 Hay un método de esta variable string 876 00:37:10,659 --> 00:37:12,360 Que se llama led 877 00:37:12,360 --> 00:37:14,300 Que si yo miro lo que hace 878 00:37:14,300 --> 00:37:17,099 Te devuelve la longitud del string 879 00:37:17,099 --> 00:37:18,579 Uy, justo lo que yo quería 880 00:37:18,579 --> 00:37:19,480 Qué suerte 881 00:37:19,480 --> 00:37:22,159 ¿Vale? Me devuelve la longitud del string 882 00:37:22,159 --> 00:37:23,380 Justo lo que yo quería 883 00:37:23,380 --> 00:37:25,019 Dime 884 00:37:25,019 --> 00:37:27,360 El LEN 885 00:37:27,360 --> 00:37:28,960 Bueno, no, habrá 886 00:37:28,960 --> 00:37:30,699 Muchas otras tipos de datos 887 00:37:30,699 --> 00:37:33,019 Que tendrán su propio método LEN que hará otras cosas 888 00:37:33,019 --> 00:37:34,400 Ah, vale, pero el LEN es 889 00:37:34,400 --> 00:37:36,780 No, no, no, el LEN no 890 00:37:36,780 --> 00:37:38,239 O sea, el LEN 891 00:37:38,239 --> 00:37:40,280 Que este método se llame LEN 892 00:37:40,280 --> 00:37:42,659 No significa que ese nombre ya esté prohibido 893 00:37:42,659 --> 00:37:44,800 Para cualquier otro tipo de dato objeto 894 00:37:44,800 --> 00:37:45,420 No 895 00:37:45,420 --> 00:37:48,280 Yo me puedo inventar un tipo de dato objeto 896 00:37:48,280 --> 00:37:49,340 Pues 897 00:37:49,340 --> 00:37:51,940 Usuario, me lo invento 898 00:37:51,940 --> 00:37:54,800 Y dentro de ese mismo tipo de dato objeto 899 00:37:54,800 --> 00:37:57,460 pues meto un string 900 00:37:57,460 --> 00:37:59,059 un int para la edad 901 00:37:59,059 --> 00:38:01,360 todo lo que yo quiera, me consigo un objeto primitivo 902 00:38:01,360 --> 00:38:03,239 y ahora le voy a programar 903 00:38:03,239 --> 00:38:04,579 yo funcionalidades 904 00:38:04,579 --> 00:38:07,039 puedo programarle una que se llame led 905 00:38:07,039 --> 00:38:07,840 si me da la gana 906 00:38:07,840 --> 00:38:10,599 y esa led que sea a lo mejor 907 00:38:10,599 --> 00:38:13,039 el tamaño de su 908 00:38:13,039 --> 00:38:14,559 apellido, lo que sea 909 00:38:14,559 --> 00:38:15,460 es decir 910 00:38:15,460 --> 00:38:19,039 que tenga string un método que se llama 911 00:38:19,039 --> 00:38:21,159 led, no significa que otros tipos de datos 912 00:38:21,159 --> 00:38:22,980 no puedan tener otro que se llame led, claro que sí 913 00:38:22,980 --> 00:38:28,739 No, no, no. Esto que pone después de los dos puntos 914 00:38:28,739 --> 00:38:32,179 es el tipo de dato del resultado que te entrega. 915 00:38:32,900 --> 00:38:36,699 Entonces, length es para contar. Luego te entrega 916 00:38:36,699 --> 00:38:40,380 un entero. Claro. Entonces, la ayuda que te da el eclipse 917 00:38:40,380 --> 00:38:43,119 efectivamente te dice 918 00:38:43,119 --> 00:38:45,800 te dice 919 00:38:45,800 --> 00:38:51,079 qué tienes que llamar para hacer lo que quieres hacer. 920 00:38:51,079 --> 00:38:56,760 y luego te dice qué tipo de dato te va a entregar en respuesta. 921 00:38:57,780 --> 00:38:58,260 ¿Vale? 922 00:38:58,719 --> 00:39:01,619 Bueno, pues este en particular me va a entregar un numerito, 923 00:39:01,880 --> 00:39:02,739 por eso me pone int. 924 00:39:03,159 --> 00:39:03,460 ¿Vale? 925 00:39:04,739 --> 00:39:06,500 Y así hay un montón de métodos, 926 00:39:06,559 --> 00:39:08,179 pero ahora mismo nos falta un montón de información 927 00:39:08,179 --> 00:39:11,440 para entender todo esto que ponías aquí del stream, 928 00:39:11,559 --> 00:39:14,099 del no sé qué, del void, de bla, bla, bla, de object. 929 00:39:14,619 --> 00:39:17,340 Pero alguno básico de stream ya sí que podemos usar. 930 00:39:17,340 --> 00:39:20,559 Entonces, hemos dicho 931 00:39:20,559 --> 00:39:22,219 Qué suerte que he encontrado 932 00:39:22,219 --> 00:39:23,900 Que mi variable objeto nombre 933 00:39:23,900 --> 00:39:26,800 Puede llamar a una funcionalidad 934 00:39:26,800 --> 00:39:28,900 También llamada método 935 00:39:28,900 --> 00:39:30,019 Que hace lo que yo quiero 936 00:39:30,019 --> 00:39:32,159 Pues ya está, ahí la tengo 937 00:39:32,159 --> 00:39:36,280 Claro, me devuelve esto 938 00:39:36,280 --> 00:39:39,539 Me devuelve un numerito 939 00:39:39,539 --> 00:39:43,079 Ese numerito, ¿para qué lo usaré? 940 00:39:43,400 --> 00:39:46,260 Para asignárselo a una variable numerito 941 00:39:46,260 --> 00:39:50,159 claro, por ejemplo 942 00:39:50,159 --> 00:39:55,690 esta 943 00:39:55,690 --> 00:39:57,869 vale 944 00:39:57,869 --> 00:40:00,050 pues entonces 945 00:40:00,050 --> 00:40:03,150 esta variable string 946 00:40:03,150 --> 00:40:04,710 por ser objeto 947 00:40:04,710 --> 00:40:07,250 ha podido llamar con este operador 948 00:40:07,250 --> 00:40:09,150 punto a una 949 00:40:09,150 --> 00:40:10,269 funcionalidad 950 00:40:10,269 --> 00:40:13,090 que sirve porque alguien 951 00:40:13,090 --> 00:40:14,070 la programó así 952 00:40:14,070 --> 00:40:16,949 sirve para 953 00:40:16,949 --> 00:40:18,150 devolverme 954 00:40:18,150 --> 00:40:21,170 el número de caracteres de este 955 00:40:21,170 --> 00:40:23,309 string, de este string que está aquí 956 00:40:23,309 --> 00:40:24,570 de este que está aquí 957 00:40:24,570 --> 00:40:27,840 eso que me devuelve 958 00:40:27,840 --> 00:40:30,420 lo normal es que yo lo use 959 00:40:30,420 --> 00:40:32,340 para asignárselo a alguien 960 00:40:32,340 --> 00:40:33,440 en una sentencia de asignación 961 00:40:33,440 --> 00:40:37,059 vale, pues aquí solo asigno el número de caracteres 962 00:40:37,059 --> 00:40:40,360 entonces aquí podría poner, pues por ejemplo 963 00:40:40,360 --> 00:40:43,570 tu nombre 964 00:40:43,570 --> 00:40:58,139 tiene esto 965 00:40:58,139 --> 00:41:06,440 caracteres 966 00:41:06,440 --> 00:41:24,559 vale, entonces si 967 00:41:24,559 --> 00:41:30,070 ejecutar, entonces 968 00:41:30,070 --> 00:41:32,070 esto de llamar 969 00:41:32,070 --> 00:41:34,570 a una funcionalidad 970 00:41:34,570 --> 00:41:36,469 que te va a hacer un código 971 00:41:36,469 --> 00:41:38,389 con el dato que hay aquí dentro 972 00:41:38,389 --> 00:41:40,510 y te va a devolver un valor 973 00:41:40,510 --> 00:41:42,289 estas cosas solo 974 00:41:42,289 --> 00:41:44,110 la pueden hacer las variables que sean 975 00:41:44,110 --> 00:41:46,070 objeto, y string 976 00:41:46,070 --> 00:41:48,369 es la primera variable objeto con la que estamos trabajando 977 00:41:48,369 --> 00:41:52,050 pero sin saberlo, ya lo hemos hecho 978 00:41:52,050 --> 00:41:53,869 otras veces, con el scan 979 00:41:53,869 --> 00:41:56,289 fijaos que hemos hecho con el scan 980 00:41:56,289 --> 00:41:59,349 El scan es una variable más nuestra 981 00:41:59,349 --> 00:42:01,469 Pero es una variable objeto 982 00:42:01,469 --> 00:42:02,170 No es primitiva 983 00:42:02,170 --> 00:42:04,730 Sería primitiva si fuera indavel 984 00:42:04,730 --> 00:42:05,610 Lo que fuera su objeto 985 00:42:05,610 --> 00:42:08,449 ¿Y cómo hemos hecho para leer un número? 986 00:42:09,090 --> 00:42:10,809 Hemos hecho scan. 987 00:42:12,510 --> 00:42:13,929 La llamada a algo 988 00:42:13,929 --> 00:42:15,889 Pues ya habíamos hecho algo antes 989 00:42:15,889 --> 00:42:18,010 Lo de hacer que un objeto 990 00:42:18,010 --> 00:42:20,630 Llame a un método que desencadee una acción 991 00:42:20,630 --> 00:42:22,269 Ya lo habíamos hecho aquí 992 00:42:22,269 --> 00:42:24,530 Mi objeto es selector 993 00:42:24,530 --> 00:42:26,449 que yo había creado arriba 994 00:42:26,449 --> 00:42:28,570 mi objeto lector llama 995 00:42:28,570 --> 00:42:29,889 a esto 996 00:42:29,889 --> 00:42:31,989 y esto que hace por dentro 997 00:42:31,989 --> 00:42:34,190 un montón de cosas, se va el teclado 998 00:42:34,190 --> 00:42:36,230 mira lo que hay en el buffer, lo coge 999 00:42:36,230 --> 00:42:38,070 y te lo entrega 1000 00:42:38,070 --> 00:42:39,809 y se lo estamos asignando 1001 00:42:39,809 --> 00:42:41,369 lo que te ha entregado a esto 1002 00:42:41,369 --> 00:42:46,289 luego en realidad ya estamos usando 1003 00:42:46,289 --> 00:42:47,829 dos variables objeto 1004 00:42:47,829 --> 00:42:50,530 aún sin entender muy bien que es una variable objeto 1005 00:42:50,530 --> 00:42:52,769 esta variable scan 1006 00:42:52,769 --> 00:42:55,130 que es de tipo 1007 00:42:55,130 --> 00:42:57,170 Scanner, que es un tipo objeto 1008 00:42:57,170 --> 00:43:00,610 y por el hecho de ser tipo objeto 1009 00:43:00,610 --> 00:43:03,590 ha sido capaz de llamar 1010 00:43:03,590 --> 00:43:06,449 a funcionalidades para hacer cosas 1011 00:43:06,449 --> 00:43:08,369 está muy sofisticada de hecho 1012 00:43:08,369 --> 00:43:11,130 porque está implicada y se ha teclado el RFT 1013 00:43:11,130 --> 00:43:13,829 pero también lo estamos haciendo con String 1014 00:43:13,829 --> 00:43:15,449 String es una variable objeto 1015 00:43:15,449 --> 00:43:19,630 y aquí hemos podido llamar 1016 00:43:19,630 --> 00:43:21,610 a esta funcionalidad 1017 00:43:21,610 --> 00:43:24,650 que en particular me ha contado 1018 00:43:24,650 --> 00:43:26,170 cuantos caracteres tiene este 1019 00:43:26,170 --> 00:43:28,949 una variable primitiva 1020 00:43:28,949 --> 00:43:30,690 como esta 1021 00:43:30,690 --> 00:43:31,369 por ejemplo 1022 00:43:31,369 --> 00:43:34,730 nunca jamás podría 1023 00:43:34,730 --> 00:43:36,630 llamar a nada, no un punto 1024 00:43:36,630 --> 00:43:38,650 es que Eclipse 1025 00:43:38,650 --> 00:43:41,010 no me ofrece nada después de hacer no un punto 1026 00:43:41,010 --> 00:43:43,010 porque una variable 1027 00:43:43,010 --> 00:43:44,750 primitiva no puede llamar 1028 00:43:44,750 --> 00:43:46,030 a ninguna funcionalidad 1029 00:43:46,030 --> 00:43:48,429 una variable primitiva solamente vale 1030 00:43:48,429 --> 00:43:50,349 para tener un valor dentro almacenado 1031 00:43:50,349 --> 00:43:52,349 y para que luego 1032 00:43:52,349 --> 00:43:54,570 otra sentencia la use en una expresión 1033 00:43:54,570 --> 00:43:56,349 pero no vale para llamar 1034 00:43:56,349 --> 00:43:58,289 a nada, las variables 1035 00:43:58,289 --> 00:43:59,070 objetos sí 1036 00:43:59,070 --> 00:44:01,309 ¿vale? 1037 00:44:04,139 --> 00:44:06,079 venga, pues vamos a parar aquí un momentito 1038 00:44:06,079 --> 00:44:08,380 bueno y ahora