[Problema] Java constantes

Iniciado por Senior++, 20 Abril 2012, 20:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Senior++

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:

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?
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Proteus1989

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

sapito169

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

Senior++

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
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

leogtz

Cita de: SixToex (Agares) 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

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

sapito169

#5
-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


package javaapplication7;

public class Apliacion {

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





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

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


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

visualfree

verifica lo siguiente:


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.

sapito169

#7
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


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());
}
}





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

Ricardo
50
50

visualfree

Uta sapito tenias que hacer pensar a SixToex