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