1 00:00:00,370 --> 00:00:06,710 Voy a grabar esta clase, por lo tanto, si me decís algo es porque autorizáis a grabar vuestra voz. 2 00:00:06,910 --> 00:00:09,169 Hoy vamos a hablar de los arrays. 3 00:00:11,390 --> 00:00:13,009 ¿Qué es un array en Java? 4 00:00:13,349 --> 00:00:19,210 O un array en general, en programación estructurada, en otros lenguajes es más o menos lo mismo. 5 00:00:19,629 --> 00:00:23,550 Es una estructura de datos que nos permite almacenar un conjunto de datos de un mismo tipo. 6 00:00:23,550 --> 00:00:41,090 Si una variable es un trocito de memoria, un cajón, donde nosotros podemos guardar un determinado valor y este trozo de memoria tiene un tipo y un nombre, el array es una extensión de esta cosa. 7 00:00:41,570 --> 00:00:51,850 Es siempre un espacio de memoria donde puedo almacenar valores de un determinado tipo, pero no un valor solo, sino varios valores. 8 00:00:51,850 --> 00:01:00,509 Es, si la variable es un cajón, pues esta es una cajonera, donde pero pongo en cada cajón los mismos tipos de valores, ¿vale? 9 00:01:00,729 --> 00:01:10,629 Declaro un valor, enteros, pues en cada celda de este array, en cada posición de este array, podré guardar enteros. 10 00:01:10,629 --> 00:01:20,329 Si la variable que tiene tipo int se llama x, tiene dentro un valor 11 00:01:20,329 --> 00:01:25,129 Un array tendrá siempre un tipo, tendrá siempre un nombre 12 00:01:25,129 --> 00:01:30,269 Pero en vez de una posición, tiene varias posiciones 13 00:01:30,269 --> 00:01:36,329 Entonces yo podré guardar siempre enteros y solo enteros 14 00:01:36,329 --> 00:01:37,769 Porque esto es un array de enteros 15 00:01:37,769 --> 00:01:44,349 ¿Y cómo accedo? Cada una de estas posiciones tendrá asignado un índice. 16 00:01:46,069 --> 00:01:54,689 Entonces, yo, por ejemplo, para acceder a esta celda de aquí, usaré AR de 3. 17 00:01:59,180 --> 00:02:04,019 Esto es VTR, pero AR no es una variable sola, es toda esta estructura de aquí. 18 00:02:04,560 --> 00:02:10,340 Entonces, puedo acceder a la celda 0, 1, 2, 3 de AR, accederé a la celda 3. 19 00:02:10,340 --> 00:02:14,680 Y le puedo decir que, por ejemplo, aquí dentro ponme el valor 5 20 00:02:14,680 --> 00:02:19,680 Entonces lo que hará es irse aquí y poner dentro el 5 21 00:02:19,680 --> 00:02:25,689 Se ha ido mal, luego se parece a un 50 22 00:02:25,689 --> 00:02:29,990 Pondrá aquí dentro el 5 23 00:02:29,990 --> 00:02:41,409 Y luego podré hacer que, por ejemplo, int x es igual a 24 00:02:41,409 --> 00:02:43,770 Arr de 3 25 00:02:43,770 --> 00:02:46,330 Más 2 26 00:02:46,330 --> 00:02:49,610 Entonces 27 00:02:49,610 --> 00:02:52,210 En x 28 00:02:52,210 --> 00:02:53,409 Pondré 29 00:02:53,409 --> 00:02:56,780 Esto vale x 30 00:02:56,780 --> 00:03:04,409 Arr de 3 31 00:03:04,409 --> 00:03:05,629 Vale 5 32 00:03:05,629 --> 00:03:07,990 Más 2, 7 33 00:03:07,990 --> 00:03:09,389 Y lo guardo dentro de x 34 00:03:09,389 --> 00:03:10,750 Por ejemplo 35 00:03:10,750 --> 00:03:15,009 Entonces es una extensión de lo que es una variable 36 00:03:15,009 --> 00:03:17,069 La variable puede contener un solo valor 37 00:03:17,069 --> 00:03:19,729 Mientras un array puede contener una colección de valores 38 00:03:19,729 --> 00:03:24,050 Pero siempre de un solo tipo y que se accede a él a través de un nombre 39 00:03:24,050 --> 00:03:30,729 Solo que como tiene varias celdas será un nombre y luego el índice de la celda a la que quiera acceder 40 00:03:30,729 --> 00:03:31,930 Este es un array 41 00:03:31,930 --> 00:03:33,069 Dudas 42 00:03:33,069 --> 00:03:42,270 El tamaño de los arrays, es decir, cuántas posiciones puede tener el array 43 00:03:42,270 --> 00:03:47,490 Se declara en un primer momento y no puede cambiar en tiempo de ejecución 44 00:03:47,490 --> 00:03:51,509 Es decir, que cuando yo creo un array le diré, quiero un array de 10 posiciones 45 00:03:51,509 --> 00:03:57,189 posiciones. Pues este array tiene 10 posiciones. No se puede ni hacer más grande ni hacer 46 00:03:57,189 --> 00:04:04,330 más pequeño. Si yo tengo 10 posiciones y me dan 11 números, tengo estrategias para 47 00:04:04,330 --> 00:04:10,509 poder almacenar 11 números. Pero no en ese array. Tendré que tirar ese array, crear 48 00:04:10,509 --> 00:04:15,169 un array más grande, copiar los datos que tenía antes y ahora tengo un array más grande. 49 00:04:15,169 --> 00:04:17,930 Pero un array una vez creado de un cierto tamaño 50 00:04:17,930 --> 00:04:22,449 Pues no se puede cambiar el tamaño que tiene 51 00:04:22,449 --> 00:04:24,050 Es una estructura estática 52 00:04:24,050 --> 00:04:26,970 Yo lo puedo hacer a tiempo de ejecución 53 00:04:26,970 --> 00:04:28,550 Es decir, puedo decirle al usuario 54 00:04:28,550 --> 00:04:30,410 Dame el tamaño del array 55 00:04:30,410 --> 00:04:31,529 Tú le dices 50 56 00:04:31,529 --> 00:04:33,850 Y yo me creo un array de 50 posiciones 57 00:04:33,850 --> 00:04:34,769 Lo puedes hacer 58 00:04:34,769 --> 00:04:37,790 Y a la siguiente ejecución me dice 3 59 00:04:37,790 --> 00:04:39,730 Pues yo crearé un array de 3 posiciones 60 00:04:39,730 --> 00:04:41,769 Pero una vez que he creado ese array 61 00:04:41,769 --> 00:04:43,149 Pues es de ese tamaño 62 00:04:43,149 --> 00:04:47,569 Y me guardará allí dentro tantos valores como las posiciones que yo he creado. 63 00:04:50,189 --> 00:04:51,709 ¿Cómo se declara un array? 64 00:04:52,670 --> 00:05:02,110 Como antes habíamos visto declaraciones de variables, veamos las declaraciones de array. 65 00:05:02,569 --> 00:05:10,850 Es un tipo, corchetes y el nombre del array, punto y coma. 66 00:05:10,850 --> 00:05:17,810 Por ejemplo, int corchetes miArray de int será un array de int grande cuanto, no lo sé, ¿vale? 67 00:05:18,610 --> 00:05:24,569 String corchetes miArray de string será un array que tiene dentro objetos string, ¿vale? 68 00:05:24,709 --> 00:05:31,610 Esto es como cuando nosotros hacemos int x punto y coma, sin inicializarlo, ¿vale? 69 00:05:32,110 --> 00:05:37,290 Es, declaro que existirá este señor, pero todavía no existe. 70 00:05:37,290 --> 00:05:43,269 Será una referencia a una zona de memoria que por ahora está vacía 71 00:05:43,269 --> 00:05:46,569 A la espera de que cree un array 72 00:05:46,569 --> 00:05:50,629 En realidad, por debajo, en Java un array es un objeto 73 00:05:50,629 --> 00:05:53,250 Pero nosotros no sabemos qué es, por lo tanto no 74 00:05:53,250 --> 00:05:57,769 Lo utilizaremos sin saber qué son los objetos, al menos para este trimestre 75 00:05:57,769 --> 00:05:59,889 ¿Cómo se inicializa? 76 00:06:00,009 --> 00:06:02,589 Es decir, una vez que yo lo he declarado y tengo mi array de int 77 00:06:02,589 --> 00:06:03,310 ¿Qué hago? 78 00:06:03,310 --> 00:06:12,449 Pues el nombre de array es igual a new, tipo, corchete, tamaño, corchete, punto y coma 79 00:06:12,449 --> 00:06:19,649 Por ejemplo, mi array de int, que era un array de enteros, es igual a new, int, porque es un array de int 80 00:06:19,649 --> 00:06:22,230 Corchetes 20, corchetes, punto y coma 81 00:06:22,230 --> 00:06:28,649 Estoy creando una estructura que puede contener dentro 20 distintos enteros 82 00:06:28,649 --> 00:06:31,110 ¿Cómo se llama esta estructura? Mi array de int 83 00:06:31,110 --> 00:06:32,730 ¿Vale? Ese es su nombre 84 00:06:32,730 --> 00:06:42,129 Y tendrá dentro celdas numeradas desde el 0 hasta el 19, 20 celdas, ¿sí? 85 00:06:43,050 --> 00:06:43,629 ¿Dudas? 86 00:06:44,949 --> 00:06:47,370 Vale, ¿cómo creo un array de string? 87 00:06:47,610 --> 00:06:52,750 Pues mi array de string es igual a new string corchetes 15 corchetes punto y coma. 88 00:06:53,069 --> 00:06:57,550 Estoy creando una estructura de 15 strings, ¿vale? 89 00:06:58,629 --> 00:07:02,970 O sea, numeradas desde el 0 hasta el 14, ¿sí? 90 00:07:04,110 --> 00:07:06,769 ¿Veis este new? ¿Dónde lo hemos visto nosotros el new? 91 00:07:07,850 --> 00:07:09,629 Con Scanner, y era un objeto 92 00:07:09,629 --> 00:07:13,529 Cuando está del medio del new, estamos hablando de objetos 93 00:07:13,529 --> 00:07:15,810 Pero como nosotros todavía los objetos no los tenemos 94 00:07:15,810 --> 00:07:19,949 En principio, el array no es una cosa propia de los objetos 95 00:07:19,949 --> 00:07:24,670 Es una cosa que se puede utilizar también en programación estructurada 96 00:07:24,670 --> 00:07:30,329 En Java, pero está implementado como un objeto y se declara así 97 00:07:30,329 --> 00:07:33,790 Aquí ya, como nos metemos en Java, en nuestro lenguaje 98 00:07:33,790 --> 00:07:34,949 Pues aprendemos esto 99 00:07:34,949 --> 00:07:40,410 Claramente se puede hacer estas dos cosas en uno 100 00:07:40,410 --> 00:07:45,529 Es decir, que puede hacer int corchetes mi array de int igual a new int de 20 101 00:07:45,529 --> 00:07:48,509 Sin hacerlo en dos pasos 102 00:07:48,509 --> 00:07:51,430 Asignación de valores a sus celdas 103 00:07:51,430 --> 00:07:58,689 Pues nombre de array, corchetes, número de la celda, corchetes es igual a valor 104 00:07:58,689 --> 00:08:02,589 Por ejemplo, mi array de int de 0 es igual a 16 105 00:08:02,589 --> 00:08:06,029 Mi array de int de 19 es igual a menos 2 106 00:08:06,029 --> 00:08:08,790 Entonces lo que está diciendo es 107 00:08:08,790 --> 00:08:10,250 Vete a la estructura mi array de int 108 00:08:10,250 --> 00:08:13,490 Accede a la posición con número 19 109 00:08:13,490 --> 00:08:16,269 Y en esa celda de allí me pones un menos 2 110 00:08:16,269 --> 00:08:19,910 Aquí será lo mismo 111 00:08:19,910 --> 00:08:23,589 Pero con string 112 00:08:23,589 --> 00:08:27,470 Existe una forma de crear directamente 113 00:08:27,470 --> 00:08:28,970 Un array de un cierto tamaño 114 00:08:28,970 --> 00:08:29,889 Que es esta de aquí 115 00:08:29,889 --> 00:08:31,730 donde digo int 116 00:08:31,730 --> 00:08:34,289 corchetes, mi array de int es igual 117 00:08:34,289 --> 00:08:35,870 y luego entre llaves 118 00:08:35,870 --> 00:08:38,570 le pongo los valores separados por coma 119 00:08:38,570 --> 00:08:40,549 esto me creará un array 120 00:08:40,549 --> 00:08:42,870 de tres celdas 121 00:08:42,870 --> 00:08:44,509 que contienen 122 00:08:44,509 --> 00:08:45,570 solo tipo int 123 00:08:45,570 --> 00:08:48,210 la celda 0 contendrá 1 124 00:08:48,210 --> 00:08:50,269 la celda 1 menos 2 125 00:08:50,269 --> 00:08:52,429 la celda 2 126 00:08:52,429 --> 00:08:54,250 perdón, un 3 127 00:08:54,250 --> 00:08:57,120 dudas 128 00:08:57,120 --> 00:08:59,600 se entiende esta sintaxis 129 00:08:59,600 --> 00:09:03,639 Esto habrá que probarlo y probarlo y probarlo hasta que esto funcione 130 00:09:03,639 --> 00:09:05,980 Variables índices 131 00:09:05,980 --> 00:09:16,840 Una de las ventajas de los arrays es que puede acceder a cada celda, a cada compartimento, a cada sección interior del array 132 00:09:16,840 --> 00:09:19,159 Utilizando un número entero, o sea un int 133 00:09:19,159 --> 00:09:26,769 Hemos dicho que las celdas van numeradas, 0, 1, 2, 3, 4, 5 134 00:09:26,769 --> 00:09:27,990 Y esto es un entero 135 00:09:27,990 --> 00:09:33,570 entonces puedo utilizar una variable int para acceder a esta cosa 136 00:09:33,570 --> 00:09:37,190 si esta variable aquí le puedo sumar 1 y acceder a la siguiente celda 137 00:09:37,190 --> 00:09:41,669 le puedo restar 1 y acceder a la celda anterior y cosas por el estilo 138 00:09:41,669 --> 00:09:45,590 y esto me permite manejar de forma reciente fácil los arrays 139 00:09:45,590 --> 00:09:49,990 si este número no es un literal, a de 1 es igual a 10 140 00:09:49,990 --> 00:09:53,330 sino variable, a de i es igual a 10 141 00:09:53,330 --> 00:10:00,750 Podremos cambiar el valor de i según necesitamos, creando potentes algoritmos de búsqueda, ordenación o recorrido de la red. 142 00:10:01,429 --> 00:10:06,950 Entonces, si os fijáis, en vez de a acceder a la posición 1, pues digo a acceder a la posición i. 143 00:10:07,710 --> 00:10:15,350 Él irá a mirar la posición i cuánto vale, y si vale 3 accederá a la posición 3, y si vale 7 accederá a la posición 7. 144 00:10:15,350 --> 00:10:18,330 todo esto que estamos diciendo 145 00:10:18,330 --> 00:10:19,889 acceder y acceder con la variable 146 00:10:19,889 --> 00:10:22,610 con que creéis 147 00:10:22,610 --> 00:10:23,769 que combina 148 00:10:23,769 --> 00:10:25,070 perfectamente 149 00:10:25,070 --> 00:10:27,049 con el for 150 00:10:27,049 --> 00:10:29,669 nosotros cuando hacemos un for 151 00:10:29,669 --> 00:10:31,950 tenemos normalmente una variable 152 00:10:31,950 --> 00:10:34,470 un índice, un i que va de 0 153 00:10:34,470 --> 00:10:36,090 a cierto valor 154 00:10:36,090 --> 00:10:37,289 pongamos a 19 155 00:10:37,289 --> 00:10:40,070 en el caso de nuestro array de 20 156 00:10:40,070 --> 00:10:42,470 y entonces tendré un for que por cada 157 00:10:42,470 --> 00:10:44,389 ciclo del for tendré una variable 158 00:10:44,389 --> 00:10:50,309 Que me apunta el primer ciclo a la primera celda, el segundo ciclo a la segunda celda, el tercer ciclo a la tercera celda 159 00:10:50,309 --> 00:10:53,990 Y me podrá hacer un recorrido de todos los valores del array 160 00:10:53,990 --> 00:10:57,730 Entonces for y array van de la manita 161 00:10:57,730 --> 00:11:03,990 Son muy amigos y muchas veces que veis un array por algún lado aparece un for 162 00:11:03,990 --> 00:11:11,149 Se pueden definir los valores del array con un scanner 163 00:11:11,149 --> 00:11:17,570 Claramente tú aquí pones mi array de int de 0 es igual a scan.nexit 164 00:11:17,570 --> 00:11:23,340 Lo pones en un for o en un while 165 00:11:23,340 --> 00:11:26,620 Pones miArray de int de i 166 00:11:26,620 --> 00:11:28,840 Es igual a scan.nextInt 167 00:11:28,840 --> 00:11:30,759 Entonces por cada ciclo del for 168 00:11:30,759 --> 00:11:33,460 La primera vez te guardará lo que lees en el 0 169 00:11:33,460 --> 00:11:34,519 La segunda vez en el 1 170 00:11:34,519 --> 00:11:35,600 La tercera vez en el 2 171 00:11:35,600 --> 00:11:37,460 Lo veremos 172 00:11:37,460 --> 00:11:38,360 ¿Sí? 173 00:11:38,820 --> 00:11:39,759 Pero sí se puede hacer 174 00:11:39,759 --> 00:11:42,659 Ejemplo, ¿vale? 175 00:11:42,980 --> 00:11:44,279 Entonces vamos a ver este ejemplito 176 00:11:44,279 --> 00:11:46,539 Tenemos la public class 2 177 00:11:46,539 --> 00:11:47,820 ¿Por qué se llama 2? No tengo idea 178 00:11:47,820 --> 00:11:50,039 Main, ¿vale? 179 00:11:50,039 --> 00:11:51,940 Y aquí creo un array de que 180 00:11:51,940 --> 00:11:52,659 Que es esto 181 00:11:52,659 --> 00:11:55,299 Un array de string 182 00:11:55,299 --> 00:11:57,480 Esto se llama Dias 183 00:11:57,480 --> 00:12:00,720 Es decir que estoy creando una estructura 184 00:12:00,720 --> 00:12:09,980 Estoy creando una estructura 185 00:12:09,980 --> 00:12:11,320 Que se llama Dias 186 00:12:11,320 --> 00:12:14,679 Que tiene 187 00:12:14,679 --> 00:12:19,159 Uno, dos, tres, cuatro 188 00:12:19,159 --> 00:12:21,440 Cinco, seis, siete 189 00:12:21,440 --> 00:12:23,179 Celdas 190 00:12:23,179 --> 00:12:24,899 Son siete, tres, seis, uno, siete 191 00:12:24,899 --> 00:12:27,279 Vale, y en cada una de estas 192 00:12:27,279 --> 00:12:39,529 celda estaré poniendo aquí lunes, aquí martes, aquí miércoles, etcétera, etcétera, 193 00:12:39,529 --> 00:12:49,019 etcétera, ¿vale? Como string, porque el tipo de esta cosa son string, ¿sí? Por ejemplo, 194 00:12:49,139 --> 00:12:54,559 luego puedo decir que el primer día de la semana es días de cero, accedo a la primera 195 00:12:54,559 --> 00:13:02,100 la posición y entonces es lunes. ¿Sí? Y el último es días de seis. Accedo a la posición 196 00:13:02,100 --> 00:13:09,500 seis. Cero, uno, dos, tres, cuatro, cinco, seis. Y entonces esto pondrá domingo. Y uno 197 00:13:09,500 --> 00:13:17,009 en el medio es días de la posición tres. Cero, uno, dos, tres. Es que era jueves. ¿Se 198 00:13:17,009 --> 00:13:22,559 ¿Entiende? ¿Dudas? ¿No? ¿No? 199 00:13:23,659 --> 00:13:24,019 Sigo. 200 00:13:26,059 --> 00:13:27,820 R-index out of bounds. 201 00:13:28,299 --> 00:13:29,580 Vuestro peor enemigo. 202 00:13:29,879 --> 00:13:32,559 El que saldrá mil veces por cada ejercicio. 203 00:13:32,840 --> 00:13:32,940 ¿Vale? 204 00:13:33,200 --> 00:13:34,379 Esta es una excepción. 205 00:13:34,659 --> 00:13:35,860 Es una explosión. 206 00:13:36,179 --> 00:13:36,360 ¿Vale? 207 00:13:36,840 --> 00:13:39,899 Es cuando intentas hacer algo que no debería ser 208 00:13:39,899 --> 00:13:44,899 y Java lanza un error, lanza una excepción, lanza un... 209 00:13:45,480 --> 00:13:46,519 Oye, aquí hay un problema. 210 00:13:46,519 --> 00:13:51,679 Aprenderemos en un futuro una forma de recoger este problema 211 00:13:51,679 --> 00:13:55,399 Y decir, en vez de terminar y acabar el programa 212 00:13:55,399 --> 00:13:58,120 Intenta recuperarte, ¿vale? 213 00:13:58,120 --> 00:13:59,879 Cuando veremos las gestiones de excepciones 214 00:13:59,879 --> 00:14:02,200 Por ahora, simplemente las lanzamos 215 00:14:02,200 --> 00:14:03,820 Y si se lanza, muere, ¿vale? 216 00:14:04,200 --> 00:14:05,059 ¿Qué pasa? 217 00:14:05,139 --> 00:14:07,879 Que si yo intento, veis que aquí he quitado uno, ¿no? 218 00:14:07,919 --> 00:14:10,759 Lunes, martes, miércoles, jueves, viernes, sábado, falta domingo 219 00:14:10,759 --> 00:14:13,360 Y lanzo el mismo programa que antes 220 00:14:13,360 --> 00:14:16,179 Cuando acedo al día de seis 221 00:14:16,179 --> 00:14:18,639 Ahora no hay 6 222 00:14:18,639 --> 00:14:22,500 Porque hay 0, 1, 2, 3, 4 y 5 223 00:14:22,500 --> 00:14:25,000 La posición 6 no existe 224 00:14:25,000 --> 00:14:28,759 Entonces me voy fuera de los límites 225 00:14:28,759 --> 00:14:30,159 Out of bounds 226 00:14:30,159 --> 00:14:33,600 Y cuando intenta acceder al 6 227 00:14:33,600 --> 00:14:38,179 Me dice aquí en qué sitio pasa 228 00:14:38,179 --> 00:14:41,299 Si clico aquí me marcará esta línea de aquí 229 00:14:41,299 --> 00:14:45,000 Porque dice que cuando intenta acceder a la posición 6 230 00:14:45,000 --> 00:14:47,019 Pues no la encuentro 231 00:14:47,019 --> 00:14:47,840 Porque soy fuera 232 00:14:47,840 --> 00:14:50,799 Es una excepción de índice 233 00:14:50,799 --> 00:14:52,000 Fuera de los límites 234 00:14:52,000 --> 00:14:53,500 Los límites son de 0 a 5 235 00:14:53,500 --> 00:14:58,240 Entonces lo mismo me pasaría 236 00:14:58,240 --> 00:15:00,539 Si yo intentara acceder a días de menos 1 237 00:15:00,539 --> 00:15:02,379 Me diría, estás por fuera 238 00:15:02,379 --> 00:15:03,960 Porque el límite mínimo es 0 239 00:15:03,960 --> 00:15:05,340 ¿Dudas? 240 00:15:08,750 --> 00:15:09,730 La primera es siempre 0 241 00:15:09,730 --> 00:15:14,620 Existe un atributo 242 00:15:14,620 --> 00:15:16,539 Que se llama length 243 00:15:16,539 --> 00:15:19,620 Que nos dice el número de elementos 244 00:15:19,620 --> 00:15:21,259 Que posee el array 245 00:15:21,259 --> 00:15:25,240 Cuidado, no es el mismo length de string 246 00:15:25,240 --> 00:15:31,860 En string, yo hago mi string.length paréntesis 247 00:15:31,860 --> 00:15:33,379 Porque es un método 248 00:15:33,379 --> 00:15:36,860 Es una función del objeto string 249 00:15:36,860 --> 00:15:40,700 Que me devuelve, me cuenta cuantos elementos hay ahí dentro 250 00:15:40,700 --> 00:15:43,980 En los array no es un método 251 00:15:43,980 --> 00:15:47,059 Va sin las paréntesis, lo veis aquí 252 00:15:47,059 --> 00:15:49,960 Es un atributo, ¿qué es un atributo? Lo veremos 253 00:15:49,960 --> 00:15:56,399 Es una variable, es una variable asociada con este array, ¿vale? 254 00:15:56,399 --> 00:15:59,919 Donde está escrita allí dentro cuántas celdas tiene, ¿vale? 255 00:16:00,299 --> 00:16:07,460 Recordaos que en un array como esto mediría 6, la length es 6 porque tiene 6 elementos, 256 00:16:07,919 --> 00:16:12,759 pero así la length es 6, va desde la posición 0 hasta la posición 5. 257 00:16:13,139 --> 00:16:16,799 Nunca hay la posición length, ¿sí? 258 00:16:16,799 --> 00:16:20,279 Los arrays van de 0 a length-1 259 00:16:20,279 --> 00:16:27,250 ¿Cuál es la length de este array? 260 00:16:28,929 --> 00:16:30,629 ¿Cuánto es la length de este array? 261 00:16:31,389 --> 00:16:32,830 No, no, 6 262 00:16:32,830 --> 00:16:35,750 ¿Y cuál es la última posición? 263 00:16:37,879 --> 00:16:39,679 5, o sea, length-1 264 00:16:39,679 --> 00:16:52,409 El array cuando tú lo creas 265 00:16:52,409 --> 00:16:54,710 Le estás diciendo su tamaño 266 00:16:54,710 --> 00:16:56,350 Se lo estás diciendo aquí 267 00:16:56,350 --> 00:16:59,970 Y este es su tamaño 268 00:16:59,970 --> 00:17:01,789 Que luego esté vacío o no esté vacío 269 00:17:01,789 --> 00:17:03,490 haya gatos dentro, me da igual 270 00:17:03,490 --> 00:17:04,849 esto es 15 271 00:17:04,849 --> 00:17:10,329 ¿sí? eso es 272 00:17:10,329 --> 00:17:12,089 efectivamente, en este caso 273 00:17:12,089 --> 00:17:13,250 aquí, me devuelve 274 00:17:13,250 --> 00:17:17,289 3, porque hay 3 elementos 275 00:17:17,289 --> 00:17:18,990 ¿sí? 276 00:17:23,170 --> 00:17:24,650 entonces, aquí viene 277 00:17:24,650 --> 00:17:26,630 la clave que tenemos nosotros, ¿vale? 278 00:17:27,170 --> 00:17:28,509 tengo char de array 279 00:17:28,509 --> 00:17:30,589 es un array, ¿vale? array es igual a 280 00:17:30,589 --> 00:17:32,549 new char de 10, estoy creando 281 00:17:32,549 --> 00:17:34,730 un array de 10 posiciones 282 00:17:34,730 --> 00:17:36,630 y luego viene mi amigo el for 283 00:17:36,630 --> 00:17:39,609 que me permite ir desde i igual a 0 284 00:17:39,609 --> 00:17:43,269 a i menor que array.length menor estrecho 285 00:17:43,269 --> 00:17:45,329 entonces esto llegará hasta 286 00:17:45,329 --> 00:17:47,069 array.length menos 1 287 00:17:47,069 --> 00:17:51,869 porque cuando i será igual a array.length 288 00:17:51,869 --> 00:17:53,170 esto será falso 289 00:17:53,170 --> 00:17:57,150 haciendo is más más y lo que hago es 290 00:17:57,150 --> 00:18:00,690 imprimir cada una de las celdas 291 00:18:00,690 --> 00:18:01,410 de esta array 292 00:18:01,410 --> 00:18:05,670 o rellenarla o recorrerla o hacer algo con ella 293 00:18:05,670 --> 00:18:08,029 Ya veremos, depende del algoritmo que yo hago 294 00:18:08,029 --> 00:18:14,289 Pero este trocito de aquí es como puedo recorrer un array 295 00:18:14,289 --> 00:18:16,170 ¿Lo veis? 296 00:18:17,289 --> 00:18:19,009 Esto dará varias veces 297 00:18:19,009 --> 00:18:23,950 En el primer ciclo valdrá 0 y por lo tanto mirará array de 0 298 00:18:23,950 --> 00:18:26,089 Vuelve aquí, va a 1 299 00:18:26,089 --> 00:18:28,890 Entonces mirará array de 1 300 00:18:28,890 --> 00:18:33,029 Vuelve aquí, array 2, array 3, array 4, array 5, array 6 301 00:18:33,029 --> 00:18:35,089 Hasta que llegue a array 9 302 00:18:35,089 --> 00:18:37,990 Array 9 entra y mira la última posición 303 00:18:37,990 --> 00:18:40,329 Porque de 10 posiciones irá de 0 a 9 304 00:18:40,329 --> 00:18:42,490 Vuelve aquí, ahora vale 10 305 00:18:42,490 --> 00:18:44,529 10 no es menor que 10 306 00:18:44,529 --> 00:18:47,450 Y por lo tanto saldrá 307 00:18:47,450 --> 00:18:49,109 Cuidado que si pongo menor o igual 308 00:18:49,109 --> 00:18:54,359 Me dará 309 00:18:54,359 --> 00:18:56,259 Array out of bound exception 310 00:18:56,259 --> 00:18:57,160 2.10 311 00:18:57,160 --> 00:19:04,420 Ahí está recorriendo un array 312 00:19:04,420 --> 00:19:07,940 Tengo mi array de lunes, martes, miércoles, jueves y viernes 313 00:19:07,940 --> 00:19:10,099 For int i es igual a 0 314 00:19:10,099 --> 00:19:13,240 Y menor que 10.length y más más 315 00:19:13,240 --> 00:19:14,839 Un poquito lo podía hacer, ¿no? 316 00:19:15,740 --> 00:19:16,740 Allí, ¿se ve? 317 00:19:17,980 --> 00:19:23,819 Pues, x es igual a y más 1, creo que es, ¿qué es esto? 318 00:19:25,539 --> 00:19:33,579 Y si está en puntual, te diré, el día x, que es y más 1, es días de y. 319 00:19:34,019 --> 00:19:37,880 Esto lo hago para no decir que el día 0 es lunes, ¿vale? 320 00:19:37,880 --> 00:19:40,880 Para que ponga día 1 es lunes 321 00:19:40,880 --> 00:19:42,400 Día 2 es martes 322 00:19:42,400 --> 00:19:44,380 Día 3 y es lo que me sale aquí 323 00:19:44,380 --> 00:19:46,039 Día 1 es lunes 324 00:19:46,039 --> 00:19:47,259 Día 2 es martes 325 00:19:47,259 --> 00:19:48,519 Día 3 es miércoles 326 00:19:48,519 --> 00:19:51,900 Entonces estoy recorriendo este array 327 00:19:51,900 --> 00:19:54,359 En cada ciclo del for 328 00:19:54,359 --> 00:19:57,500 Estoy leyendo una celda distinta del array 329 00:19:57,500 --> 00:20:04,900 Dudas, preguntas 330 00:20:04,900 --> 00:20:12,930 Ahora, existe 331 00:20:12,930 --> 00:20:15,170 Esto de recorrer un array 332 00:20:15,170 --> 00:20:18,329 De ir desde el principio hasta el final 333 00:20:18,329 --> 00:20:20,690 de un array leyendo todas sus celdas 334 00:20:20,690 --> 00:20:24,670 es tan común en programación 335 00:20:24,670 --> 00:20:27,349 tan utilizado, que han creado 336 00:20:27,349 --> 00:20:29,390 una estructura for 337 00:20:29,390 --> 00:20:33,789 más específica para hacer este tipo de actividades 338 00:20:33,789 --> 00:20:35,049 lo que se llama el forEach 339 00:20:35,049 --> 00:20:40,029 en otros lenguajes lo encontráis justo como forEach 340 00:20:40,029 --> 00:20:42,529 en Java 341 00:20:42,529 --> 00:20:44,269 es esta cosa aquí 342 00:20:44,269 --> 00:20:51,160 Nums es una raíz de enteros. 343 00:20:51,900 --> 00:21:06,640 Si yo hago for int y dos puntos nums, esto quiere decir que por cada ciclo de esto, y valdrá una de las posiciones de nums. 344 00:21:06,640 --> 00:21:15,859 En la primera vuelta valdrá 100, en la segunda vuelta y valdrá 200, en la tercera vuelta y valdrá 300. 345 00:21:16,279 --> 00:21:26,420 Es como si hiciera aquí una vuelta por cada posición de la rey y en cada vuelta valdrá el valor de una de las posiciones. 346 00:21:26,819 --> 00:21:33,859 Y haré aquí dentro algo con Y, que la primera vez me valdrá 100, la segunda vez me valdrá 200, la tercera vez me valdrá 300. 347 00:21:34,359 --> 00:21:39,019 Puedo esto no usarlo nunca en la vida y usaré esto. 348 00:21:39,019 --> 00:21:48,299 Es lo mismo, simplemente que aquí en vez de utilizar Y, o debería hacer aquí intY, es igual a días, o en este caso que es a nums de Y. 349 00:21:49,359 --> 00:21:50,339 Y ya está, es lo mismo. 350 00:21:50,700 --> 00:22:00,140 Solo que como es una cosa tan común de utilizar, en vez de utilizar aquí dentro, cuando uso el valor siempre nums de Y, nums de Y, nums de Y, 351 00:22:00,460 --> 00:22:03,279 pues lo que hago es me lo guardo en una variable y uso esa variable. 352 00:22:04,339 --> 00:22:06,579 Ahora hacemos ejemplos y vemos cómo podemos cambiar. 353 00:22:06,579 --> 00:22:17,809 no, el nombre de la variable que tú quieras 354 00:22:17,809 --> 00:22:22,940 efectivamente, me ahorro de saltarme el B 355 00:22:22,940 --> 00:22:27,200 si yo quiero, por ejemplo, si mi ejemplo me dice 356 00:22:27,200 --> 00:22:32,440 busca el tercer elemento 357 00:22:32,440 --> 00:22:34,640 o que se yo, busca los primeros tres elementos 358 00:22:34,640 --> 00:22:36,160 a lo mejor esto no me vale 359 00:22:36,160 --> 00:22:40,680 a mi esto me vale si tengo que hacer algo 360 00:22:40,680 --> 00:22:43,000 en todos los elementos de un array 361 00:22:43,000 --> 00:22:44,779 Porque esta cosa de aquí 362 00:22:44,779 --> 00:22:47,440 Me funcionará para todos los elementos de la array 363 00:22:47,440 --> 00:22:48,160 ¿Sí? 364 00:22:48,460 --> 00:22:50,579 Luego puedo poner breaks y salir a mitad 365 00:22:50,579 --> 00:22:51,880 Si quiero, ¿vale? 366 00:22:52,000 --> 00:22:53,839 Pero técnicamente esto está pensado 367 00:22:53,839 --> 00:22:55,660 Si yo quiero hacer una operación 368 00:22:55,660 --> 00:22:58,380 Pillando primero la primera celda 369 00:22:58,380 --> 00:22:59,660 Luego la segunda, luego la tercera 370 00:22:59,660 --> 00:23:02,019 Y que la quiero hacer para absolutamente todas 371 00:23:02,019 --> 00:23:02,680 ¿Vale? 372 00:23:03,000 --> 00:23:05,259 Entonces uso este for de aquí, el for each 373 00:23:05,259 --> 00:23:08,720 Si en vez no estoy seguro que tenga que mirarla a todas 374 00:23:08,720 --> 00:23:10,000 O no lo tengo que hacer para todas 375 00:23:10,000 --> 00:23:11,980 Pues entonces casi uso un for 376 00:23:11,980 --> 00:23:18,869 Escribir el contenido de un array 377 00:23:18,869 --> 00:23:23,150 Existe esto, pero esto de aquí 378 00:23:23,150 --> 00:23:25,490 Lo podéis usar solo en casos 379 00:23:25,490 --> 00:23:27,049 Extraordinarios 380 00:23:27,049 --> 00:23:28,950 Si vosotros hacéis 381 00:23:28,950 --> 00:23:30,910 Arrays.toString 382 00:23:30,910 --> 00:23:33,289 Y le metéis entre paréntesis un array 383 00:23:33,289 --> 00:23:35,609 Esto os devuelve un string 384 00:23:35,609 --> 00:23:37,549 Que es la representación 385 00:23:37,549 --> 00:23:39,309 De lo que contiene 386 00:23:39,309 --> 00:23:41,789 El array, es decir, esta cosa aquí 387 00:23:41,789 --> 00:23:42,109 ¿Veis? 388 00:23:42,549 --> 00:23:44,289 Lunes, martes, miércoles, jueves, viernes 389 00:23:44,289 --> 00:23:50,289 Pero yo esto lo quiero que lo utilicéis 390 00:23:50,289 --> 00:23:53,349 Al menos por ahora, en un futuro lo utilizáis como os da la gana 391 00:23:53,349 --> 00:23:56,970 Pero por ahora esto sirve como comodín 392 00:23:56,970 --> 00:24:01,950 Acabo el ejercicio, quiero ver que dentro esté la cosa que he puesto 393 00:24:01,950 --> 00:24:04,450 Quiero ver el array, pues uso esta de aquí rápidamente 394 00:24:04,450 --> 00:24:08,069 Pero si el ejercicio os dice, escribeme el contenido de un array 395 00:24:08,069 --> 00:24:10,670 Es para que vosotros aprendáis a utilizar el for 396 00:24:10,670 --> 00:24:12,750 No porque aprendáis a utilizar esto 397 00:24:12,750 --> 00:24:16,230 entonces me podéis utilizar esto 398 00:24:16,230 --> 00:24:17,750 para ver el contenido 399 00:24:17,750 --> 00:24:20,470 y luego hacerme el ejercicio utilizando el for 400 00:24:20,470 --> 00:24:22,309 para que veáis 401 00:24:22,309 --> 00:24:24,390 que lo que habéis escrito vosotros es lo mismo que hay 402 00:24:24,390 --> 00:24:26,309 dentro de verdad y que lo estáis haciendo bien 403 00:24:26,309 --> 00:24:26,970 eso sí 404 00:24:26,970 --> 00:24:30,109 pero por ahora nosotros 405 00:24:30,109 --> 00:24:31,869 queremos que si leemos un array 406 00:24:31,869 --> 00:24:34,250 o miramos un array o escribimos en pantalla un array 407 00:24:34,250 --> 00:24:36,089 lo hagamos nosotros utilizando 408 00:24:36,089 --> 00:24:37,309 while, for o lo que sea 409 00:24:37,309 --> 00:24:40,349 porque estamos estudiando eso 410 00:24:40,349 --> 00:24:48,119 copia de un array 411 00:24:48,119 --> 00:24:49,779 vale 412 00:24:49,779 --> 00:24:52,220 vamos a dejarlo 413 00:24:52,220 --> 00:24:52,940 un momento 414 00:24:52,940 --> 00:24:55,359 vamos a dejarlo un momento 415 00:24:55,359 --> 00:24:57,200 y vamos a hacer 416 00:24:57,200 --> 00:24:59,859 unas pruebas, unos ejercicios 417 00:24:59,859 --> 00:25:03,880 algo, vale, para ver 418 00:25:03,880 --> 00:25:05,759 un poco y luego volvemos a esto 419 00:25:05,759 --> 00:25:08,079 de la copia de un array, vale, que es importante 420 00:25:08,079 --> 00:25:09,900 entonces 421 00:25:09,900 --> 00:25:11,579 ejercicios básicos 422 00:25:11,579 --> 00:25:13,460 SRC 423 00:25:13,460 --> 00:25:15,660 Me creo un nuevo package 424 00:25:15,660 --> 00:25:18,900 Que será 425 00:25:18,900 --> 00:25:20,160 Arrays 426 00:25:20,160 --> 00:25:25,190 Y aquí me creo una nueva clase 427 00:25:25,190 --> 00:25:28,470 Ejemplo 1 428 00:25:28,470 --> 00:25:32,190 Vale, entonces 429 00:25:32,190 --> 00:25:32,990 Tengo mi 430 00:25:32,990 --> 00:25:35,329 Ejemplo 1 431 00:25:35,329 --> 00:25:40,569 Main, hagamos una cosa básica 432 00:25:40,569 --> 00:25:42,470 Por ahora, luego lo complicamos si queremos 433 00:25:42,470 --> 00:25:44,430 Vale, creámonos 434 00:25:44,430 --> 00:25:47,410 Un array de 5 posiciones 435 00:25:47,410 --> 00:25:48,869 ¿Cómo creo un array 436 00:25:48,869 --> 00:25:49,970 De 5 posiciones? 437 00:25:50,569 --> 00:25:53,450 entero, int 438 00:25:53,450 --> 00:26:00,960 corchetes, nombre del array 439 00:26:00,960 --> 00:26:05,279 que son edades, acostumbrados por favor 440 00:26:05,279 --> 00:26:08,819 a no llamar todas las variables int, o sea, todos los enteros i 441 00:26:08,819 --> 00:26:13,059 todos los array ar, todos los 442 00:26:13,059 --> 00:26:17,319 booleano b, porque llega un momento en que no entenderéis que estáis escribiendo 443 00:26:17,319 --> 00:26:21,420 los nombres tienen que tener, o sea, la variable tiene que tener significado 444 00:26:21,420 --> 00:26:23,759 Si es un array de edades, pues llamadle edades 445 00:26:23,759 --> 00:26:25,119 Si es un array de 446 00:26:25,119 --> 00:26:28,220 Longitudes, pues pongamos longitudes 447 00:26:28,220 --> 00:26:30,440 O algo por el estilo, pero que se entienda 448 00:26:30,440 --> 00:26:32,160 Cuando vosotros miráis esto 449 00:26:32,160 --> 00:26:33,240 Sepáis 450 00:26:33,240 --> 00:26:35,220 Lo que es, ¿vale? 451 00:26:35,660 --> 00:26:37,359 Entonces, int edades, ¿vale? 452 00:26:39,809 --> 00:26:41,309 Se las doy yo, directamente 453 00:26:41,309 --> 00:26:43,390 Tenemos 454 00:26:43,390 --> 00:26:44,630 4 455 00:26:44,630 --> 00:26:47,049 24 456 00:26:47,049 --> 00:26:48,289 5 457 00:26:48,289 --> 00:26:49,869 63 458 00:26:49,869 --> 00:26:52,930 Hemos dicho de 5 459 00:26:52,930 --> 00:26:54,430 7 460 00:26:54,430 --> 00:26:57,769 otra opción 461 00:26:57,769 --> 00:26:59,289 int 462 00:26:59,289 --> 00:27:01,829 edades 2 463 00:27:01,829 --> 00:27:04,329 ¿cómo creo un array de 5? 464 00:27:09,769 --> 00:27:10,130 new 465 00:27:10,130 --> 00:27:12,349 int 466 00:27:12,349 --> 00:27:14,630 corchete 467 00:27:14,630 --> 00:27:15,950 5 468 00:27:15,950 --> 00:27:19,759 en los dos casos he creado 469 00:27:19,759 --> 00:27:22,759 dos arrays 470 00:27:22,759 --> 00:27:24,319 de 5 posiciones 471 00:27:24,319 --> 00:27:25,660 esto 472 00:27:25,660 --> 00:27:28,039 ya está rellenado 473 00:27:28,039 --> 00:27:29,819 Este no 474 00:27:29,819 --> 00:27:31,619 Pregunta 475 00:27:31,619 --> 00:27:37,809 Arraiz.toString 476 00:27:37,809 --> 00:27:41,160 De edades 477 00:27:41,160 --> 00:27:42,779 ¿Qué me escribe? 478 00:27:49,359 --> 00:27:49,559 ¿Sí? 479 00:27:51,660 --> 00:27:53,380 ¿Y si en vez le pregunto edades 2? 480 00:28:00,569 --> 00:28:01,630 Por defecto 481 00:28:01,630 --> 00:28:03,289 Las variables int 482 00:28:03,289 --> 00:28:04,750 Si no están inicializadas 483 00:28:04,750 --> 00:28:06,230 Pues se asume que son 0 484 00:28:06,230 --> 00:28:07,710 ¿Sí? 485 00:28:07,849 --> 00:28:10,990 Como los char 486 00:28:10,990 --> 00:28:13,470 No tengo idea de las cosas iniciales de char 487 00:28:13,470 --> 00:28:14,210 Luego lo miramos 488 00:28:14,210 --> 00:28:15,250 Ojo, se enfada 489 00:28:15,250 --> 00:28:17,730 Los booleanos 490 00:28:17,730 --> 00:28:18,690 Creo falso 491 00:28:18,690 --> 00:28:21,009 Los string null 492 00:28:21,009 --> 00:28:23,029 Cosa por esto 493 00:28:23,029 --> 00:28:25,410 Si tenéis curiosidad 494 00:28:25,410 --> 00:28:26,369 Pues hacéis esto 495 00:28:26,369 --> 00:28:29,089 Creáis un array de lo que sea 496 00:28:29,089 --> 00:28:30,730 Y lo imprimís 497 00:28:30,730 --> 00:28:31,829 Y miráis que os da 498 00:28:31,829 --> 00:28:37,680 Vamos a verlo 499 00:28:37,680 --> 00:28:39,619 Null probablemente 500 00:28:39,619 --> 00:28:42,180 Creo un array de string 501 00:28:42,180 --> 00:28:46,559 Lo conseguiré 502 00:28:46,559 --> 00:28:47,140 String 503 00:28:47,140 --> 00:28:50,319 Que se llame 504 00:28:50,319 --> 00:28:53,039 str 505 00:28:53,039 --> 00:28:56,059 new string 506 00:28:56,059 --> 00:28:59,480 y aquí le pongo 507 00:28:59,480 --> 00:29:00,140 str 508 00:29:00,140 --> 00:29:01,380 ¿qué pondrá? 509 00:29:02,319 --> 00:29:02,920 5, 0 510 00:29:02,920 --> 00:29:09,099 pongo 511 00:29:09,099 --> 00:29:10,000 char 512 00:29:10,000 --> 00:29:11,259 vamos a ver char 513 00:29:11,259 --> 00:29:12,259 ¿qué hace char? 514 00:29:14,559 --> 00:29:15,920 chr 515 00:29:15,920 --> 00:29:20,079 char 516 00:29:20,079 --> 00:29:22,920 chr 517 00:29:22,920 --> 00:29:26,000 ¿qué es char? 518 00:29:26,299 --> 00:29:32,380 esto es interesante, no sé si es un espacio 519 00:29:32,380 --> 00:29:34,980 o si es un carácter, yo creo que es un espacio 520 00:29:34,980 --> 00:29:38,880 no, creo que es un espacio, porque un espacio lo pone aquí 521 00:29:38,880 --> 00:29:42,819 y tienes un espacio, el espacio que es este de aquí 522 00:29:42,819 --> 00:29:45,440 otro espacio, yo creo que por defecto este es un espacio 523 00:29:45,440 --> 00:29:47,319 cadena vacía no pondría nada 524 00:29:47,319 --> 00:29:50,880 pero es raro, ¿vale? 525 00:29:51,119 --> 00:29:52,720 esto lo podríamos hacer así 526 00:29:52,720 --> 00:30:23,279 Si, so, int chr de cero, un cero, y ahora me voy a así, y el carácter cero es el carácter nulo, sería el nul, sería el equivalente de un nul 527 00:30:23,279 --> 00:30:25,380 Carácter nulo que posiblemente 528 00:30:25,380 --> 00:30:27,099 Aquí es interpretado como un espacio 529 00:30:27,099 --> 00:30:29,119 Pero no es un espacio 530 00:30:29,119 --> 00:30:31,400 Porque el espacio oficial es otro numerito 531 00:30:31,400 --> 00:30:33,119 Es el numerito 532 00:30:33,119 --> 00:30:35,559 Espacio 533 00:30:35,559 --> 00:30:36,539 Es el 32 534 00:30:36,539 --> 00:30:37,920 ¿Sí? 535 00:30:40,279 --> 00:30:41,599 Porque no es nul 536 00:30:41,599 --> 00:30:44,180 Nul es un valor especial para objetos 537 00:30:44,180 --> 00:30:46,019 String es un objeto, ¿te acuerdas? 538 00:30:46,779 --> 00:30:48,240 Esto es el carácter nulo 539 00:30:48,240 --> 00:30:50,460 Es un carácter, no es nul 540 00:30:50,460 --> 00:30:52,779 Pero luego representa 541 00:30:52,779 --> 00:30:54,339 Que no has puesto nada 542 00:30:54,339 --> 00:31:03,170 Pero nula es otra cosa 543 00:31:03,170 --> 00:31:04,170 Es el objeto nulo 544 00:31:04,170 --> 00:31:07,529 Y esto no es un objeto, entonces no es lo mismo 545 00:31:07,529 --> 00:31:10,470 Y booleano 546 00:31:10,470 --> 00:31:13,130 Falsi, creo que corresponderá a cero 547 00:31:13,130 --> 00:31:15,069 Vámonos 548 00:31:15,069 --> 00:31:15,930 Como sois vagos 549 00:31:15,930 --> 00:31:42,779 Por defecto se ponen estas cosas 550 00:31:42,779 --> 00:31:45,180 Ahora yo pillo 551 00:31:45,180 --> 00:31:46,519 Todo esto 552 00:31:46,519 --> 00:31:49,039 lo pongo así 553 00:31:49,039 --> 00:31:50,640 porque no lo quiero utilizar, ¿vale? 554 00:31:50,660 --> 00:31:52,680 vamos a pensar sobre los enteros 555 00:31:52,680 --> 00:31:54,359 entonces, este de aquí lo he rellenado 556 00:31:54,359 --> 00:31:56,619 ahora, este de aquí lo tengo que rellenar 557 00:31:56,619 --> 00:31:58,700 pongamos que lo quiero rellenar 558 00:31:58,700 --> 00:32:00,839 con todos 100, quiero 100 en todas 559 00:32:00,839 --> 00:32:01,900 celdas, ¿cómo lo hago? 560 00:32:27,220 --> 00:32:27,539 ¿verdad? 561 00:32:29,119 --> 00:32:31,440 claro, veis que si lo pongo así 562 00:32:31,440 --> 00:32:32,859 me da un error 563 00:32:32,859 --> 00:32:35,220 no existe el método 564 00:32:35,220 --> 00:32:37,220 length para arrays 565 00:32:37,220 --> 00:32:39,180 ¿vale? pero existe el 566 00:32:39,180 --> 00:32:41,460 atributo length para race, cuidado que es azul 567 00:32:41,460 --> 00:32:41,779 ¿veis? 568 00:32:43,019 --> 00:32:45,339 veremos la diferencia cuando entenderemos los objetos 569 00:32:45,339 --> 00:32:47,279 ¿sí? pero esta es una 570 00:32:47,279 --> 00:32:47,660 variable 571 00:32:47,660 --> 00:32:51,039 para una string existe el método 572 00:32:51,039 --> 00:32:52,980 es una función 573 00:32:52,980 --> 00:32:55,279 mientras esta no es una función, es una variable 574 00:32:55,279 --> 00:32:56,559 asociada con el aes2 575 00:32:56,559 --> 00:32:58,339 entonces ¿qué hago aquí? 576 00:33:18,019 --> 00:33:19,920 si ahora vuelvo a escribirlo 577 00:33:19,920 --> 00:33:30,970 así se ve como se va rellenando 578 00:33:30,970 --> 00:33:34,099 ¿vale? por cada ciclo 579 00:33:34,099 --> 00:33:36,000 lo estoy escribiendo 580 00:33:36,000 --> 00:33:40,380 Veis que en el primer ciclo pone 100 aquí y los otros son todavía 0. 581 00:33:40,500 --> 00:33:44,960 Segundo ciclo, pues he rellenado las primeras dos y se quedan los otros 0. 582 00:33:45,099 --> 00:33:48,420 Tercer ciclo, cuarto ciclo, quinto ciclo. 583 00:33:48,839 --> 00:33:51,980 Y al final del quinto ciclo, en todos he puesto 100. 584 00:33:55,589 --> 00:33:55,750 ¿Sí? 585 00:33:58,390 --> 00:33:59,609 Pongamos aquí... 586 00:34:30,170 --> 00:34:35,199 ¿Por qué no me he pillado? No me he pillado. 587 00:34:35,360 --> 00:34:36,000 Voy a hacer un... 588 00:34:36,000 --> 00:34:40,800 Item.out.println 589 00:34:40,800 --> 00:34:45,610 Dame un valor 590 00:34:45,610 --> 00:34:49,110 Y 591 00:34:49,110 --> 00:34:52,739 Más 592 00:34:52,739 --> 00:34:54,400 Sobre 593 00:34:54,400 --> 00:35:00,010 Ahora sí, vale 594 00:35:00,010 --> 00:35:01,429 Más 595 00:35:01,429 --> 00:35:04,489 Edades 596 00:35:04,489 --> 00:35:06,630 Dos punto 597 00:35:06,630 --> 00:35:07,489 Length 598 00:35:07,489 --> 00:35:15,840 Vale, entonces ahora lo lanzo 599 00:35:15,840 --> 00:35:17,900 No, hay errores 600 00:35:17,900 --> 00:35:18,880 ¿Dónde hay errores? 601 00:35:18,880 --> 00:35:19,719 Aquí hay errores 602 00:35:19,719 --> 00:35:27,000 Lanzo, dice 603 00:35:27,000 --> 00:35:29,800 Dame un valor, el cero sobre cinco, vale 604 00:35:29,800 --> 00:35:32,659 Habría tenido que ponerle más uno 605 00:35:32,659 --> 00:35:34,360 Pero el primer valor es doce 606 00:35:34,360 --> 00:35:36,820 Y veis que me ha guardado doce en la primera 607 00:35:36,820 --> 00:35:38,460 En la posición cero 608 00:35:38,460 --> 00:35:41,000 Ahora pongo cuarenta y cuatro 609 00:35:41,000 --> 00:35:42,579 Me la ha guardado en la posición uno 610 00:35:42,579 --> 00:35:45,159 Quinto, cuarenta y tres 611 00:35:45,159 --> 00:35:46,239 Once 612 00:35:46,239 --> 00:35:47,659 Tres 613 00:35:47,659 --> 00:35:52,559 Esto está feo 614 00:35:52,559 --> 00:35:54,699 Le vamos a poner 615 00:35:54,699 --> 00:35:56,659 Y más uno 616 00:35:56,659 --> 00:36:03,579 Y entonces ahora me sale 617 00:36:03,579 --> 00:36:05,940 Dame el valor uno de cinco 618 00:36:05,940 --> 00:36:08,000 es 10, segundo valor 619 00:36:08,000 --> 00:36:10,239 20, 30, 40 y 50 620 00:36:10,239 --> 00:36:11,159 vale 621 00:36:11,159 --> 00:36:14,019 y al final me encuentro 622 00:36:14,019 --> 00:36:15,380 los valores en mi array 623 00:36:15,380 --> 00:36:18,900 ¿lo veis? 624 00:36:20,300 --> 00:36:22,099 estoy haciendo esta array 625 00:36:22,099 --> 00:36:23,659 5 veces 626 00:36:23,659 --> 00:36:26,119 la primera vez 627 00:36:26,119 --> 00:36:28,019 me pondrá en la 628 00:36:28,019 --> 00:36:30,599 posición 0, la segunda vez en la posición 629 00:36:30,599 --> 00:36:32,239 1, la tercera vez en la posición 2 630 00:36:32,239 --> 00:36:33,500 hasta la posición 4 631 00:36:33,500 --> 00:36:35,840 irá de 0 a 632 00:36:35,840 --> 00:36:37,659 edades2.length 633 00:36:37,659 --> 00:36:38,920 menos 1, 4 634 00:36:38,920 --> 00:36:41,519 y por cada ciclo 635 00:36:41,519 --> 00:36:44,360 me pide de escribir algo y lo guardo 636 00:36:44,360 --> 00:36:45,760 ¿dudas? 637 00:36:47,260 --> 00:36:47,940 ¿preguntas? 638 00:36:54,019 --> 00:36:55,099 eh, momento no 639 00:36:55,099 --> 00:36:57,699 vamos ahora a escribir 640 00:36:57,699 --> 00:36:59,480 esta array, sin usar esta cosa 641 00:36:59,480 --> 00:37:01,460 aquí, y quiero escribirlo en vertical 642 00:37:01,460 --> 00:37:06,079 for 643 00:37:06,079 --> 00:37:08,960 int y es igual 644 00:37:08,960 --> 00:37:09,619 a 0 645 00:37:09,619 --> 00:37:13,260 y menor que edades2.length 646 00:37:13,260 --> 00:37:14,820 Y más más 647 00:37:14,820 --> 00:37:18,320 Por cada posición de la rey 648 00:37:18,320 --> 00:37:20,219 Si, so 649 00:37:20,219 --> 00:37:22,079 Y 650 00:37:22,079 --> 00:37:23,920 Más 651 00:37:23,920 --> 00:37:25,639 Dos puntos 652 00:37:25,639 --> 00:37:29,179 Más, ¿cómo escribo el contenido de la posición 653 00:37:29,179 --> 00:37:30,139 Y 654 00:37:30,139 --> 00:37:31,920 De la rey? 655 00:37:32,599 --> 00:37:33,340 Puedo poner, mira 656 00:37:33,340 --> 00:37:35,820 Posición 657 00:37:35,820 --> 00:37:40,260 Posición 658 00:37:40,260 --> 00:37:44,159 Y 659 00:37:44,159 --> 00:37:46,360 Contiene 660 00:37:46,360 --> 00:37:53,409 ¿Cómo se llama la rey? 661 00:37:53,849 --> 00:37:56,530 edades 2 662 00:37:56,530 --> 00:38:02,869 ya está 663 00:38:02,869 --> 00:38:06,269 entonces cuando salga a posición 0 664 00:38:06,269 --> 00:38:07,769 dirá posición 0 665 00:38:07,769 --> 00:38:09,929 y pondrá edades 2 de 0 666 00:38:09,929 --> 00:38:12,570 cuando será 1, posición 1 667 00:38:12,570 --> 00:38:14,570 y pondrá edades 2 de 1 668 00:38:14,570 --> 00:38:15,610 ¿sí? 669 00:38:18,780 --> 00:38:19,940 ahí, ahora cada vez 670 00:38:19,940 --> 00:38:21,980 1, 2, 3, 4, 5 671 00:38:21,980 --> 00:38:23,800 ¿veis? 672 00:38:24,199 --> 00:38:24,880 este es el 673 00:38:24,880 --> 00:38:28,219 contenido que me está escribiendo 674 00:38:28,219 --> 00:38:30,739 1, 2, 3, 4, 5 675 00:38:30,739 --> 00:38:34,760 ¿Cómo lo puedo hacer de otra forma? 676 00:38:38,949 --> 00:38:44,190 Por int actual dos puntos 677 00:38:44,190 --> 00:38:54,170 Edades dos, si eso, actual 678 00:38:54,170 --> 00:39:02,739 Uno, dos, tres, cuatro, cinco 679 00:39:02,739 --> 00:39:04,340 Aquí lo tienes 680 00:39:04,340 --> 00:39:12,400 Fijaos que mientras en esto tengo un índice 681 00:39:12,400 --> 00:39:14,880 Y puedo trabajar con el índice 682 00:39:14,880 --> 00:39:17,940 En realidad aquí un índice no lo tengo 683 00:39:17,940 --> 00:39:21,239 ¿Sí? Tengo el valor 684 00:39:21,239 --> 00:39:24,820 Pero no tengo el índice de este valor 685 00:39:24,820 --> 00:39:28,119 Si lo quisiera, debería construírmelo 686 00:39:28,119 --> 00:39:33,239 Como int index es igual a cero 687 00:39:33,239 --> 00:39:36,079 Y cada vez que hago una vez este aquí 688 00:39:36,079 --> 00:39:38,780 Pues le pongo index++ por algún lado 689 00:39:38,780 --> 00:39:39,780 ¿Vale? 690 00:39:40,159 --> 00:39:42,320 Pero si lo quiero usar así 691 00:39:42,320 --> 00:39:45,719 pues entonces casi mejor que me lo planteé directamente así 692 00:39:45,719 --> 00:39:51,739 si necesito este índice porque quiero hacer algo con este índice 693 00:39:51,739 --> 00:39:54,719 entonces casi mejor que vaya directamente a esta función 694 00:39:54,719 --> 00:39:58,539 si el índice no me sirve, por ejemplo quiero escribir el contenido 695 00:39:58,539 --> 00:40:01,179 pero sin decir esta posición 0 y esta posición 1 696 00:40:01,179 --> 00:40:03,780 pues entonces puedo ir directamente con este aquí 697 00:40:03,780 --> 00:40:11,880 como sintaxis es mucho más ligera 698 00:40:11,880 --> 00:40:13,940 Con respecto a esta cosa aquí 699 00:40:13,940 --> 00:40:18,940 Esto en particular nos servirá mucho más 700 00:40:18,940 --> 00:40:21,500 Cuando tendremos objetos 701 00:40:21,500 --> 00:40:23,639 Entonces pillaremos objetos 702 00:40:23,639 --> 00:40:25,699 Y haremos algo sobre cada objeto 703 00:40:25,699 --> 00:40:28,119 Probémoslo 704 00:40:28,119 --> 00:40:30,260 String 705 00:40:30,260 --> 00:40:33,099 MiArray 706 00:40:33,099 --> 00:40:35,380 Es igual a 707 00:40:35,380 --> 00:40:36,900 NewString 708 00:40:36,900 --> 00:40:41,730 De 4 709 00:40:41,730 --> 00:40:55,420 Mejor 710 00:40:55,420 --> 00:41:14,480 Y ahora pongo que mi array de 0 contiene, hola, mi array de 1 contiene 1, 2 711 00:41:14,480 --> 00:41:33,110 Pregunta para vosotros, ¿cómo podría haber hecho esto mucho más rápido? 712 00:41:33,110 --> 00:41:50,949 No oigo absolutamente nada 713 00:41:50,949 --> 00:42:01,059 yo digo, aquí arriba 714 00:42:01,059 --> 00:42:03,239 pero no creo que esto lo pille 715 00:42:03,239 --> 00:42:03,639 el Java 716 00:42:03,639 --> 00:42:45,989 cuéntame, es lo mismo 717 00:42:45,989 --> 00:42:48,230 me crea un array de cuatro posiciones 718 00:42:48,230 --> 00:42:49,369 y cosas por el estilo, vale 719 00:42:49,369 --> 00:42:52,710 esto sirve cuando yo tengo que crear un array de cuatro posiciones 720 00:42:52,710 --> 00:42:54,090 y no sé que va a poner dentro 721 00:42:54,090 --> 00:42:56,690 este de aquí me sirve si ya tengo lo que sea 722 00:42:56,690 --> 00:42:58,309 para hacer pruebas y cosas por el estilo 723 00:42:58,309 --> 00:42:59,690 esto normalmente 724 00:42:59,690 --> 00:43:02,650 me creo un array de pruebas, lo uso y cosas por el estilo 725 00:43:02,650 --> 00:43:04,409 luego sustituyo esta línea 726 00:43:04,409 --> 00:43:06,090 con la línea que 727 00:43:06,090 --> 00:43:08,550 me lo lee por teclado y cosas por el estilo 728 00:43:08,550 --> 00:43:10,329 y así evito cada vez que tenga 729 00:43:10,329 --> 00:43:12,309 que hacer este trabajo, pues de tener que 730 00:43:12,309 --> 00:43:13,909 ir a leer cinco números 731 00:43:13,909 --> 00:43:16,050 así me explico 732 00:43:16,050 --> 00:43:20,489 por ejemplo, en este ejercicio para llegar a esta parte 733 00:43:20,489 --> 00:43:22,349 aquí, que es la parte que me interesa, tendré que poner 734 00:43:22,349 --> 00:43:23,309 cinco números aquí 735 00:43:23,309 --> 00:43:25,030 me gusta 736 00:43:25,030 --> 00:43:28,050 entonces 737 00:43:28,050 --> 00:43:30,550 he creado estos arrays, vale, fenomenal 738 00:43:30,550 --> 00:43:32,309 imaginamos que ahora yo 739 00:43:32,309 --> 00:43:33,469 quiera escribir 740 00:43:33,469 --> 00:43:35,289 no el contenido 741 00:43:35,289 --> 00:43:37,510 pero el tamaño de cada una 742 00:43:37,510 --> 00:43:38,269 de las letras 743 00:43:38,269 --> 00:43:41,510 dentro de cada una de las celdas 744 00:43:41,510 --> 00:43:43,889 entonces se haría 745 00:43:43,889 --> 00:43:44,510 for 746 00:43:44,510 --> 00:43:46,110 int 747 00:43:46,110 --> 00:43:49,349 string s 748 00:43:49,349 --> 00:43:50,769 dos puntos 749 00:43:50,769 --> 00:43:52,269 mi array 750 00:43:52,269 --> 00:43:57,179 se hizo 751 00:43:57,179 --> 00:43:59,420 s.length 752 00:43:59,420 --> 00:44:06,000 entonces 753 00:44:06,000 --> 00:44:08,179 antes me pide este valor de aquí 754 00:44:08,179 --> 00:44:15,710 sería esta parte 755 00:44:15,710 --> 00:44:16,309 de aquí 756 00:44:16,309 --> 00:44:19,610 la primera 757 00:44:19,610 --> 00:44:21,750 son 4, la segunda 758 00:44:21,750 --> 00:44:22,570 son 5 759 00:44:22,570 --> 00:44:25,650 la tercera son 8, porque es este 760 00:44:25,650 --> 00:44:25,889 de aquí 761 00:44:25,889 --> 00:44:28,730 y la última 762 00:44:28,730 --> 00:44:30,170 son 3 763 00:44:30,170 --> 00:44:32,550 ¿sí? 764 00:44:33,389 --> 00:44:35,530 aquí no estoy utilizando 765 00:44:35,530 --> 00:44:37,429 el índice, me interesa saber 766 00:44:37,429 --> 00:44:39,449 la longitud de todas las cadenas 767 00:44:39,449 --> 00:44:41,650 que he guardado, pues entonces tengo esto 768 00:44:42,389 --> 00:44:45,429 imaginamos que quiero saber 769 00:44:45,429 --> 00:44:48,050 la longitud total 770 00:44:48,050 --> 00:44:50,130 de lo que he escrito en este array 771 00:44:50,130 --> 00:44:53,940 int total 772 00:44:53,940 --> 00:44:55,739 es igual a cero 773 00:44:55,739 --> 00:44:58,239 y aquí podría hacer 774 00:44:58,239 --> 00:44:59,320 total 775 00:44:59,320 --> 00:45:01,320 más igual 776 00:45:01,320 --> 00:45:07,219 a ese punto length 777 00:45:07,219 --> 00:45:09,440 y cuando salgo 778 00:45:09,440 --> 00:45:10,539 si eso 779 00:45:10,539 --> 00:45:13,159 total dos puntos 780 00:45:13,159 --> 00:45:14,260 más total 781 00:45:14,260 --> 00:45:20,360 entonces ahora tengo esta cosa aquí 782 00:45:20,360 --> 00:45:23,840 el total son 20 letras 783 00:45:23,840 --> 00:45:25,559 en todo mi array 784 00:45:25,559 --> 00:45:26,579 tengo 20 letras 785 00:45:26,579 --> 00:45:31,159 4 más 5 más 8 786 00:45:31,159 --> 00:45:32,340 más 3, 20 787 00:45:32,340 --> 00:45:38,420 entonces, la cosa interesante aquí 788 00:45:38,420 --> 00:45:41,000 es que yo antes 789 00:45:41,000 --> 00:45:42,960 cuando hacía 790 00:45:42,960 --> 00:45:44,739 estos ejercicios que vosotros habéis hecho 791 00:45:44,739 --> 00:45:46,699 de for, de while, de cosas por el estilo 792 00:45:46,699 --> 00:45:49,199 las variables 793 00:45:49,199 --> 00:45:50,719 que me daban, los valores 794 00:45:50,719 --> 00:45:52,659 que me daban, los perdía 795 00:45:52,659 --> 00:45:54,400 en cada ciclo yo leía 796 00:45:54,400 --> 00:45:56,460 una cosa, la podía acumular 797 00:45:56,460 --> 00:45:58,460 podía calcular la suma y luego 798 00:45:58,460 --> 00:46:00,179 cuánto me había metido y dividir 799 00:46:00,179 --> 00:46:01,940 pero perdía ese valor 800 00:46:01,940 --> 00:46:04,360 si yo leía todo 801 00:46:04,360 --> 00:46:06,599 lo podía acumular en un string 802 00:46:06,599 --> 00:46:08,079 pero era algo 803 00:46:08,079 --> 00:46:10,460 que luego guardándolo en string no lo puedo volver 804 00:46:10,460 --> 00:46:12,480 a utilizar, porque son string 805 00:46:12,480 --> 00:46:13,800 debería 806 00:46:13,800 --> 00:46:16,460 trocearlo, sacar otra vez 807 00:46:16,460 --> 00:46:18,159 el string y transformarlo en 808 00:46:18,159 --> 00:46:20,380 se vuelve engorroso, ahora en vez 809 00:46:20,380 --> 00:46:22,039 tengo un sistema para poder decir 810 00:46:22,039 --> 00:46:24,380 los datos que me das, guárdatelos 811 00:46:24,400 --> 00:46:26,519 en un array, los guardas 812 00:46:26,519 --> 00:46:27,659 ya en las casillas 813 00:46:27,659 --> 00:46:30,079 y luego después cuando has leído todos los 814 00:46:30,079 --> 00:46:32,559 datos y ya los tienes todos 815 00:46:32,559 --> 00:46:33,820 pues a este punto puedes 816 00:46:33,820 --> 00:46:36,079 mirarlos todos para hacer 817 00:46:36,079 --> 00:46:38,260 la suma, para hacer 818 00:46:38,260 --> 00:46:40,460 la media, para contar cuantos 819 00:46:40,460 --> 00:46:42,380 son y cosas por el estilo, a ese punto ya los ten 820 00:46:42,380 --> 00:46:44,519 no sé si me explico lo que quiero decir 821 00:46:44,519 --> 00:46:53,030 técnicamente no hay 822 00:46:53,030 --> 00:46:54,829 un límite, yo creo que esto 823 00:46:54,829 --> 00:46:56,809 es un entero lo que se le pasa 824 00:46:56,809 --> 00:46:59,150 aquí, por lo tanto 825 00:46:59,150 --> 00:47:01,150 habría el 4.000 millones 826 00:47:01,150 --> 00:47:02,389 aún así 827 00:47:02,389 --> 00:47:03,530 no suele ser 828 00:47:03,530 --> 00:47:10,360 no, no, las posiciones 829 00:47:10,360 --> 00:47:12,539 no puedes hacer 3 posiciones y media 830 00:47:12,539 --> 00:47:14,699 posiciones un entero 831 00:47:14,699 --> 00:47:16,820 creo que sea un entero 832 00:47:16,820 --> 00:47:18,559 este de aquí, y si es un entero 833 00:47:18,559 --> 00:47:20,360 pues puede pillar como máximo 4.000 millones 834 00:47:20,360 --> 00:47:22,420 pero, o sea, 2.000 millones en realidad 835 00:47:22,420 --> 00:47:25,119 no se suele hacer