{"id":1977,"date":"2018-02-07T23:01:55","date_gmt":"2018-02-08T04:01:55","guid":{"rendered":"https:\/\/www.manualjava.net\/?p=1977"},"modified":"2018-02-09T23:44:11","modified_gmt":"2018-02-10T04:44:11","slug":"arreglos-unidimensionales","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=1977","title":{"rendered":"Arreglos unidimensionales"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-1989\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java25-300x100.png\" alt=\"\" width=\"291\" height=\"97\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java25-300x100.png 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java25.png 377w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/><\/p>\n<p><span style=\"color: #000000;\">Un arreglo unidimensional es una secuencia de datos del mismo tipo. Los datos se llaman elementos del arreglo y se enumeran consecutivamente 0, 1, 2, 3, etc. El tipo de elementos almacenados en el arreglo puede ser de cualquier tipo de dato de Java. Normalmente el arreglo se utiliza para almacenar tipos como double, int , char.\u00a0<\/span><!--more--><\/p>\n<p><span style=\"color: #000000;\">Un arreglo unidimensional puede contener, por ejemplo, la edad de los alumnos de una clase, las temperaturas de cada d\u00eda de un mes en una ciudad determinada, o el n\u00famero de personas que residen en cada una de las 17 comunidades aut\u00f3nomas espa\u00f1olas. Cada \u00edtem del arreglo se denomina elemento. Los elementos de un arreglo unidimensional se enumeran, como ya se ha comentado, consecutivamente 0, 1, 2, 3 . . .<\/span><\/p>\n<p><span style=\"color: #000000;\">Estos n\u00fameros se denominan valores \u00edndice o sub\u00edndice del arreglo. El t\u00e9rmino \u00absub\u00edndice\u00bb se utiliza ya que se especifica igual que en matem\u00e1ticas, como una secuencia como\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2011\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/arreglo1.png\" alt=\"\" width=\"85\" height=\"29\" \/>. Estos n\u00fameros localizan la posici\u00f3n del elemento dentro del arreglo, proporcionando acceso directo al arreglo.<\/span><\/p>\n<p><span style=\"color: #000000;\">Si el nombre del arreglo es a, entonces a[0] es el nombre del elemento que est\u00e1 en la posici\u00f3n 0, a[1] es el nombre del elemento que est\u00e1 en la posici\u00f3n 1, etc. En general el elemento i-\u00e9simo est\u00e1 en la posici\u00f3n i-1. De modo que si el arreglo tiene n elementos sus nombres son a[0], a[1], . . . , a[n-1]. La siguiente figura representa el arreglo a de seis elementos; la descripci\u00f3n del mencionado arreglo es la siguiente: <strong>El arreglo a tiene 6 elementos: a[0] contiene 25.1, a[1], 34.2, a[2], 5.25, a[3], 7.45, a[4], 6.09 y a[5] contiene 7.54.<\/strong> El diagrama de la siguiente figura representa realmente una regi\u00f3n de la memoria de la computadora, ya que un arreglo se almacena siempre con sus elementos en una secuencia de posiciones de memoria contigua.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/arreglo2-300x63.png\" alt=\"\" width=\"310\" height=\"65\" \/><\/p>\n<p><span style=\"color: #000000;\">En Java los \u00edndices de un arreglo siempre tienen como l\u00edmite inferior 0, como \u00edndice superior el tama\u00f1o del arreglo menos 1.<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>Declaraci\u00f3n de un arreglo unidimensional<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Un arreglo unidimensional se declara con la palabra clave <strong>new<\/strong>. Para crear un arreglo, el programador especifica el tipo de cada elemento y el n\u00famero de elementos que se requieren para el arreglo, como parte de una expresi\u00f3n para crear un arreglo que utiliza la palabra clave new. Dicha expresi\u00f3n devuelve una referencia que puede almacenarse en una variable tipo arreglo.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Regla<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Las variables de tipo arreglo se pueden definir con dos formatos diferentes:<\/span><\/p>\n<ol>\n<li><span style=\"color: #000000;\">\u00a0int a[];<\/span><\/li>\n<li><span style=\"color: #000000;\">int []a;<\/span><\/li>\n<\/ol>\n<h3><span style=\"color: #000000;\"><strong>Sintaxis<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Se declara un nombre de un arreglo y se crea un arreglo de un modo similar a la creaci\u00f3n y proceso de dar nombre a objetos de clases.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0tipo [] nombre_arreglo = new tipo[N\u00fameroDeElementos];<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int c[] = new int [12];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int c[];\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ declara la variable arreglo<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0c = new int [12];\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ crea el arreglo; lo asigna a la variable<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 tipo arreglo<\/span><\/p>\n<p><span style=\"color: #000000;\">En la declaraci\u00f3n, los corchetes que van despu\u00e9s del nombre de la variable c indican que c es una variable que har\u00e1 referencia a un arreglo de valores int. En la sentencia de asignaci\u00f3n, la variable arreglo c recibe la referencia a un nuevo arreglo de 12 elementos int. Al crear un arreglo, cada uno de sus elementos recibe un valor predeterminado: cero para los elementos num\u00e9ricos de tipos primitivos, false para los elementos boolean y null para las referencias (cualquier tipo no primitivo).<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplos<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0char[] linea = new char[80];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0double[] calificaciones = new double[400];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Alumno[] listas = new Alumno[120];<\/span><\/p>\n<p><span style=\"color: #000000;\">Los arreglos<strong> linea y calificaciones<\/strong> son de tipo char y double, mientras que<strong> listas<\/strong> es una arreglo de tipo Alumno (Alumno es una clase). El tama\u00f1o de un arreglo unidimensional (array) o n\u00famero de elementos del mismo se calcula utilizando la sentencia <strong>arreglo.length<\/strong>.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int []a = new int[100];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0for(int i=0;i&lt;100;i++)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 a[i] = i;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ el arreglo se rellena con enteros de 0 a 99<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0for(int i=0;i&lt;a.length;i++)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(a[i]);<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Regla<\/strong><\/span><\/h3>\n<ul>\n<li><span style=\"color: #000000;\">Una vez que se ha creado un arreglo no se puede cambiar su tama\u00f1o, aunque s\u00ed, l\u00f3gicamente, sus elementos individuales.<\/span><\/li>\n<li><span style=\"color: #000000;\">Si se necesita expandir el tama\u00f1o de un arreglo mientras se ejecuta un programa, se debe utilizar una estructura de datos diferentes que en Java 5 y versiones posteriores se denomina <strong>lista de arreglos<\/strong>.<\/span><\/li>\n<\/ul>\n<h2><span style=\"color: #000000;\">\u00a0<strong>Acceso a los elementos de un arreglo unidimensional<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">El acceso a los elementos de un arreglo se realiza de igual modo que en otros lenguajes de programaci\u00f3n.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Sintaxis<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0nombre_arreglo[\u00edndice];<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplos<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0nombres[3];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0lista[5];<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0a[a.length &#8211; 1];<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>Arreglos y objetos<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">En Java un arreglo unidimensional (array) es considerado un objeto. Esto significa que se pueden considerar los tipos arreglos como clases. Sin embargo, aunque un arreglo de tipo double[] es una clase, la sintaxis para crear un objeto arreglo es un poco diferente. Para crear un arreglo, se utiliza la sintaxis:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0double m[] = new double[10];<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0Se puede considerar la expresi\u00f3n new double[10] como una invocaci\u00f3n de un constructor que utiliza una sintaxis no est\u00e1ndar.<\/span><\/p>\n<p><span style=\"color: #000000;\">Como ya se ha visto anteriormente, cada arreglo tiene una variable de instancia denominada length. Al igual que sucede con cualquier otro tipo de clases, las variables arreglo contienen direcciones de memoria, conocidas en Java como <strong>referencias<\/strong> y por consiguiente, los tipos arreglo son tipos referencia.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Advertencia<\/strong><\/span><\/h3>\n<ul>\n<li><span style=\"color: #000000;\">Existe cierto debate entre expertos de Java sobre la consideraci\u00f3n de que los tipos arreglos son o no clases; sin embargo, existe pr\u00e1ctica unanimidad, en que los arreglos son, en s\u00ed mismos, objetos.<\/span><\/li>\n<li><span style=\"color: #000000;\">Los tipos arreglos son tipos referencia y una variable de un tipo arreglo contiene la direcci\u00f3n donde se almacena el objeto arreglo en memoria. Esta direcci\u00f3n de memoria se denomina<strong> referencia<\/strong> al objeto arreglo.<\/span><\/li>\n<\/ul>\n<h2><span style=\"color: #000000;\"><strong>Inicializaci\u00f3n de arreglos unidimensionales y arreglos an\u00f3nimos<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Java tiene un formato especial abreviado para crear un objeto arreglo e inicializar el mismo, sin recurrir a la llamada a new.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Sintaxis<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int []numerosPrimos = {1,3,5,7,11,13,17,19};<\/span><\/p>\n<p><span style=\"color: #000000;\">En Java, existe la posibilidad de crear objetos y clases an\u00f3nimas, y en particular <strong>arreglos an\u00f3nimos<\/strong>. Cuando una expresi\u00f3n como<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0new PruebaClase(\u00abBetty\u00bb,19);<\/span><\/p>\n<p><span style=\"color: #000000;\">no se asigna a una variable se conoce como\u00a0 un <strong>objeto an\u00f3nimo<\/strong>. La expresi\u00f3n crea una referencia a un objeto de la clase. Se denomina an\u00f3nimo debido a que el objeto no se asigna a una variable para ser referenciada por su nombre. Es el caso de un arreglo, se puede inicializar un arreglo an\u00f3nimo con la siguiente declaraci\u00f3n<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0new int [] {1,3,5,7,9};<\/span><\/p>\n<p><span style=\"color: #000000;\">Esta expresi\u00f3n asigna a un arreglo nuevo y lo rellena con los valores internos a las llaves. Cuenta el n\u00famero de valores iniciales y establece el tama\u00f1o correspondiente del arreglo. Se puede utilizar la sintaxis para reinicializar un arreglo sin crear una nueva variable. As\u00ed, por ejemplo, las declaraciones:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int []anonimo = {1,3,5,7,11,13,17,19};<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0numerosPrimos = anonimo;<\/span><\/p>\n<p><span style=\"color: #000000;\">que equivale a la expresi\u00f3n:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0numerosPrimos = new int [] {1,3,5,7,11,13,17,19};<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un arreglo unidimensional es una secuencia de datos del mismo tipo. Los datos se llaman elementos del arreglo y se enumeran consecutivamente 0, 1, 2, 3, etc. El tipo de elementos almacenados en el arreglo puede ser de cualquier tipo de dato de Java. Normalmente el arreglo se utiliza para almacenar tipos como double, int &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=1977\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1989,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1977"}],"collection":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1977"}],"version-history":[{"count":39,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1977\/revisions"}],"predecessor-version":[{"id":2007,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1977\/revisions\/2007"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/1989"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}