JavaRush /Java блог /Random UA /Найпоширеніші проблеми тих, хто починає вивчати Java

Найпоширеніші проблеми тих, хто починає вивчати Java

Стаття з групи Random UA
Рівень необхідних знань розуміння статті: новачок. Ви в процесі вивчення квесту Java Syntax, причому ближче до його початкових рівнів. Найпоширеніші проблеми тих, хто починає вивчати Java - 1Ви тільки почали вивчати Java. Вас засинає термінами, як із рогу достатку. Ви грузнете в тоннах технічної інформації, і часом плутаєтеся в трьох соснах. Повірте, раз ви вже вплуталися в програмування, ТАК БУДЕ ЗАВЖДИ (в цей момент зловісний сміх звучить за кадром, а тихий голос, обірваний на півслові, шепоче «Біжи… рятуйся, поки не пізно…»). Помилки будуть переслідувати вас до кінця програмістського життя, навіть якщо ви найкращий розробник. Однак це зовсім не таке страшно, як звучить.
Якщо ви тільки почали навчання на JavaRush, то, швидше за все, вже стикалися з порушеними в статті проблемами. У будь-якому випадку, ми були б раді коментарям з описами проблем, які виникали у вас у перші місяці вивчення Java.

Проблема нульового рівня: плутанина з оператором порівняння (==) та оператором присвоєння (=).

Це дуже часто проблема тих, хто переходить з інших мов програмування. Та й взагалі, ми з молодших класів звикли, що (=)це знак рівності. Простий трюк, який можна використовувати для запам'ятовування, такий: якщо ви знаєте, що вас цікавить тільки одне із значень (ви призначаєте одне одному), ви використовуєте одиночний знак « », інакше, якщо ви дбаєте про всі =змінні та значення (ви їх порівнюєте ) вам потрібний подвійний знак « ==».

Проблема: використання оператора порівняння (==) для перевірки еквівалентності рядків

Що робити: пам'ятайте, ніякі об'єкти Java не можна перевіряти на еквівалентність за допомогою(==) , оскільки цей оператор призначений для перевірки рівності типових типів.
Найпоширеніші проблеми тих, хто починає вивчати Java - 2
Для об'єктів потрібно використовувати метод .equals(). А Stringв мові Java - не що інше, як об'єкт (причому immutable).
Об'єкт, позначений як Immutable такий об'єкт, стан якого після створення неможливо змінити. У Java це означає, що всі поля екземпляра у класу відзначені як finalі є примітивами (або immutable).

Проблема: конкатенація рядків у циклі

Не намагайтеся повторити це самостійно! При кожній конкатенації рядків створюється новий об'єкт String(як ми з'ясували вище, рядки immutable, тобто незмінні). У якийсь момент ви зіткнетеся з нестачею пам'яті або програма почне вимагати надто багато часу для виконання. Рішення. Використовуйте StringBuilderзамість Stringконкатенації вмісту в циклі. Клас StringBuilderвикористовується в тому випадку, коли потрібно зробити багато змін у рядку символів. І такі рядки, на відміну String, не є immutable.

Проблема: NullPointerException

Цей вид винятків виникає, коли ми намагаємося використати порожній покажчик null, тоді як насправді нам потрібний реальний об'єкт.
Усі примітивні типи мають значення за замовчуванням. Так, у intце 0, а у boolean- false. Значення за умовчанням будь-яких типів посилань, тобто, об'єктів, дорівнює null. Не об'єкт і тип, це спеціальне значення. Яке, насправді, означає «тут нічого немає».
Найпоширеніші проблеми тих, хто починає вивчати Java - 3
Що робити: якщо ваш код складено так, що в якийсь момент ваш об'єкт може прийняти значення null, вам потрібно додати «перевірку на null», особливо якщо ви створюєте об'єкт не самостійно. Також запам'ятайте, що краще повертати порожні колекції, ніж набір null'ів. Також було б непогано додати валідацію для геттерів та сеттерів.

Проблема: чомусь не працює цикл if/while/for

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
Що тут не таке? Все просто: зайва точка з комою, вона зіпсувала кров сотням тисяч Java-програмістів-початківців. Ну не потрібна вона після if (). З погляду мови, такий синтаксис цілком припустимий, тому компілятор не лаятиметься на нього. Але він завершує умовний оператор, і код усередині блоку {}ніколи не виконає умову вище.
Найпоширеніші проблеми тих, хто починає вивчати Java - 4
Рішення: Пам'ятайте про логіку конструкції. Знак « ;» означає кінець якогось блоку, а в нас тут все тільки починається.

Проблема: спроба отримати доступ до нестатичних змінних членів зі статичних методів (таких, як main)

Рішення . Ця проблема пов'язана з розумінням самого поняття static. Якщо метод позначений цим словом, це означає, що нам не потрібно створювати екземпляр класу для виклику основного методу. Отже, рішення — добре розібратися зі «статиками», зрозуміти їхню сутність.

Проблема: спроба перевинайти колесо, розробляючи вже існуючі бібліотеки та інструменти

Рішення. Насправді це не така вже й проблема. Для новачка це більше схоже на корисну вправу. Тим не менш, якщо ви хочете зосередитися на результаті, наприклад, створити зручну базу даних абонентів, то пошук абонента в телефонній книзі для вас – лише один із результатів роботи вашої програми. У такому разі не варто писати алгоритм бінарного пошуку. Скористайтеся вже існуючим (запевняємо, хтось уже написав його до вас і у стандартних бібліотеках є). Отже, вивчайте стандартні бібліотеки Java в документації Oracle. Вчіться гуглити, звикайте читати Stack Overflow і ставте питання на help JavaRush ! …Зрозуміло, це далеко не всі проблеми новачків. Опишіть свої коментарі! Вам цікаво читати статті, пов'язані з Java? Вступайте до групи Java Develope r. Тут багато цікавого.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