MAC Adressen Abfrage

Don_Beckmann

Mitglied
Hallo, was mache ich aktuell bei der Abfrage meiner MAC Adresse falsch bzw das er mir richtig ausgibt ob die MAC identisch ist. Aus meiner Sicht ist sie identisch

Code:
public static void main(String[] args){

    InetAddress ip;
    try {

        ip = InetAddress.getLocalHost();
       

        NetworkInterface network = NetworkInterface.getByInetAddress(ip);

        byte[] mac = network.getHardwareAddress();

       

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mac.length; i++) {
            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
        }
                System.out.println("MAC:"+sb.toString());
                if (sb.toString()=="78-E4-00-2F-65-7A") {
                    System.out.println("MAC Adresse Identisch");
                }
                else
                {
                    System.out.println("MAC ADRESSE FEHLERHAFT");
                }
               

    } catch (UnknownHostException e) {

        e.printStackTrace();

    } catch (SocketException e){

        e.printStackTrace();

    }

   }

er sagt sie ist dauerhaft falsch obwohl der sb.toString() richtig ausgegeben wird
 
Hi,
warum klappt der es wenn ich die ausgelesene Mac in eine Variable packe und alles in Klein- oder Großbuchstaben ändere und dann vergleiche ?
 
Die Frage sollte eigentlich lauten warum es funktioniert wenn du es änderst. == ist ein Referenzvergleich und sollte für Objekte (außer in Ausnahmefällen) gar nicht verwendet werden.
Ein wenig Hintergrund: Strings werden in einem Stringpool gehalten und wenn die JVM es für "richtig" hält, dann werden Strings "interned" und zentral gehalten. Dann kann sein das man wirklich "das Gleiche" Objekt zurückerhält und auf Gleichheit prüfen kann. Auf dieses Verhalten sollte man sich keinesfalls verlassen und deswegen equals verwenden!
 

Zurück
Oben