Porównywanie referencji

/*
PorownywanieNapisow1.java

Zmienne referencyjne są sobie równe wtedy i tylko wtedy,
gdy przechowują referencje do tego samego obiektu.

Jeśli w programie utworzymy w sposób niejawny obiekty
tekstowe, które przechowują takie same ciągi znaków a
referencje do tych obiektów przypiszemy do różnych
zmiennych, to kompilator dokona optymalizacji i utworzy
tylko jeden taki obiekt tekstowy.

Aby sprawdzić, czy obiekty tekstowe przechowują takie same
ciągi znaków należy wykorzystać metodę obiektową equals.
Operatorów == lub != nie można zastosować do tego celu,
gdyż porównują one referencje do obiektów a nie obiekty.
*/

public class PorownywanieNapisow1
{
  public static void main(String[] args)
  {
    String tekst1 = "Napis 1.";
    String tekst2 = "Napis 1.";
    
    if (tekst1 == tekst2)
      System.out.println("Utworzono jeden obiekt tekstowy.");
    else
      System.out.println("Utworzono dwa obiekty tekstowe.");
      
    if (tekst1.equals(tekst2))
      System.out.println("Napisy sa takie same.");
    else
      System.out.println("Napisy sa rozne.");
  }
}
Utworzono jeden obiekt tekstowy.
Napisy sa takie same.
Press any key to continue...
/* PorownywanieNapisow2.java */

public class PorownywanieNapisow2
{
  public static void main(String[] args)
  {
    String tekst1 = new String("Napis 1.");
    String tekst2 = new String("Napis 1.");

    if (tekst1 == tekst2)
      System.out.println("Utworzono jeden obiekt tekstowy.");
    else
      System.out.println("Utworzono dwa obiekty tekstowe.");

    if (tekst1.equals(tekst2))
      System.out.println("Napisy sa takie same.");
    else
      System.out.println("Napisy sa rozne.");
  }
}
Utworzono dwa obiekty tekstowe.
Napisy sa takie same.
Press any key to continue...
/* PorownywanieNapisow3.java */

public class PorownywanieNapisow3
{
  public static void main(String[] args)
  {
    String tekst1 = new String("Napis 1.");
    String tekst2 = new String("Napis 2.");
    
    if (tekst1 == tekst2)
      System.out.println("Utworzono jeden obiekt tekstowy.");
    else
      System.out.println("Utworzono dwa obiekty tekstowe.");
      
    if (tekst1.equals(tekst2))
      System.out.println("Napisy sa takie same.");
    else
      System.out.println("Napisy sa rozne.");
  }
}
Utworzono dwa obiekty tekstowe.
Napisy sa rozne.
Press any key to continue...
/* PorownywanieObiektow1.java */

public class PorownywanieObiektow1
{
  public static void main(String[] args)
  {
    Prostokat pr1 = new Prostokat(4,5);
    Prostokat pr2 = new Prostokat(4,5);
    
    if (pr1 != pr2)
      System.out.println("Utworzono dwa prostokaty.");
    else
      System.out.println("Utworzono jeden prostokat.");
    
    if (pr1.equals(pr2))
      System.out.println("Prostokaty sa takie same.");
    else
      System.out.println("Prostokaty sa rozne.");
  }
}

class Prostokat
{
  int a;
  int b;
  
  Prostokat(int a, int b)
  {
    this.a = a;
    this.b = b;
  }
}
Utworzono dwa prostokaty.
Prostokaty sa rozne.
Press any key to continue...
/* PorownywanieObiektow2.java */

public class PorownywanieObiektow2
{
  public static void main(String[] args)
  {
    Prostokat pr1 = new Prostokat(4,5);
    Prostokat pr2 = new Prostokat(4,5);
    
    if (pr1 != pr2)
      System.out.println("Utworzono dwa prostokaty.");
    else
      System.out.println("Utworzono jeden prostokat.");
    
    if (pr1.equals(pr2))
      System.out.println("Prostokaty sa takie same.");
    else
      System.out.println("Prostokaty sa rozne.");
  }
}

class Prostokat
{
  int a;
  int b;
  
  public boolean equals(Object obj) // przesłaniamy metodę z klasy Object
  {
    if (obj instanceof Prostokat)
      return ((Prostokat)obj).a == a && ((Prostokat)obj).b == b;
    else
      return false;
  } 
  
  Prostokat(int a, int b)
  {
    this.a = a;
    this.b = b;
  }
}
Utworzono dwa prostokaty.
Prostokaty sa takie same.
Press any key to continue...
/* PorownywanieObiektow3.java */

public class PorownywanieObiektow3
{
  public static void main(String[] args)
  {
    Prostokat pr1 = new Prostokat(4,5);
    Prostokat pr2 = new Prostokat(5,6);
    
    if (pr1 != pr2)
      System.out.println("Utworzono dwa prostokaty.");
    else
      System.out.println("Utworzono jeden prostokat.");
    
    if (pr1.equals(pr2))
      System.out.println("Prostokaty sa takie same.");
    else
      System.out.println("Prostokaty sa rozne.");
  }
}

class Prostokat
{
  int a;
  int b;
  
  public boolean equals(Object obj) // przesłaniamy metodę z klasy Object
  {
    if (obj instanceof Prostokat)
      return ((Prostokat)obj).a == a && ((Prostokat)obj).b == b;
    else
      return false;
  } 
  
  Prostokat(int a, int b)
  {
    this.a = a;
    this.b = b;
  }
}
Utworzono dwa prostokaty.
Prostokaty sa rozne.
Press any key to continue...

Strona główna