"clases" de cultura :-D

Pues emocionado y publicando mis pueriles testeos que hago para agarrarle a Java

public class nombreMatematicos {
    // Las variables, para que las pueda usar otra clase, deben ser públicas
    public static String nombre1="David Hilbert";
    public static String nombre2="Bertrand Russell";
    public static String nombre3="Jhon Nash";
    public static String nombre4="Stephen Hawking";
}
public class seleccionaNombreMatematico {
    public static void main (String[] args){
        // Declaro una variable del mismo tipo que las de la clase anterior y le asigno el valor de las variables de la clase anterior también (esto se hace con el nombre de la clase anterior, un punto, y el nombre de la variable que desee de esta clase).
        String nombreSeleccionado = nombreMatematicos.nombre1;// Aquí nombre2 o nombre3 o nombre4
        if (nombreSeleccionado != "Stephen Hawking")
            System.out.println(nombreSeleccionado);
            else{
            System.out.println(nombreSeleccionado+" no es matemático sino físico teórico");
            }
        }
    }
Dice un axioma: poco a poco se va lejos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

cuidado

esa comparación solamente funciona porque nombreSeleccionado apunta a una constante y lo estás comparando contra una cadena en código duro; en tiempo de ejecución, esa cadena y la que asignas a nombre4 serán la misma. Pero para comparar igualdad entre cadenas, y entre objetos en general, debes usar el método equals; la comparación con == o != solamente funciona con tipos nativos (int, char, etc) y cuando quieres asegurarte que dos variables apuntan al mismo objeto en memoria (comparación de identidad).

Imagen de Eddy Sánchez

Esa info que das @ezamudio es

Esa info que das @ezamudio es muy apreciada por un servidor...
Saludos

Imagen de bferro

No es constante

nombreSeleccionado no apunta a un constante, apunta a un objeto String y la clase String es inmutable. No existe en Java un keyword que prohíba al diseñador de una clase escribir métodos que modifiquen los atributos, como es el caso de C++. Hay una diferencia muy sutil entre un objeto inmutable y un objeto constante.

Imagen de Eddy Sánchez

Investigando sobre un objeto

Investigando sobre

un objeto inmutable y un objeto constante.

Saludos @bferro

Y a una literal de string si

Y a una literal de string ( que eso es lo que es ) si me permiten agregar

Je je je

:)

Por cierto, es idiomático en Java escribir el nombre de las clases empezando con mayúscula, poner siemre las llaves a los ifs y en resúmen yo escribiría así ( sin meterle mucho coco a la limpieza )

public class NombreMatematicos {
    // Los atributos de clase, para que las pueda usar otra clase, deben ser públicas
    public static final String nombre1 = "David Hilbert";
    public static final String nombre2 = "Bertrand Russell";
    public static final String nombre3 = "Jhon Nash";
    public static final String nombre4 = "Stephen Hawking";
}
...
public class SeleccionaNombreMatematico {
    public static void main (String[] args){
        // Declaro una variable del mismo tipo que las de la clase anterior y le asigno el
        // valor de las variables de la clase anterior también (esto se hace con el nombre
        // de la clase anterior, un punto, y el nombre de la variable que desee de esta clase).

        String nombreSeleccionado = NombreMatematicos.nombre1;// Aquí nombre2 o nombre3 o nombre4
        if (nombreSeleccionado != "Stephen Hawking") {
            System.out.println(nombreSeleccionado);
        } else {
            System.out.println(nombreSeleccionado+" no es matemático sino físico teórico");
       }
    }
 }

Por cierto, bienvenido a Java :)

Imagen de beto.bateria

Una idea.

Aqui pongo algo de codigo, espero que pueda dar ideas:

public interface DTO {

        public static final int Mathematical = 0;
        public static final int TheoreticalPhysicist = 1;

        public int getTypeScientific();
}

public class Mathematical implements DTO {
       
        public int getTypeScientific(){
                return DTO.Mathematical;
        }
}

public class TheoreticalPhysicist implements DTO {
       
        public int getTypeScientific(){
                return DTO.TheoreticalPhysicist;
        }

}

//En alguna clase perteneciente
//al controlador o al modelo
public void process(DTO dto){

        switch(dto.getTypeScientific()){
                case DTO.Mathematical:
                // Aqui hace algo
                break;
                case DTO.TheoreticalPhysicist:
                // Aqui hace algo
                break;
        }
}

Imagen de Eddy Sánchez

Saludos @OscarRyz y

Saludos @OscarRyz y @beto.bateria...