java tutorial - Сравнение и сортировка в Java - учебник java - java programming - учиться java - java basics - java for beginners
1- Примитивные и ссылочные типы в Java.
- Для начала, нам нужно уметь различать примитивный вид Primitive type) и ссылочный вид (reference type) в java.
- В Java имеется 8 видов примитива.
2- Как примитивный вид хранит в памяти
- Для начала, вам нужно понять, что Java не гарантирует, что каждая переменная будет соответствовать позиции в памяти, например Java будет оптимизировать методом 'i' который будет сохранен в register, или даже может нигде не будет сохранен, если компилятор видит, что вы никогда не пользуетесь его значением, или он может отследить через код и использовать соответствующие значения напрямую.
- Посмотрите код:
- Тогда Java выполняет следующие действия:
java - джава - учиться java - учебник java -
java действий
- примеры java - java-программы
3- Как ссылочный вид хранит в памяти
- Когда вы видите оператор new (Например new Object()), Java создает новый объект в памяти. Вы объявляете переменную и инициализируете его значение через оператор new, напрмимер Object a = new Object(); Java создает новый объект в памяти, и ссылку 'a' указывающую на место памяти только что созданного объекта.
- Когда вы объявляете переменную b Object b = a; никакой объект не создается в паияти, Java создает только ссылку 'b', указывающую на то же место куда указывает 'a'.
java - джава - учиться java - учебник java -
новый вариант действий java
- примеры java - java-программы
4- Сравнения в Java
- В Java есть 2 вида сравнения:
- Использование оператора ==
- Использование метода (method) equals(..)
- Оператор == используется для сравнения примитивных и ссылочных видов.
- Оператор equals(..) это метод, использующийся только для ссылочных видов.
5- Сравнение примитивных видов
- С примитивным видом у нас есть только единственный способ сравнения используя оператор ==, примитивные виды сравниваются друг с другом через их значения.
java - джава - учиться java - учебник java -
Java новый вариант действий логическое
- примеры java - java-программы
6- Сравнение ссылочных видов
6.1- Использовать оператор == для сравнения видов ссылок
- Когда вы сравниваете 2 объекта ссылки по оператору ==, значит сравнение позиций куда указывают 2 объекта ссылки. На самом деле это проверка, указывают ли эти 2 ссылки на один объект в памяти или нет.
- Смотрите пример:
ReferenceEeDemo.java
- Результат запуска программы:
java - джава - учиться java - учебник java -
ee сравнение демо
- примеры java - java-программы
6.2- Использовать equals(..) для сравнения видов ссылок
StringComparationDemo.java
- Результаты запуска программы:
6.3- Переопределить метод equals(Object)
- Метод equals(Object) это метод имеющийся в class Object, каждый подкласс наследует этот метод. В некоторых случая вы можете переопределить этот метод в подклассах.
NumberOfMedals.java ?
NumberOfMedalsComparationDemo.java
java - джава - учиться java - учебник java -
нет демо сравнения
- примеры java - java-программы
7- Пример распорядка массива String
- String это класс, объекты которого могут сравниваться друг с другом по правилам букв. Следующий пример иллюстрирует как рассположить массив String используя утилитарные методы имеющиеся в Java.
StringArraySortingDemo.java
- Результаты запуска примера:
java - джава - учиться java - учебник java -
Строка сортировки демо массиве
- примеры java - java-программы
8- Объекты, которые могут сравниваться друг с другом (Comparable)
Actor.java
ActorSortingDemo.java
- Результаты запуска примера:
java - джава - учиться java - учебник java -
актер сортировки демо
- примеры java - java-программы
- Использовать Arrays.sort(Object[]) чтобы расставить пример выше:
ActorSortingDemo2.java
9- Упорядочить список (List)
- Вы можете посмотреть так же статью Java Collection Framework по ссылке:
ListSortingDemo.java
10- Упорядочить использование компаратора (Comparator)
- В примерах выше, мы расставляли массив или список. Сами элементы имеют возможность сравниваться друг с другом (Из-за применения interface Comparable). Вопрос в том, что можно ли расставить объекты, с классами не применяющими interface Comparable.В данном случае вам нужно предоставить компаратор ( Comparator). Это правила для расстановки объектов.
Person.java
PersonComparator.java
ComparatorSortingDemo.java
- Результаты запуска примера: