├── .github └── workflows │ └── gradle.yml ├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── gradle.xml ├── java-for-beginner.iml ├── libraries │ ├── Gradle__junit_junit_4_12.xml │ └── Gradle__org_hamcrest_hamcrest_core_1_3.xml ├── misc.xml ├── modules.xml ├── modules │ ├── java-for-beginner-example.iml │ ├── java-for-beginner-example.main.iml │ └── java-for-beginner-example.test.iml └── vcs.xml ├── README.md ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── java-for-beginner-example ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ └── main │ └── java │ ├── StartPoint.java │ ├── actor │ └── Person.java │ ├── animal │ ├── Animal.java │ ├── Cat.java │ ├── Dog.java │ ├── Sheep.java │ └── Tiger.java │ ├── lesson │ ├── AbstractClassLesson.java │ ├── ArrayListLesson.java │ ├── CheckBoolean.java │ ├── ClassLesson.java │ ├── ConstructorLesson.java │ ├── EqualsHashCodeLesson.java │ ├── EqualsLesson.java │ ├── HashSetLesson.java │ ├── InheritLesson.java │ ├── InstanceIntroLesson.java │ ├── InterfaceLesson.java │ ├── Lesson.java │ ├── ListLesson.java │ ├── NullLesson.java │ ├── SetLesson.java │ ├── TryCatchLesson.java │ └── git │ │ └── ForkLesson.java │ └── object │ ├── City.java │ ├── House.java │ ├── MoveObject.java │ ├── Street.java │ └── transport │ ├── Boat.java │ ├── Car.java │ ├── EngineVehicle.java │ ├── Plane.java │ └── SaleObject.java └── settings.gradle /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Gradle 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle 3 | 4 | name: Java CI with Gradle 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 1.8 20 | uses: actions/setup-java@v1 21 | with: 22 | java-version: 1.8 23 | - name: Grant execute permission for gradlew 24 | run: chmod +x gradlew 25 | - name: Build with Gradle 26 | run: ./gradlew build 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 2 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 3 | 4 | # User-specific stuff 5 | .idea/**/workspace.xml 6 | .idea/**/tasks.xml 7 | .idea/**/usage.statistics.xml 8 | .idea/**/dictionaries 9 | .idea/**/shelf 10 | 11 | # Generated files 12 | .idea/**/contentModel.xml 13 | 14 | # Sensitive or high-churn files 15 | .idea/**/dataSources/ 16 | .idea/**/dataSources.ids 17 | .idea/**/dataSources.local.xml 18 | .idea/**/sqlDataSources.xml 19 | .idea/**/dynamic.xml 20 | .idea/**/uiDesigner.xml 21 | .idea/**/dbnavigator.xml 22 | 23 | # Gradle 24 | .idea/**/gradle.xml 25 | .idea/**/libraries 26 | 27 | # Gradle and Maven with auto-import 28 | # When using Gradle or Maven with auto-import, you should exclude module files, 29 | # since they will be recreated, and may cause churn. Uncomment if using 30 | # auto-import. 31 | # .idea/artifacts 32 | # .idea/compiler.xml 33 | # .idea/jarRepositories.xml 34 | # .idea/modules.xml 35 | # .idea/*.iml 36 | # .idea/modules 37 | # *.iml 38 | # *.ipr 39 | 40 | # CMake 41 | cmake-build-*/ 42 | 43 | # Mongo Explorer plugin 44 | .idea/**/mongoSettings.xml 45 | 46 | # File-based project format 47 | *.iws 48 | 49 | # IntelliJ 50 | out/ 51 | 52 | # mpeltonen/sbt-idea plugin 53 | .idea_modules/ 54 | 55 | # JIRA plugin 56 | atlassian-ide-plugin.xml 57 | 58 | # Cursive Clojure plugin 59 | .idea/replstate.xml 60 | 61 | # Crashlytics plugin (for Android Studio and IntelliJ) 62 | com_crashlytics_export_strings.xml 63 | crashlytics.properties 64 | crashlytics-build.properties 65 | fabric.properties 66 | 67 | # Editor-based Rest Client 68 | .idea/httpRequests 69 | 70 | # Android studio 3.1+ serialized cache file 71 | .idea/caches/build_file_checksums.ser 72 | 73 | .gradle 74 | /build/ 75 | 76 | # Ignore Gradle GUI config 77 | gradle-app.setting 78 | 79 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) 80 | !gradle-wrapper.jar 81 | 82 | # Cache of project 83 | .gradletasknamecache 84 | 85 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 86 | # gradle/wrapper/gradle-wrapper.properties 87 | 88 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | java-for-beginner-example -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/java-for-beginner.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__junit_junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/modules/java-for-beginner-example.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules/java-for-beginner-example.main.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules/java-for-beginner-example.test.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # История: 2 | 3 | ## 26.05.2020 4 | ### Что было: 5 | 1. HashSet 6 | 7 | ### Что почитать: 8 | 1. https://javarush.ru/groups/posts/2147-hashset-v-java - HashSet 9 | 1. https://www.callicoder.com/java-hashset/ - HashSet 10 | 1. https://www.youtube.com/watch?v=WPcKwA5WF7s - HashSet 11 | 1. https://habr.com/en/post/168195/ - Разбираемся с hashCode() и equals() 12 | 13 | ### Рекомендуется выполнить: 14 | Создать класс House, который должен содержать внутри себя следующие поля: 15 | * public Street street //класс Street должен хотя бы содержать поле name 16 | * public int numberOfHouseResidents 17 | * public List apartmentNumber 18 | * переопределить toString() метод. 19 | 20 | Создать 3 экземпляра класса, два из которых содержат одинаковые значения полей. Добить в коллекцию HashSet. 21 | Вывести на экран список всех входящих в коллекцию значений и ее размер. Убедиться, что выведутся все три дома, 22 | хотя 2 из них будут с одинаковыми значениями. Возмутиться. Переопредеть equals() и hashcode() методы для классов Street и House. 23 | Вывести на экран список всех входящих в коллекцию значений и ее размер. 24 | Размер коллекции будет 2, один из домов дубликатов не добавится. 25 | 26 | ## 22.05.2020 27 | ### Что было: 28 | 1. HashCode, Equals 29 | 1. String pool 30 | 31 | ### Что почитать: 32 | 1. https://javarush.ru/groups/posts/equals-java-sravnenie-strok 33 | 1. https://www.baeldung.com/java-string-pool 34 | 1. http://www.quizful.net/interview/java/equals-equality-difference 35 | 1. https://www.w3schools.com/java/ref_string_equals.asp 36 | 1. https://www.w3schools.com/java/ref_string_hashcode.asp 37 | 38 | ### Рекомендуется выполнить: 39 | Выбрать/Создать любой класс c 2-4 полями. Переопределить equals&hashcode. Создать несколько экземпляров класса, с разным значением полей. 40 | Сравнить созданные экземпляры класса по hashcode() и equals(). Результаты сравнения вывести на экран. 41 | 42 | ## 13.05.2020 43 | ### Что было: 44 | 1. ArrayList vs LinkedList 45 | 46 | ### Что почитать: 47 | 1. https://www.baeldung.com/java-arraylist-linkedlist - краткое сравнение 48 | 1. https://habr.com/en/post/128269/ - очень подробно про ArrayList 49 | 1. https://habr.com/en/post/127864/ - очень подробно про LinkedList 50 | 51 | 52 | ### Рекомендуется выполнить: 53 | предыдущую домашку. 54 | 55 | ## 07.05.2020 56 | ### Что было: 57 | 1. ArrayList 58 | 59 | ### Что почитать: 60 | 1. https://javarush.ru/groups/posts/klass-arraylist 61 | 1. https://www.w3schools.com/java/java_arraylist.asp 62 | 1. http://developer.alexanderklimov.ru/android/java/arraylist.php 63 | 1. https://vertex-academy.com/tutorials/ru/arraylist-v-java/ 64 | 65 | 66 | ### Рекомендуется выполнить: 67 | Создать ArrayList типа Sheep, в который добавить 10 новых овец с именами "1", "2"..."10". 68 | Создать второй ArrayList. Поместить в него все элементы 1 коллекции 69 | и добавить 3 дополнительных с именами: "101", "102", "103". 70 | Вывести в консоль вторую коллекцию. 71 | Заменить во второй коллекции элементы с индексами с 3 по 7 новыми, с именами "301", "302".. "305". 72 | Вывести в консоль вторую коллекцию. 73 | Заменить во второй коллекции все элементы, имена которых содержат "1" внутри себя на значение "updated". 74 | Вывести в консоль вторую коллекцию. 75 | 76 | ## 30.04.2020 77 | ### Что было: 78 | 1. interface 79 | 80 | ### Что почитать: 81 | 1. https://www.w3schools.com/java/java_interface.asp 82 | 1. https://javarush.ru/groups/posts/1981-dlja-chego-v-java-nuzhnih-interfeysih 83 | 1. https://www.geeksforgeeks.org/difference-between-abstract-class-and-interface-in-java/ 84 | 85 | ### Рекомендуется выполнить: 86 | Создать класс с домашним заданием. Например IntarfaceLessonHW. 87 | Добавить метод public static void run(). 88 | Создать интерфейс Repairable с методомами void repair(int cash); 89 | и boolean isNeedToRepair(); 90 | Для классов Street, Plane и Car имплементировать новый интерфейс. Реализовать поведение: 91 | 1. В классах Plane и Car создаем переменную boolean isNeedRepair = true; 92 | 1. Для Car в методе repair: делаем проверку, если cash > 10, 93 | выводим сообщение "Отремонтированно" в консоль и меняем значение переменной isNeedRepair, иначе "Не хватает денег" 94 | 1. Для Street в методе repair выводим сообщение "Не хватает денег", не зависимо от внесенной суммы. 95 | 1. Для Plane: 96 | - Создаем переменную класса int costOfRepair=500 97 | - в методе repair проверяем, хватает ли нам внесенной суммы. 98 | - если хватает, меняем значение переменной isNeedRepair. 99 | - Если не хватает, обновляем значение переменной по формуле costOfRepair = costOfRepair-cash. 100 | Выводим сообщение в консоль, что нужны еще деньги. 101 | 102 | В методе класса IntarfaceLessonHW создать массив типа Repairable, поместить несколько Street, Car, Plane. 103 | В том же методе создать переменную cash = 100000. 104 | Пройтись в цикле по всем объектам и попытаться их отремонтировать. 105 | При каждом ремонте, уменьшать значение переменной сash 106 | 107 | ## 28.04.2020 108 | ### Что было: 109 | 1. abstract method 110 | 1. arrays 111 | 1. разбирали дз lesson.TryCatchLesson.filterOnlySheep. Метод реализован. 112 | 113 | ### Что почитать: 114 | http://developer.alexanderklimov.ru/android/java/abstract.php - абстрактные классы и методы 115 | https://javarush.ru/groups/posts/1973-abstraktnihe-klassih-v-java-na-konkretnihkh-primerakh - абстрактные классы и методы 116 | 117 | ### Рекомендуется выполнить: 118 | Попробовать сделать предыдущую домашнюю работу. 119 | 120 | ## 23.04.2020 121 | ### Что было: 122 | 1. Try-catch-finally 123 | 1. instance of 124 | 1. Boxing/unboxing(факультативно) 125 | 126 | ### Что почитать: 127 | https://javarush.ru/groups/posts/2018-kak-rabotaet-operator-instanceof - instanceOf 128 | https://www.w3schools.com/java/java_try_catch.asp - try catch finally(до throws) 129 | http://developer.alexanderklimov.ru/android/java/exception.php - try catch finally(до throws) 130 | https://habr.com/en/post/329498/ Boxing/unboxing(факультативно). Сейчас JDK 8+ 131 | 132 | ### Рекомендуется выполнить: 133 | Проверить, что у вас есть классы Animal, Sheep, Tiger. Если нет - создать. 134 | Написать реализацию методов, которые можно посмотреть в классе TryCatchLesson: 135 | * lesson.TryCatchLesson.filterOnlySheep 136 | * lesson.TryCatchLesson.filterOnlySelectedAnimal 137 | Создать несколько массивов Animal c разным набором данных и для каждого из них вызвать 138 | реализованные методы. Полученные результаты выполнения методов выводить на экран. 139 | 140 | 141 | ## 21.04.2020 142 | ### Что было: 143 | 1. Наследование классов 144 | 1. Абстрактный класс 145 | 1. Переопределение методов 146 | 147 | ### Что почитать: 148 | https://vertex-academy.com/tutorials/ru/pravila-nasledovaniya-v-java/ 149 | https://javarush.ru/groups/posts/1973-abstraktnihe-klassih-v-java-na-konkretnihkh-primerakh 150 | https://www.w3schools.com/java/java_abstract.asp 151 | 152 | ### Рекомендуется выполнить: 153 | Создать абстрактный класс транспортное средство с методами void drive(), void stop(). 154 | Методы выводят сообщение о том, что движение началось и закончилось для транспортного средства. 155 | Создать и унаследовать 3 разных класса: грузовая машина, автомобиль городской, автобус. 156 | Для каждого переоперделить метод drive() 157 | 158 | 159 | ## 16.04.2020 160 | ### Что было: 161 | Переопределение методов. Метод equals(Object o) 162 | 163 | ### Что почитать: 164 | https://www.geeksforgeeks.org/difference-equals-method-java/ 165 | https://javarush.ru/groups/posts/equals-java-sravnenie-strok 166 | https://www.youtube.com/watch?v=m7vFGL-N9eY 167 | 168 | ### Рекомендуется выполнить: 169 | 1. В классе Street переопределить метод equals. 170 | 1. Создать массив из 15 улиц, которые могут повторятся. 171 | 1. Написать метод, public int checkStreetCopiesCount(Street[] array, Street street), 172 | который количество эквивалентных улиц, найденных в массиве. (использовать цикл for 1 раз). 173 | 174 | 175 | ## 14.04.2020 176 | ### Что было: 177 | Дефолтный конструктор. Конструкторы с параматрами. Ключевое слово this. Наследование от метода Object. Метод toString(). 178 | 179 | ### Что почитать: 180 | http://developer.alexanderklimov.ru/android/java/object.php - Object.class 181 | https://www.javatpoint.com/understanding-toString()-method - toString() 182 | https://vertex-academy.com/tutorials/ru/konstruktory-slovo-v-java/ - Конструктор 183 | https://javarush.ru/groups/posts/konstruktory-v-java - Еще про конструктор 184 | https://javarush.ru/groups/posts/608-kljuchevoe-slovo-this-v-primerakh - ключевое слово this 185 | 186 | ### Рекомендуется выполнить: 187 | Реализовать класс Street, явно наследовать от класса Object. Добавить поля name, description, key. реализовать 3 контруктора: 188 | без аргументов, со всеми агрументами, только с полем name. Перепределить метод toString(). 189 | Создать массив с 10 экземплярами класса Street. Вывести информацию о каждой из улиц в консоль, используя метод toString(). 190 | При создании нового экземпляра класса, должно выводиться новое сообщение: "New street in the our city!". 191 | 192 | ## 09.04.2020 193 | ### Что было: 194 | Разобрались со ссылочными типами данных. что такое null значение. 195 | 196 | ### Что почитать: 197 | https://www.youtube.com/watch?v=7tuK9UgCSjs&t=265s - What is null and a null pointer exception? (Java Tutorial) 198 | https://www.youtube.com/watch?v=nM2QF3r_PCM - ссылочные типы данных 199 | 200 | ### Рекомендуется выполнить: 201 | Если не создан класс City, то создать. Добавить поле key(по умолчанию "spb"). В методе main создать массив длинной 10 тип City. Заполнить первые 3 элемента экземплярами класса City с именами "msk", "vrn", "spb". Вывести на экран все значения key, присутствующие в массиве. 202 | 203 | ## 07.04.2020 204 | ### Что было: 205 | Начали разбираться с созданием экземпляров классов. Сравнили статические и не статические поля. Познакомились с конструктором класса. 206 | 207 | ### Что почитать: 208 | https://vertex-academy.com/tutorials/ru/klassy-v-java/ - классы и экземляры классов в java 209 | https://vertex-academy.com/tutorials/ru/modifikator-static-v-java/ - модификатор java для полей 210 | https://vertex-academy.com/tutorials/ru/konstruktory-slovo-v-java/ - конструкторы 211 | 212 | ### Рекомендуется выполнить: 213 | Создать package location. 214 | 1. Создать класс City. Добавить поля 'имя', размер. Создать 7 городов с разными названиями и численностью. 215 | Вывести результаты в консоль. 216 | 1. Попробовать склонировать текущий репозиторий себе на локальную машину и запустить примеры. 217 | 1.1. Заходим на главную страницу репозитория, нажимаем кнопку clone. Выбираем HTTP ссылку. 218 | 1.2. Переходим в Intellij Idea. File->new project->from version contol-> git. В url вставляем ссылку в репозиторий. Создаем. 219 | 220 | ## 02.04.20202 221 | ### Что было: 222 | Продолжили разбираться с модификаторами доступа, полями и методами класса. 223 | 224 | ### Что почитать: 225 | Посмотреть как реализованы классы: 226 | java-for-beginner-example\src\main\java\actor\Person.java 227 | java-for-beginner-example\src\main\java\animal\Cat.java 228 | java-for-beginner-example\src\main\java\StartPoint.java 229 | 230 | ### Рекомендуется выполнить: 231 | В package animal\ создать класс Dog. 232 | Добавить static поля: порода, кличка, возраст, пол, любимая игрушка(тип String). Каждому из полей присвоить значения по умолчанию. 233 | Добавить методы: 234 | 1. public static void gaf() - выводит в консоль любое сообщение от собаки 235 | 1. public static int getAge() - возвращает возраст собаки 236 | 1. public static void appendYear(int count) - добавляет собаке указанное количество лет. 237 | Если итоговое значение больше 200, то в консоль выводится сообщение "Что-то здесь не так" и возраст остается прежним. 238 | 1. public static boolean guessAge(int[] optionArray) - принимает на вход массив вариантов. 239 | Если среди этих вариантов есть возраст собаки - возвращать из метода true, иначе false. 240 | Добавить в класс Person метод playWithDog(). Вызвать все методы Dog в этом методе. 241 | 1. придумать пару интересных методов самостоятельно 242 | 243 | ## 31.03.20202 244 | ### Что было: 245 | Узнали о модификатарах доступа, пакетах и импортах. Напомнили, что необходимо создать репозиторий на gitHub 246 | 247 | ### Что почитать: 248 | http://developer.alexanderklimov.ru/android/java/package.php 249 | https://javarush.ru/groups/posts/1988-modifikatorih-dostupa-private-protected-default-public 250 | 251 | Для тех, кто хотел бы создать себе репозиторий на GitHub видео, как это можно сделать, не выходя из Intellij Idea 252 | https://www.youtube.com/watch?v=mf2-MOl0VXY 253 | 254 | ### Рекомендуется выполнить: 255 | Создать пакет lesson20200331. Внутри создать два пакета: actor и object. Внутри actor создать класс Person c методами eat() и drink(). Внурти object создать классы Table, Chair, Sofa. Внутри каждого класса создать метод getHeight() который выводит на экран высоту предмета. В каждом классе должен быть свой модификатор доступа. Попробовать вызвать все классы в main 256 | 257 | ## 13.03.2020 258 | ### Что было: 259 | Познакомились с массивами 260 | Рассмотрели что такое циклы и как реализован цикл for(int i=0; i \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS='"-Xmx64m"' 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn () { 37 | echo "$*" 38 | } 39 | 40 | die () { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Escape application args 158 | save () { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS="-Xmx64m" 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /java-for-beginner-example/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | group 'com.tsystems.vrn' 6 | version '1.0-SNAPSHOT' 7 | 8 | sourceCompatibility = 1.8 9 | 10 | repositories { 11 | mavenCentral() 12 | } 13 | 14 | dependencies { 15 | testCompile group: 'junit', name: 'junit', version: '4.12' 16 | } 17 | -------------------------------------------------------------------------------- /java-for-beginner-example/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DmitriiPodlesnykh/java-for-beginner/673271bd55d72adec0907d5faca82be4cb42afc4/java-for-beginner-example/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /java-for-beginner-example/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /java-for-beginner-example/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Attempt to set APP_HOME 10 | # Resolve links: $0 may be a link 11 | PRG="$0" 12 | # Need this for relative symlinks. 13 | while [ -h "$PRG" ] ; do 14 | ls=`ls -ld "$PRG"` 15 | link=`expr "$ls" : '.*-> \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS='"-Xmx64m"' 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn () { 37 | echo "$*" 38 | } 39 | 40 | die () { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Escape application args 158 | save () { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /java-for-beginner-example/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS="-Xmx64m" 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /java-for-beginner-example/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'java-for-beginner-example' 2 | 3 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/StartPoint.java: -------------------------------------------------------------------------------- 1 | import lesson.CheckBoolean; 2 | import lesson.EqualsHashCodeLesson; 3 | import lesson.Lesson; 4 | import lesson.SetLesson; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * Класс содержащий main метод. 11 | */ 12 | public class StartPoint 13 | { 14 | /** 15 | * Начало выполнения программ. 16 | *

