elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  duda basica seguramente en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda basica seguramente en java  (Leído 4,377 veces)
arts

Desconectado Desconectado

Mensajes: 103


Ver Perfil
duda basica seguramente en java
« en: 10 Octubre 2013, 17:01 pm »

He visto en algunos ejemplos de java algo que me ha sonado a chino, el problema es que me viene solo esto y no me explica nada más. Y no veo de que forma puede usarse el ejemplo es decir, simplemente me pone los comentarios y ahí se termina todo, no avanza para ver como se usa.

Precio [] catalogo; // Creacion de la referencia
catalogo = new Precio [5]; // Creación del array de referencias
catalogo[0] = new Precio();

¿ Para que se usa una instancia de una clase del tipo Array?, y como se usa ?. Haber algún iluminado que me alumbre que no le veo sentido, principalmente porque como no continua no puedo ni imaginarme para que se usa.

Un saludo y gracias  :)


« Última modificación: 10 Octubre 2013, 21:32 pm por arts » En línea

Fakedo0r

Desconectado Desconectado

Mensajes: 21


Fuera de compás, en una de las 12 dimensiones...


Ver Perfil WWW
Re: duda basica seguramente en java
« Respuesta #1 en: 11 Octubre 2013, 13:38 pm »

Es un Array de una clase llamada Precio. Supongo que sabes que normalmente las clases se instancian. Entonces simplemente lo que hace es acceder al primer objeto del array y luego instanciarlo.

Esto:

Código
  1. catalogo[0] = new Precio(); // Instancia de la clase

Es equivalente a:

Código
  1. Precio cPrecio = new Precio(); // Instancia de la clase


En línea

arts

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: duda basica seguramente en java
« Respuesta #2 en: 23 Octubre 2013, 01:25 am »

Es decir: ¿ en el primero metes en la posición 0 del array catalogo un constructor de la clase Precio vacío de forma temporal y para acceder a algún método de Precio valdría con poner por ejemplo catalogo[0].dameSalario(); ?

Y el segundo simplemente es una instancia cPrecio de la clase Precio ? con el que puedo hacer perfectamente cPrecio.dameSalario();
« Última modificación: 23 Octubre 2013, 01:34 am por arts » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: duda basica seguramente en java
« Respuesta #3 en: 23 Octubre 2013, 01:51 am »

Un array puedes declararlo de tipos de datos y de objetos. Por lo que cuando haces:

Código
  1. Libreria[] libro = new Libreria[10];
  2.  

Lo que estás haciendo es crear un array tipo Libreria con 10 objetos Libreria dentro.

Si bien esos elementos están creados, no están instanciados. Por lo que son de tipo Librería, tienen que instanciarse para poder usarse.

Código
  1. Libreria[0] = new Libreria(); // El primer objeto ya está instanciado. Los demás aun no.
  2.  

Ahora, como hemos instanciado el primer objeto del arreglo tipo Libreria, podemos acceder a sus metodos y variables (en caso tuviera).

Código
  1. libro[0].registrarLibro("Lo que el viento se llevo"); // llama a un metodo de la clase Librera llamado registraLibro.
  2.  

Si quieres llamar a un método ni bien instancias el objeto, puedes hacer lo siguiente:

Código
  1. libro[0] = new Libreria().registrarLibro("Lo que el viento se llevo");
  2.  



Saludos.
« Última modificación: 24 Octubre 2013, 03:19 am por NullPointerEx » En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: duda basica seguramente en java
« Respuesta #4 en: 23 Octubre 2013, 16:45 pm »

Estimado:

Te dejo un ejemplo sencillo.

Código:
import java.util.*;
class Promedio{
        public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                int[] nota=new int[7];//nota va a ser la "variable instacia" del arreglo de enteros de 0 a 7
                int suma=0;
                int promedio=0;
                for(int i=0;i<7;i++){//vuelta 7 veces de 0 a 6
                        System.out.println("Ingresar nota:"+i);
                        nota[i]=in.nextInt();//Llenamos tu arreglo
                        //Almacenamos valor en pos i del arreglo nota.
                        suma=suma+nota[i];
                }
                promedio=suma/7;
                System.out.println("El promedio de enteros es:"+promedio);

        }
}

Atento a tus comentarios.

Saluda Atte.
En línea

arts

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: duda basica seguramente en java
« Respuesta #5 en: 24 Octubre 2013, 01:04 am »

Estimado:

Te dejo un ejemplo sencillo.

Código:
import java.util.*;
class Promedio{
        public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                int[] nota=new int[7];//nota va a ser la "variable instacia" del arreglo de enteros de 0 a 7
                int suma=0;
                int promedio=0;
                for(int i=0;i<7;i++){//vuelta 7 veces de 0 a 6
                        System.out.println("Ingresar nota:"+i);
                        nota[i]=in.nextInt();//Llenamos tu arreglo
                        //Almacenamos valor en pos i del arreglo nota.
                        suma=suma+nota[i];
                }
                promedio=suma/7;
                System.out.println("El promedio de enteros es:"+promedio);

        }
}

Atento a tus comentarios.

Saluda Atte.

Ese ejemplo lo entiendo, sin embargo lo entiendo porque hace la instancia sin mas y usa el nombre de la instancia para acceder al array recorrerlo llenarlo y hacer la media.
Sin embargo en el ejemplo anterior de Libros primero se crea el array de 10 elementos con el nombre libro. Y después hace librería[0] = new Libreria(); cuando yo habría hecho como tu en el ejemplo, habría usado libro[0] = new librería(), sin embargo el usa todo el rato libro y es lo que me confunde.  :/
« Última modificación: 24 Octubre 2013, 01:18 am por arts » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: duda basica seguramente en java
« Respuesta #6 en: 24 Octubre 2013, 03:27 am »

Trata de comprender 2 cosas.

Crear un objeto es muy diferente a INSTANCIAR.

Cuando tu creas un objeto y no lo instancias, ese objeto tiene el valor Null, por que no apunta a nada.  Ese objeto tienes que instanciarlo para que pueda usar sus métodos. Un objeto no es más que una referencia de una clase en particular.

Así, si hacemos lo del ejemplo anterior:

Código
  1. Libreria[] libro = new Libreria[10];
  2.  

Estamos creando solamente diez referencias de la clase Librería. Si ahora tratáramos de hacer esto:

Código
  1. libro[0].registrarLibro("Lo que el viento se llevo");
  2.  

Te dará un hermoso NullPointerException. ¿Por qué? Sencillamente porque NO HEMOS INSTANCIADOS LAS REFERENCIAS U OBJETOS, como quieras llamarle. Todo objeto en Java necesita ser instanciado, de lo contrario, el objeto será prácticamente inexistente e inútil.


Saludos.
« Última modificación: 24 Octubre 2013, 05:03 am por NullPointerException » En línea

arts

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: duda basica seguramente en java
« Respuesta #7 en: 24 Octubre 2013, 16:30 pm »

Vale ya lo pillo. Ya se como va gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una duda de casi todos seguramente
Programación Visual Basic
IvanUgu 2 1,922 Último mensaje 24 Julio 2005, 18:58 pm
por kakinets
duda basica de programacion en java
Java
MlcR0 4 3,303 Último mensaje 19 Diciembre 2006, 00:34 am
por MlcR0
Duda basica java
Java
gxg 3 4,198 Último mensaje 16 Marzo 2011, 02:09 am
por sapito169
Creación de una pila básica en Java
Java
madpitbull_99 4 21,702 Último mensaje 17 Octubre 2011, 07:50 am
por s00rk
Duda basica java web con Spring framework
Java
alfrosende 0 2,071 Último mensaje 14 Mayo 2017, 16:48 pm
por alfrosende
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines