Урок 42: Метод equals() и String Pool. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Урок 42: Метод equals() и String Pool.



 

Метод equals() ДЛЯ СРАВНЕНИЯ Объктов.

 

 

public class Test {
public static void main(String[] args) {
   /*
   Примитивы сравниваются, как числа в арифметике.
   Но вместо "=", используем "==".
    */
  
int x = 1;
   int y = 1;
   System. out. print(" int x == int y: ");
   System. out. println(x == y);

   /*
   Сравниваем объекты класса Animal.
   Объекты НЕ сравниваются, как числа в арифметике.
    */
  
Animal animal1 = new Animal();
   Animal animal2 = new Animal();
   System. out. print("Animal animal1 == Animal animal2: ");
   System. out. println(animal1 == animal2);
   /*
   В результате получим
   Animal animal1 == Animal animal2: false.
   Потому что мы сравнили аббревиатуру ссылок animal1 и animal2,
   а не сами Объекты animal1 и animal2 (их информационное содержание).
    */
}
}

 

 

public class Animal {
}

 

 

Вывод в консоль:

 

int x == int y: true

Animal animal1 == Animal animal2: false

 

 

Создаем конструктор для класса Animal.

Объектам присваиваем РАВНЫЕ ЗНАЧЕНИЯ «1» И «1».

 

 

public class Test {
public static void main(String[] args) {
   /*
   Примитивы сравниваются, как числа в арифметике.
   Но вместо "=", используем "==".
    */
  
int x = 1;
   int y = 1;
   System. out. print("int x == int y: ");
   System. out. println(x == y);

   /*
   Сравниваем объекты класса Animal.
   Объекты НЕ сравниваются, как числа в арифметике.
    */
  
Animal animal1 = new Animal(1);
   Animal animal2 = new Animal(1);
   System. out. print("Animal animal1 = new Animal(1) == Animal animal2 = new Animal(1): ");
   System. out. println(animal1 == animal2);
   /*
   В результате получим
   Animal animal1 = new Animal(1) == Animal animal2 = new Animal(1): false.
   Потому что мы сравнили аббревиатуру ссылок animal1 и animal2,
   а не сами Объекты animal1 и animal2 (их информационное содержание).
    */
}
}

 

 

public class Animal {
private int id;

Animal(int v){
   id = v;
}
}

 

 

Вывод в консоль:

 

int x == int y: true

Animal animal1 = new Animal(1) == Animal animal2 = new Animal(1): false

 

 

Используем для сравнения метод equals.()

 

public class Test {
public static void main(String[] args) {
   /*
   Используем для сравнения метод equals.()
    */
  
Animal animal1 = new Animal(1);
   Animal animal2 = new Animal(1);
   System. out. print("animal1.equals(animal2): ");
   System. out. println(animal1.equals(animal2));
   /*
   В результате получим
   animal1.equals(animal2): false.
   Потому что мы ТАК ЖЕ сравнили аббревиатуру ссылок animal1 и animal2,
   а не сами Объекты animal1 и animal2 (их информационное содержание).
    */
}
}

 

 

public class Animal {
private int id;

Animal(int v){
   id = v;
}
}

 

 

Вывод в консоль:

 

animal1.equals(animal2): false

 

 

Сравниваем Объекты animal1 и animal2 СТРУКТУРНО (их информационное содержание).

Для этого переопределяем метод equals.()в квассе Animal

таким образом.

 

public boolean equals(Object obj) {
// Применяем ДаурКастинг.
Animal otherAnimal = (Animal) obj;
return id == otherAnimal. id;
}

 

 

public class Test {
public static void main(String[] args) {
   /*
   Используем для сравнения ПЕРЕОПРЕДЕЛЕННЫЙ метод equals.()
    */
  
Animal animal1 = new Animal(1);
   Animal animal2 = new Animal(1);
   System. out. print("animal1.equals(animal2): ");
   System. out. println(animal1.equals(animal2));
   /*
В результате получим animal1." ПЕРЕОПРЕДЕЛЕННЫЙ "equals(animal2): true.
Потому что мы ТАК ЖЕ сравнили СТРУКТУРНО сами Объекты animal1 и animal2 (их информационное содержание).
*/


}
}

 

 

public class Animal {
private int id;

Animal(int v){
   id = v;
}

public boolean equals(Object obj) {
   // Применяем ДаурКастинг.
  
Animal otherAnimal = (Animal) obj;
   return id == otherAnimal. id;
}
}

 

 

Вывод в консоль:

 

animal1.equals(animal2): true

 

 

Метод equals() ДЛЯ СРАВНЕНИЯ Строк (String).

!!!Напомню, что String тоже Объект.

 

 