17 | * В этом методе вызываются классы-уроки-примеры. 18 | *

19 | * Вариант использования: 20 | * Выбираем интересующий класс, остальные комментируем. 21 | * 22 | * @param args массив входящих параметров. 23 | */ 24 | public static void main(String[] args) 25 | { 26 | List lessonList = prepareLessonList(); 27 | for(Lesson lesson : lessonList) 28 | { 29 | lesson.startLessonExample(); 30 | } 31 | } 32 | 33 | private static List prepareLessonList() 34 | { 35 | List lessonList = new ArrayList<>(); 36 | //lessonList.add(new AbstractClassLesson()); 37 | //lessonList.add(new ArrayListLesson()); 38 | //lessonList.add(new SetLesson()); 39 | //lessonList.add(new EqualsHashCodeLesson()); 40 | lessonList.add(new SetLesson()); 41 | return lessonList; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/actor/Person.java: -------------------------------------------------------------------------------- 1 | package actor; 2 | 3 | import animal.Cat; 4 | 5 | public class Person { 6 | 7 | public static void hiCat() 8 | { 9 | System.out.println("Hi " + Cat.name); 10 | } 11 | 12 | public static void changeCatName(String myFavoriteName) 13 | { 14 | Cat.name = myFavoriteName; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/animal/Animal.java: -------------------------------------------------------------------------------- 1 | package animal; 2 | 3 | public abstract class Animal 4 | { 5 | 6 | public Animal() 7 | { 8 | super(); 9 | System.out.println("Animal constructor"); 10 | } 11 | 12 | 13 | public void eat() 14 | { 15 | System.out.println("animal eat"); 16 | } 17 | 18 | public void drink() 19 | { 20 | System.out.println("animal drink"); 21 | } 22 | 23 | public void run() 24 | { 25 | System.out.println("animal run"); 26 | } 27 | 28 | public abstract boolean isCanSpeak(); 29 | } 30 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/animal/Cat.java: -------------------------------------------------------------------------------- 1 | package animal; 2 | 3 | import object.MoveObject; 4 | 5 | public class Cat implements MoveObject 6 | { 7 | 8 | private static int weight = 100; 9 | 10 | public static String name = "Барсик"; 11 | 12 | public int currentDistance = 0; 13 | 14 | public static void drink() 15 | { 16 | System.out.println("Cat drink"); 17 | } 18 | 19 | public static void eat(int countTimes) 20 | { 21 | for (int i=0; i< countTimes; i++) 22 | { 23 | System.out.println("Cat eat . Current weight = " + weight); 24 | weight = weight + 1; 25 | } 26 | } 27 | 28 | public static int showWeight() 29 | { 30 | int currentWeight = weight; 31 | return currentWeight; 32 | } 33 | 34 | @Override 35 | public void move(final int distance) 36 | { 37 | currentDistance = currentDistance + distance; 38 | /// 39 | } 40 | 41 | @Override 42 | public int getDistance() 43 | { 44 | return 0; 45 | } 46 | 47 | @Override 48 | public String toString() 49 | { 50 | return "Cat{" 51 | + "name = " + name 52 | + "current distane = " + currentDistance 53 | + "}"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/animal/Dog.java: -------------------------------------------------------------------------------- 1 | package animal; 2 | 3 | import java.util.Objects; 4 | 5 | public class Dog 6 | { 7 | public int collar = 0; 8 | 9 | public int age = 0; 10 | 11 | public Dog() 12 | { 13 | } 14 | 15 | public Dog(final int collar, final int age) 16 | { 17 | this.collar = collar; 18 | this.age = age; 19 | } 20 | 21 | @Override 22 | public boolean equals(final Object o) 23 | { 24 | if (this == o) 25 | { 26 | return true; 27 | } 28 | if (o == null || getClass() != o.getClass()) 29 | { 30 | return false; 31 | } 32 | final Dog dog = (Dog)o; 33 | return collar == dog.collar && 34 | age == dog.age; 35 | } 36 | 37 | @Override 38 | public int hashCode() 39 | { 40 | //return 12321312; 41 | final int prime = 31; 42 | int result = 1; 43 | result = prime * result + age; 44 | result = prime * result + collar; 45 | return result;//961 46 | //return Objects.hash(collar, age); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/animal/Sheep.java: -------------------------------------------------------------------------------- 1 | package animal; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * Наследник класса Object. Как и все классы неявно в java. 7 | */ 8 | public class Sheep extends Animal 9 | { 10 | private String name = "default name"; 11 | 12 | private int countLegs = 4; 13 | 14 | public Sheep() 15 | { 16 | super(); 17 | System.out.println("Hi!! Sheep constructor"); 18 | } 19 | 20 | public Sheep(String newName, int countLegs) 21 | { 22 | this(newName); 23 | this.countLegs = countLegs; 24 | } 25 | 26 | public Sheep(String newName) 27 | { 28 | this(); 29 | name = newName; 30 | } 31 | 32 | /** 33 | * Переопределеный метод 34 | * 35 | * @return данные об экземпляре класса в удобном для человека виде. 36 | */ 37 | public String toString() 38 | { 39 | return "Sheep{" + 40 | "name='" + name + '\'' + 41 | ", countLegs=" + countLegs + 42 | '}'; 43 | } 44 | 45 | public boolean equals(final Object o) 46 | { 47 | System.out.println("current object = " + this.toString() + "; parameter object == " + o); 48 | if (this == o) 49 | { 50 | System.out.println("links equals"); 51 | return true; 52 | } 53 | if (o == null || getClass() != o.getClass()) 54 | { 55 | System.out.println("parameter 0 = " + o); 56 | return false; 57 | } 58 | 59 | final Sheep sheep = (Sheep)o; 60 | if (this.countLegs == sheep.countLegs && Objects.equals(this.name, sheep.name)) 61 | { 62 | return true; 63 | } 64 | else 65 | { 66 | return false; 67 | } 68 | } 69 | 70 | public void drink() 71 | { 72 | System.out.println("sheep drink"); 73 | } 74 | 75 | @Override 76 | public boolean isCanSpeak() 77 | { 78 | return true; 79 | } 80 | 81 | public void drink(String a) 82 | { 83 | 84 | } 85 | 86 | public void doIt() 87 | { 88 | System.out.println("doIT"); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/animal/Tiger.java: -------------------------------------------------------------------------------- 1 | package animal; 2 | 3 | public class Tiger extends Animal 4 | { 5 | /** 6 | * Статическое поле. Едино для всех созданных экземпляров тигров 7 | */ 8 | public static int tigerCounter = 0; 9 | 10 | /** 11 | * Не статическое поле. Уникально и изменяемо для каждого тигра. 12 | * Не может быть получено через Tiger.name, может быть получен для tiger.name 13 | */ 14 | public String name = "(empty)"; 15 | 16 | private int kittenCount = 0; 17 | 18 | /** 19 | * Конструктор класса. Вызывается каждый раз при вызове new Tiger() 20 | */ 21 | public Tiger() 22 | { 23 | tigerCounter = tigerCounter + 1; 24 | } 25 | 26 | @Override 27 | public boolean isCanSpeak() 28 | { 29 | return false; 30 | } 31 | 32 | /** 33 | * Увеличиваем значение kittenCount 34 | */ 35 | public void addOneMore() 36 | { 37 | kittenCount = kittenCount +1; 38 | } 39 | 40 | /** 41 | * @return текущее значение kittenCount 42 | */ 43 | public int getCurrentCounter() 44 | { 45 | int currentKittenCount = kittenCount; 46 | return kittenCount; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/AbstractClassLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Animal; 4 | import animal.Sheep; 5 | import animal.Tiger; 6 | 7 | public class AbstractClassLesson implements Lesson 8 | { 9 | public void startLessonExample() 10 | { 11 | //Animal animal = new Animal() //invalid 12 | 13 | Animal animalSheep = new Sheep(); 14 | animalSheep.isCanSpeak(); 15 | 16 | Animal animalTiger = new Tiger(); 17 | animalTiger.isCanSpeak(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/ArrayListLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Cat; 4 | 5 | import java.util.ArrayList; 6 | import java.util.Arrays; 7 | 8 | public class ArrayListLesson implements Lesson 9 | { 10 | public void startLessonExample() 11 | { 12 | classInstanceDiffExample(); 13 | diffExample(); 14 | arrayListConstructorExample(); 15 | arrayListBasicMethods(); 16 | 17 | arrayListGetExample(); 18 | } 19 | 20 | private static void arrayListConstructorExample() 21 | { 22 | ArrayList arrayList = new ArrayList(); 23 | ArrayList catArrayList2 = new ArrayList<>(arrayList); 24 | 25 | int[] a = new int[10]; 26 | ArrayList arrayList3 = new ArrayList(Arrays.asList(new int [10])); 27 | } 28 | 29 | private static void arrayListBasicMethods() 30 | { 31 | ArrayList catArrayList = new ArrayList<>(); 32 | catArrayList.add(new Cat()); 33 | //catArrayList.add(10, new Cat()); 34 | 35 | ArrayList anotherArrayList = new ArrayList<>(); 36 | anotherArrayList.addAll(catArrayList); 37 | anotherArrayList.addAll(catArrayList); 38 | anotherArrayList.addAll(catArrayList); 39 | 40 | System.out.println("anotherArrayList.size() = " + anotherArrayList.size()); 41 | } 42 | 43 | private static void diffExample() 44 | { 45 | ArrayList arrayList = new ArrayList(); 46 | System.out.println(arrayList + " " + arrayList.size()); 47 | arrayList.add(new Cat()); 48 | System.out.println(arrayList + " " + arrayList.size()); 49 | for (int i = 0; i<1000000; i++) 50 | { 51 | arrayList.add(new Cat()); 52 | } 53 | System.out.println(arrayList.size()); 54 | 55 | 56 | Object[] objects = new Object[2]; 57 | objects[0] = new Object(); 58 | for (int i = 0; i< 100; i++) 59 | { 60 | Object[] oldAArray = objects; 61 | objects = new Object[oldAArray.length +1]; 62 | for (int j = 0; j list = new ArrayList<>(); 75 | 76 | Cat ourFavoriteCat = new Cat(); 77 | ourFavoriteCat.move(100); 78 | 79 | list.add(ourFavoriteCat); 80 | list.add(new Cat()); 81 | 82 | Object o = list.get(1); 83 | Cat cat1 = (Cat)o; 84 | 85 | cat1.name = "Виталик"; 86 | 87 | 88 | for (int i=0; i catArrayList = new ArrayList<>(); 125 | catArrayList.add(cat); 126 | catArrayList.add(cat1); 127 | catArrayList.add(cat2); 128 | catArrayList.add(cat3); 129 | catArrayList.add(cat4); 130 | catArrayList.add(cat5); 131 | 132 | for (Cat currentCat : catArrayList) 133 | { 134 | System.out.println(currentCat.toString() ); 135 | } 136 | 137 | System.out.println("---------------------------------"); 138 | } 139 | 140 | 141 | } 142 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/CheckBoolean.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | public interface CheckBoolean 4 | { 5 | boolean returnTrue(); 6 | } 7 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/ClassLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import actor.Person; 4 | 5 | public class ClassLesson 6 | { 7 | /** 8 | * Создание новых классов Cat и Person. 9 | * Взаимодействие классов друг с другом. 10 | */ 11 | public static void startLessonExample() 12 | { 13 | Person.hiCat(); 14 | Person.changeCatName("Мяу-мяу-мяу-мяу"); 15 | Person.hiCat(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/ConstructorLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Sheep; 4 | 5 | public class ConstructorLesson 6 | { 7 | /** 8 | * Создаем экземпляры класса Sheep через разные конструкторы. 9 | */ 10 | public static void startLessonExample() 11 | { 12 | Sheep[] sheepArray = new Sheep[4]; 13 | 14 | Sheep sheepDolly = new Sheep("Dolly", 5); 15 | sheepArray[0] = sheepDolly; 16 | 17 | sheepArray[1] = new Sheep("Dolly clone one"); 18 | 19 | sheepArray[2] = new Sheep("Dolly clone two", 3); 20 | 21 | sheepArray[3] = new Sheep(); 22 | 23 | for (int i = 0; i < sheepArray.length; i++) 24 | { 25 | // неявно выполняется sheepArray[i].toString(); 26 | System.out.println(sheepArray[i]); 27 | } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/EqualsHashCodeLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Dog; 4 | 5 | import java.time.LocalDate; 6 | import java.util.Date; 7 | 8 | public class EqualsHashCodeLesson implements Lesson 9 | { 10 | private LocalDate updateDate = LocalDate.of(2020, 5, 21); 11 | 12 | @Override 13 | public void startLessonExample() 14 | { 15 | hahCodeExample(); 16 | equalsExample(); 17 | collisionExample(); 18 | } 19 | 20 | private void hahCodeExample() 21 | { 22 | System.out.println("hahCodeExample: "); 23 | Dog dog = new Dog(); 24 | Dog dogSecond = new Dog(4, 2); 25 | Dog dogThird = new Dog(2, 4); 26 | 27 | System.out.println(dog.hashCode()); 28 | System.out.println(dogSecond.hashCode()); 29 | System.out.println(dogThird.hashCode()); 30 | } 31 | 32 | private void equalsExample() 33 | { 34 | System.out.println("equalsExample: "); 35 | Dog dog1 = new Dog(4, 2); 36 | Dog dog2 = new Dog(2, 4); 37 | Dog dog3 = new Dog(2, 4); 38 | 39 | System.out.println(dog1.equals(dog2)); 40 | System.out.println(dog2.equals(dog3)); 41 | } 42 | 43 | private void collisionExample() 44 | { 45 | System.out.println("collisionExample: "); 46 | Dog dog1 = new Dog(2108, 1); 47 | System.out.println("dog 1 hash = " + dog1.hashCode()); 48 | 49 | Dog dog2 = new Dog(279, 60); 50 | System.out.println("dog 2 hash = " + dog2.hashCode()); 51 | 52 | boolean areHashCodesTheSame = dog1.hashCode() == dog2.hashCode(); //3100 53 | System.out.println("dog1.hashcode() == dog2.hashcode() ? = " + areHashCodesTheSame); // true 54 | System.out.println("dog1.equals(dog2) ? = " + dog1.equals(dog2)); // false 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/EqualsLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Sheep; 4 | import animal.Tiger; 5 | 6 | public class EqualsLesson 7 | { 8 | /** 9 | * .equals(Object o) vs == 10 | */ 11 | public static void startLessonExample() 12 | { 13 | Sheep sheep = new Sheep(); 14 | 15 | Sheep sheep2 = sheep; 16 | System.out.println("same link. equals result: " + sheep.equals(sheep2)); 17 | System.out.println("same link. == result: " + sheep.equals(sheep2)); 18 | 19 | System.out.println("null case result: " + sheep.equals(null)); 20 | 21 | Tiger tiger = new Tiger(); 22 | System.out.println("Diff types result: " + sheep.equals(tiger)); 23 | 24 | Sheep newSheep = new Sheep(); 25 | System.out.println("diff objects with same fields value equals result: " +sheep.equals(newSheep)); 26 | System.out.println("diff objects with same fields value == result: " + (sheep == newSheep)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/HashSetLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Dog; 4 | import object.House; 5 | import object.Street; 6 | 7 | import java.util.HashSet; 8 | import java.util.Set; 9 | 10 | public class HashSetLesson implements Lesson 11 | { 12 | @Override 13 | public void startLessonExample() 14 | { 15 | HashSet hashSet = new HashSet(); 16 | 17 | hashSet.add(new Dog(20, 20)); //1 18 | hashSet.add(new Dog(6, 6)); //2 19 | 20 | hashSet.add(new Dog(20, 6));//3 21 | hashSet.add(new Dog(20, 6));//3 22 | 23 | hashSet.add(new Dog(2108, 1));//3100 24 | hashSet.add(new Dog(279, 60));//3100 25 | 26 | // 27 | // for (Dog ourDog : hashSet) 28 | // { 29 | // System.out.println(ourDog); 30 | // } 31 | // System.out.println(hashSet.size()); 32 | 33 | hw(); 34 | } 35 | 36 | private void hw() 37 | { 38 | House houseLenin = new House(); 39 | houseLenin.street = new Street("Ленинский проспект"); 40 | 41 | House housePushkin = new House(); 42 | housePushkin.street = new Street("Пушкинская"); 43 | System.out.println("housePushkin.hashCode() =" + housePushkin.hashCode()); 44 | 45 | House housePushkin2 = new House(); 46 | housePushkin2.street = new Street("Пушкинская"); 47 | System.out.println("housePushkin2.hashCode() =" + housePushkin2.hashCode()); 48 | 49 | Set houses = new HashSet<>(); 50 | houses.add(houseLenin); 51 | houses.add(housePushkin); 52 | houses.add(housePushkin2); 53 | 54 | System.out.println(houses); 55 | System.out.println(houses.size()); 56 | 57 | 58 | 59 | 60 | System.out.println("________________________________"); 61 | 62 | Street street = new Street("d"); 63 | Street street1 = new Street("d"); 64 | Object o = new Object(); 65 | Object o1 = new Object(); 66 | 67 | Street street10 = new Street("пушкинская"); 68 | Street street11 = new Street("Пушкинская"); 69 | 70 | System.out.println(street10.hashCode() + " " + street11.hashCode()); 71 | 72 | System.out.println( 73 | street.hashCode() + 74 | " " + street1.hashCode() + 75 | " " + o.hashCode() + 76 | " " + o1.hashCode()); 77 | 78 | System.out.println("________________________________"); 79 | 80 | 81 | Street street2 = new Street("васил"); 82 | 83 | System.out.println(street2); 84 | 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/InheritLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Animal; 4 | import animal.Sheep; 5 | import animal.Tiger; 6 | import object.City; 7 | import object.Street; 8 | 9 | public class InheritLesson 10 | { 11 | 12 | public static void startLessonExample() 13 | { 14 | Sheep sheep = new Sheep(); 15 | sheep.drink(); 16 | sheep.eat(); 17 | sheep.run(); 18 | sheep.doIt(); 19 | 20 | Animal animal = new Sheep(); 21 | animal.eat(); 22 | animal.run(); 23 | animal.drink(); 24 | 25 | 26 | Animal animal1 = new Tiger(); 27 | 28 | // не связанный пример 29 | // Используется массив экземпляров классов Street как поле экземпляра класса City 30 | exampleCityFields(); 31 | } 32 | 33 | private static void exampleCityFields() 34 | { 35 | Street street1 = new Street("Кольцовская"); 36 | Street street2 = new Street("Кирова"); 37 | 38 | Street[] array = new Street[] { street1, street2 }; 39 | 40 | City voronezh = new City("Voronezh", array); 41 | 42 | System.out.println(voronezh.toString()); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/InstanceIntroLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Tiger; 4 | 5 | public class InstanceIntroLesson 6 | { 7 | 8 | /** 9 | * Рассматривается отличие static полей и методов. 10 | * Создаем экземпляры тигров. 11 | * 12 | */ 13 | public static void startLessonExample() 14 | { 15 | System.out.println("Currect tiger counter = " + Tiger.tigerCounter); 16 | 17 | Tiger tiger = new Tiger(); 18 | System.out.println("Currect tiger counter = " + Tiger.tigerCounter); 19 | 20 | System.out.println("tiger counter = " + tiger.getCurrentCounter()); 21 | System.out.println("tiger name = " + tiger.name); 22 | tiger.addOneMore(); 23 | tiger.name = "Маруся"; 24 | System.out.println("tiger counter = " + tiger.getCurrentCounter()); 25 | System.out.println("tiger name = " + tiger.name); 26 | 27 | Tiger anotherTiger = new Tiger(); 28 | System.out.println("Currect tiger counter = " + Tiger.tigerCounter); 29 | 30 | System.out.println("another tiger counter = " + anotherTiger.getCurrentCounter()); 31 | System.out.println(anotherTiger.name); 32 | 33 | Tiger a1 = new Tiger(); 34 | Tiger a2 = new Tiger(); 35 | Tiger a3 = new Tiger(); 36 | 37 | for (int i = 0; i<1000000000; i++) 38 | { 39 | Tiger a = new Tiger(); 40 | } 41 | 42 | System.out.println("Currect tiger counter = " + Tiger.tigerCounter); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/InterfaceLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Cat; 4 | import object.MoveObject; 5 | import object.transport.Boat; 6 | import object.transport.Car; 7 | import object.transport.EngineVehicle; 8 | import object.transport.Plane; 9 | import object.transport.SaleObject; 10 | 11 | public class InterfaceLesson 12 | { 13 | public static void startLessonExample() 14 | { 15 | // Обращаемся к экземплярам класса напрямую. 16 | showExampleInstancesWithoutInterface(); 17 | 18 | // Обращаемся к экземплярам класса через интерфейс SaleObjects 19 | showExampleInstancesAsSaleObjects(); 20 | 21 | // Обращаемся к экземплярам класса через интерфейс SaleObjects 22 | showExampleInstancesAsEngineVehicle(); 23 | 24 | // Обращаемся к экземплярам класса через интерфейс MoveObject 25 | showExampleInstancesAsMoveObject(); 26 | 27 | //Создаем один экземпляр класса Plane и присваиваем его нескольким переменным разного типа. 28 | showExampleSameInstanceDiffLinks(); 29 | } 30 | 31 | private static void showExampleInstancesWithoutInterface() 32 | { 33 | Car car = new Car(); 34 | Plane plane = new Plane(); 35 | Boat boat = new Boat(); 36 | } 37 | 38 | private static void showExampleInstancesAsSaleObjects() 39 | { 40 | SaleObject[] saleObjects = new SaleObject[] { new Car(), new Boat(), new Plane() }; 41 | 42 | for (SaleObject saleObject : saleObjects) 43 | { 44 | int price = saleObject.getCurrentPrice(); 45 | System.out.println(price); 46 | } 47 | } 48 | 49 | private static void showExampleInstancesAsEngineVehicle() 50 | { 51 | EngineVehicle[] engineVehicle = new EngineVehicle[] { new Car(), new Boat(), new Plane() }; 52 | } 53 | 54 | private static void showExampleInstancesAsMoveObject() 55 | { 56 | MoveObject[] moveObjects = new MoveObject[] { new Cat(), new Cat(), new Plane() }; 57 | for (MoveObject moveObject : moveObjects) 58 | { 59 | if (moveObject instanceof Plane) 60 | { 61 | Plane currentPlane = (Plane)moveObject; 62 | currentPlane.stop(); 63 | } 64 | if (moveObject instanceof Cat) 65 | { 66 | Cat cat = (Cat)moveObject; 67 | cat.toString(); 68 | } 69 | } 70 | } 71 | 72 | private static void showExampleSameInstanceDiffLinks() 73 | { 74 | Plane plane1 = null; 75 | plane1 = new Plane(212122); //plane1 ссылается на объект с максимальным числом пассажиров 212122 76 | 77 | //moveObject1 ссылается на объект с максимальным числом пассажиров 212122. Можем работать только с методами интерфейса MoveObject 78 | MoveObject moveObject1 = plane1; 79 | 80 | //plane2 ссылается на тот же самый объект с максимальным числом пассажиров 212122. 81 | Plane plane2 = (Plane)moveObject1; 82 | 83 | //o ссылается на тот же самый объект с максимальным числом пассажиров 212122. Можем выполнять только методы класса Object 84 | Object o = plane2; 85 | 86 | //plane3 ссылается на тот же самый объект с максимальным числом пассажиров 212122. 87 | Plane plane3 = (Plane)o; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/Lesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | public interface Lesson 4 | { 5 | void startLessonExample(); 6 | } 7 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/ListLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import java.util.ArrayList; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | public class ListLesson 8 | { 9 | public static void startLessonExample() 10 | { 11 | List list = new ArrayList(); 12 | List list2 = new LinkedList(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/NullLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Tiger; 4 | 5 | public class NullLesson 6 | { 7 | /** 8 | * Создаем массив типа Tiger на 4 позиции. 9 | * Заполняем 1, 2, 4 экземплярами класса Tiger. 3 остается null. 10 | * 11 | * В первом цикле задаем всем не null тиграм имена. 12 | * Во втором выводим имена всех тигров. Но если у нас null в массиве, то выводим, вместо имени, что Tiger is null 13 | * 14 | */ 15 | public static void startLessonExample() 16 | { 17 | Tiger [] tigerArray = new Tiger[4];// all 4 values are null 18 | tigerArray[0] = new Tiger(); 19 | tigerArray[1] = new Tiger(); 20 | // tigerArray[2] is null by default 21 | tigerArray[3] = new Tiger(); 22 | 23 | // 3/4 values non null 24 | for (int i = 0; i< tigerArray.length; i++) 25 | { 26 | Tiger currentTiger = tigerArray[i]; 27 | System.out.println(currentTiger); 28 | 29 | if(currentTiger != null) // prevent Null Pointer Exception 30 | { 31 | currentTiger.name = "степан" + i; 32 | System.out.println(currentTiger.name); 33 | } 34 | } 35 | 36 | for (int i = 0; i< tigerArray.length; i++) 37 | { 38 | Tiger currentTiger = tigerArray[i]; 39 | if (currentTiger == null) 40 | { 41 | System.out.println("Tiger is null"); 42 | } 43 | else 44 | { 45 | System.out.println(currentTiger.name); 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/SetLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | public class SetLesson implements Lesson, CheckBoolean 4 | { 5 | 6 | public boolean returnTrue() 7 | { 8 | return true; 9 | } 10 | 11 | @Override 12 | public void startLessonExample() 13 | { 14 | HashSetLesson hashSetLesson = new HashSetLesson(); 15 | hashSetLesson.startLessonExample(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /java-for-beginner-example/src/main/java/lesson/TryCatchLesson.java: -------------------------------------------------------------------------------- 1 | package lesson; 2 | 3 | import animal.Animal; 4 | import animal.Sheep; 5 | import animal.Tiger; 6 | 7 | import java.util.Arrays; 8 | 9 | public class TryCatchLesson 10 | { 11 | /** 12 | * Main method. 13 | */ 14 | public static void startLessonExample() 15 | { 16 | Animal[] animals = new Animal[] { 17 | new Tiger(), 18 | new Sheep(), 19 | new Sheep("name 1234") }; 20 | speakWithAnimals(animals); 21 | 22 | Sheep[] result = filterOnlySheep(animals); 23 | System.out.println(Arrays.toString(result)); 24 | } 25 | 26 | /** 27 | * Для каждого элемента массива 28 | * обращаемся корректно в строке speakWithAnimalWithInstanceOf(animal); 29 | * обращаемся не очень корректно в try-catch блоке в строке speakWithAnimalWithTryCatch(animal), но обрабатываем корректно. 30 | * 31 | * @param animals массив и Tiger и Sheep 32 | */ 33 | private static void speakWithAnimals(Animal[] animals) 34 | { 35 | for (int i = 0; i < animals.length; i++) 36 | { 37 | Animal animal = animals[i]; 38 | System.out.println("----------- Start speak with animal = " + animal + "-----------"); 39 | speakWithAnimalWithTryCatch(animal); 40 | speakWithAnimalWithInstanceOf(animal); 41 | } 42 | } 43 | 44 | /** 45 | * Принимаем Animal. Корректно проверяем, если Tiger, то здороваемся, если Sheep - здороваемся и выполняем уникальный метод doIt 46 | * 47 | * @param animal абстрактный класс. 48 | */ 49 | private static void speakWithAnimalWithInstanceOf(Animal animal) 50 | { 51 | if (animal instanceof Sheep) 52 | { 53 | Sheep sheep = (Sheep)animal; 54 | sheep.doIt(); 55 | System.out.println("Hi sheep = " + sheep); 56 | } 57 | if (animal.getClass() == Tiger.class) 58 | { 59 | Tiger tiger = (Tiger) animal; 60 | System.out.println("Hi tiger = " + tiger); 61 | } 62 | } 63 | 64 | /** 65 | * Принимаем Animal. 66 | * Eсли Sheep - здороваемся и выполняем уникальный метод doIt. 67 | * Eсли Tiger, то падаем из try block в catch block и корректно обрабатываем исключение 68 | * 69 | * @param animal абстрактный класс. 70 | */ 71 | private static void speakWithAnimalWithTryCatch(Animal animal) 72 | { 73 | try 74 | { 75 | Sheep sheep = (Sheep)animal; 76 | sheep.doIt(); 77 | System.out.println("Hi sheep = " + sheep); 78 | } 79 | catch (ClassCastException exception) 80 | { 81 | System.out.println("Все уронили.Message = " + exception.getMessage()); 82 | System.out.println(); 83 | } 84 | finally 85 | { 86 | System.out.println("finnaly"); 87 | } 88 | } 89 | 90 | /** 91 | * Фильруем массив, возвращаем новый массив содержащий только экземпляры класса Sheep. 92 | * 93 | * @param animals массив потомков Animal. Может содержать Tiger и Sheep. 94 | * @return массив содежащий только экземпляры класса Sheep из массива. 95 | */ 96 | public static Sheep[] filterOnlySheep(Animal[] animals) 97 | { 98 | Sheep[] result = new Sheep[0]; 99 | 100 | for (Animal animal :animals) 101 | { 102 | if(animal instanceof Sheep) 103 | { 104 | result = prepareNewArray(result); 105 | Sheep sheep = (Sheep)animal; 106 | result[result.length-1] = sheep; 107 | } 108 | } 109 | return result; 110 | } 111 | 112 | private static Sheep[] prepareNewArray(Sheep[] oldArray) 113 | { 114 | Sheep[] result = new Sheep[oldArray.length+1]; 115 | for (int j = 0; j