Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Senior++ en 20 Abril 2012, 20:21 pm



Título: [Problema] Java constantes
Publicado por: Senior++ en 20 Abril 2012, 20:21 pm
Bueno las constante en Java no existen pero hay una forma de utilizarlas...

Bueno en el curso donde me lo explica me dice lo siguiente.

1.Nombres constantes en mayúsculas
2. Debemos usar también modificadores: final y static.

final: No puede ser cambiado en el programa.
static: lo convierte en constante de clase

Ejemplos:
Código:
final int PRIMA = 12000;
static final float PI = 3.1416;

Bueno lo que no entiendo es lo de convierte en constante la clase? o mejor dicho ¿Que es constantes de clase?

Alguien me puede explicar algo mas detallado esto?


Título: Re: [Problema] Java constantes
Publicado por: Proteus1989 en 21 Abril 2012, 02:55 am
De clase significa que está declarado e inicializado únicamente dentro de la clase en la que se define.


Que alguien me corrija si me equivoco


Título: Re: [Problema] Java constantes
Publicado por: sapito169 en 21 Abril 2012, 04:13 am
eso quiere decir que para todo tu sistema va a existir una solo variable PI no una ni dos ni 3 solo una variable pi

digamos que tienes un objeto Persona y tiene una variable global edad si no es estatica todas las personas tendrian edades diferentes es decir que puedes crear el objeto panchito de tipo Persona con edad de 15 y tambien el objeto juancito con edad 17 cada persona tiene su edad independiente es decir en el programa estarian en memoria varias edades pero si pones edad como static existiria una sola edad para todo el sistema es decir que si pones edad =14 con static todas las personas tendrian 14 no importa si crees a panchito o a juancito ambos siempre tendran la misma edad


Título: Re: [Problema] Java constantes
Publicado por: Senior++ en 21 Abril 2012, 10:55 am
A ver si entendí... por ejemplo imaginaros yo tengo 3 variables


static final int elhacker= 350
int Sixtoex
int elquesea



¿Tendría el mismo valor ¿? Sixtoex y elquesea el valor 350?


Saludos


Título: Re: [Problema] Java constantes
Publicado por: leogtz en 22 Abril 2012, 02:03 am
A ver si entendí... por ejemplo imaginaros yo tengo 3 variables


static final int elhacker= 350
int Sixtoex
int elquesea



¿Tendría el mismo valor ¿? Sixtoex y elquesea el valor 350?


Saludos

Mira, las constantes en Java, se definen como:

static final tipo ID = valor....

Se les llama miembros de clase, ¿por qué? porque son miembros de las clases y no de los objetos.

Si creas objetos de la clase, cada objeto tendrá el mismo valor (son estáticas y final), y lo más importante de este concepto es que solo habrá una sola constante para todos, ¿por qué? porque es un miembro de clase estático, le pertenece a la clase.


Título: Re: [Problema] Java constantes
Publicado por: sapito169 en 22 Abril 2012, 04:29 am
-pon la clase completa
-uu en primer lugar pon nombres logicos y ejemplos concretos por que asi es mas facil

-noo elhacker sixtoex elquesea(aparte te tener nombres horribles) no tendrian el mismo valor la palabra static solo afecta a elHacker

un ejemplo

Código:
package javaapplication7;

public class Apliacion {

    static String CREADOR="M$crosoft el lado oscuro $$$";
}



Código:
public class Main {

    public static void main(String[] args) {
        Apliacion excel=new Apliacion();
        Apliacion powerPoint=new Apliacion();
        Apliacion word=new Apliacion();
        System.out.println(Apliacion.CREADOR);
        System.out.println(powerPoint.CREADOR);
        System.out.println(word.CREADOR);
    }  
}

me imprime
Código:
M$crosoft el lado oscuro $$$
M$crosoft el lado oscuro $$$
M$crosoft el lado oscuro $$$

y el ide me dice "sapo bruto no se supone que debas programar asi mira la linea 10 y 11 estas imprimiendo una variable static usando un objeto"


y si pongo algo como esto

Código:
public static void main(String[] args) {
        Apliacion excel=new Apliacion();
        Apliacion powerPoint=new Apliacion();
        Apliacion word=new Apliacion();
        powerPoint.CREADOR="Sapo corporation made in wilson peru";
        System.out.println(Apliacion.CREADOR);
        System.out.println(powerPoint.CREADOR);
        System.out.println(word.CREADOR);
    }


y me resalta que no es logico lo que puse en la linea 8 por que estoy intentando ponerle un creador a powerpoint pero eso no tiene sentido por que le pongo el creador a la clase Apliacion y no al objeto power point


Título: Re: [Problema] Java constantes
Publicado por: visualfree en 22 Abril 2012, 20:53 pm
verifica lo siguiente:

Código:
class Prueba{
        public static void main(String[] args)
        {
                Persona p=new Persona();
                p.setNombre("Ricardo");
                System.out.println(""+p.getNombre());
                System.out.println(""+p.getEdad());
        }
}
class Persona{
        private static int  EDAD=30;
        private String nombre;
        public void setNombre(String nombre)
        {
                this.nombre=nombre;
        }
        public String getNombre()
        {
                return nombre;
        }
        public int getEdad()
        {
                return EDAD;
        }
}

Si te fijas todas las instancias de la clase persona que pueda crear tendran siempre la
misma edad...

Ahora te pregunto yo a ti Puedo crear un metodo que me permita cambiar el valor static
de una variable... espero me respondas asi continuamos con la explicacion.


Título: Re: [Problema] Java constantes
Publicado por: sapito169 en 22 Abril 2012, 21:10 pm
si puedes crear un metodo que le cambie el valor static para cambiar la edad pero una ves que le cambies la edad a una persona el resto de las personas tambien tendran la misma edad

static es por clase no por objeto

Código:
class Prueba {
public static void main(String[] args) {
Persona p = new Persona();
p.setNombre("Ricardo");
p.setEdad(50);
Persona pancho = new Persona();
pancho.setNombre("pancho");
System.out.println("" + p.getNombre());
System.out.println("" + p.getEdad());
System.out.println(pancho.getEdad());
}
}


Código:

class Persona {
private static int EDAD = 30;
private String nombre;

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getNombre() {
return nombre;
}

public int getEdad() {
return EDAD;
}
public void setEdad(int edad) {
EDAD = edad;
}
}
y la respuesta seria
Código:
Ricardo
50
50


Título: Re: [Problema] Java constantes
Publicado por: visualfree en 23 Abril 2012, 04:22 am
Uta sapito tenias que hacer pensar a SixToex