public class Test {
public static void main(String[] args) {
   /*
   Метод equals() ДЛЯ СРАВНЕНИЯ Строк (String).
  !!!String тоже Объект.
   String string2 = new String("Hello");
    */

   String string2 = new String("Hello");
   String string3 = new String("Hello");

   System. out. print("String string2 = new String(\" Hello \") == String string3 = new String(\" Hello \"): ");
   System. out. println(string2 == string3);

   System. out. print("string2.equals(string3): ");
   System. out. println(string2.equals(string3));

   System. out. println();
  
   /*
   Из - за наличия в Java String Pool
  !!! ЗАПРЕЩЕНО СРАВНИВАТЬ String КАК ПРИМИТИВЫ!!!
  !!! string5 == string6!!!
   РАЗНЫЕ ОБЪЕКТЫ string5 И string6 ИМЕЮТ ОДИНАКОВЫЙ ТЕКСТ "Hello"

  (String Pool).
   ПОЭТОМУ ОНИ ССЫЛАЮТСЯ НА ОДИН И ТОТ ЖЕ ТЕКСТ "Hello".
   И ИМЕЮТ ОДИНАКОВЫЕ ССЫЛКИ (ОДИНАКОВУЮ АББРЕВИАТУРУ ССЫЛОК).
    */
  
String string5 = "Hello";
   String string6 = "Hello";

   System. out. print("String string5 = \" Hello \" == String string6 = \" Hello \": ");
   System. out. println(string5 == string6);

   System. out. print("string5.equals(string6): ");
   System. out. println(string5.equals(string6));
}
}

 

 

Вывод в консоль:

 

String string2 = new String("Hello") == String string3 = new String("Hello"): false

string2.equals(string3): true

 

String string5 = "Hello" == String string6 = "Hello": true

string5.equals(string6): true

 

 

Урок 43: Вложенные классы.

 

 

Существует ТРИ вида ВЛОЖЕННЫХ классов.

 

1. ВЛОЖЕННЫЙ неСТАТИЧЕСКИЙ private КЛАСС Motor.
Он имеет доступ к полям КЛАССА Electrocar.

2. ВЛОЖЕННЫЙ СТАТИЧЕСКИЙ public КЛАСС Battery.
Он НЕ имеет доступ к полям КЛАССА Electrocar.
Он имеет доступ только к статическим полям КЛАССА Electrocar.

3. ВЛОЖЕННЫЙ КЛАСС в МЕТОД start.
Он имеет доступ к НЕстатическим полям КЛАССА Electrocar.
Он имеет доступ ТОЛЬКО к КОНСТАНТНЫМ (final) полям МЕТОДА start.

 

public class Test {
public static void main(String[] args) {
   Electrocar electrocar = new Electrocar(1);
   electrocar.start();

   Electrocar.Battery battery = new Electrocar.Battery();
}
}

 

 

public class Electrocar {
private int id;
/*
ВЛОЖЕННЫЙ неСТАТИЧЕСКИЙ private КЛАСС Motor.
Он имеет доступ к полям КЛАССА Electrocar.
*/
private class Motor{
   public void startMotor() {
       System. out. println("Motor " + id + " is starting...");
   }
}

/*
ВЛОЖЕННЫЙ СТАТИЧЕСКИЙ public КЛАСС Battery.
Он НЕ имеет доступ к полям КЛАССА Electrocar.
Он имеет доступ только к статическим полям КЛАССА Electrocar.
*/
public static class Battery {
    public void charge(){
        System. out. println("Battery is charging...");
    }
}

public Electrocar (int id){
   this. id = id;
}

public void start(){
   Motor motor = new Motor();
   motor.startMotor();

   final int x = 1;

   /*
   ВЛОЖЕННЫЙ КЛАСС в МЕТОДА start.
   Он имеет доступ к НЕстатическим полям КЛАССА Electrocar.
   Он имеет доступ ТОЛЬКО к КОНСТАНТНЫМ (final) полям МЕТОДА start.
    */
  
class SomeClass{
       public void someClass(){
           System. out. println(id);
           System. out. println(x);
       }
   }
   System. out. println("Electrocar " + id + " is started...");
}
}

 

 

Вывод в консоль:

 

 

Motor 1 is starting...

Electrocar 1 is started...

 

 

Урок 44: Запись в файл.

Запись только текстовой информации (НЕ БАЙТОВОЙ!!! - НЕ Сериализация: Объекты классов, музыка, и пр.).

 

Создаем в корне проекта текстовый файл."testFile".

 

 

 

 

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class WriteToFile {
public static void main(String[] args) throws FileNotFoundException {
   File file = new File ("testFile");
   PrintWriter pw = new PrintWriter (file);

   /*
   Для записи Текста в файл используем похожий на
   метод "System.out.println (System.in);".
   В аргументах метода указываем Место (Система - Консоль), куда мы         хотим вывести инфотмацию.

   Метод "pw.println (file);".
   В аргументах метода указываем Текст, который мы хотим поместить в         Файл (testFile.txt).
    */
  
pw.println ("Test row 1");
   pw.println ("Test row 2");
   /*
  !!! ОБЯЗАТЕЛЬНО ЗАКРЫТЬ ПОТОК!!!
    */
  
pw.close ();
}
}

Вывод в Файл:

 

 



Поделиться:


Последнее изменение этой страницы: 2020-12-17; просмотров: 79; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.12.172 (0.013 с.)