Məqaləni başa düşmək üçün tələb olunan bilik səviyyəsi: başlanğıc. Siz Java Sintaksis axtarışını öyrənmək prosesindəsiniz və onun ilkin səviyyələrinə yaxınlaşırsınız. Java öyrənməyə başlayanların ən çox rast gəlinən problemləri - 1Java dilini yenicə öyrənməyə başlamısınız. Sanki bir kornukopiyadan gələn terminlərlə bombalanırsan. Siz tonlarla texniki məlumatla yüklənirsiniz və bəzən üç şamda çaşırsınız. İnanın ki, siz artıq proqramlaşdırma ilə məşğul olmusunuz, HƏMİŞƏ BELƏ OLACAQ (bu anda ekrandan kənarda məşum gülüş səsi gəlir və cümlənin ortasını kəsən sakit bir səs pıçıldayır: “Qaç... əvvəl özünüzü xilas edin. çox gecdir..."). Ən yaxşı tərtibatçı olsanız belə, səhvlər proqramlaşdırma həyatınızın qalan hissəsi üçün sizi təqib edəcək. Ancaq bu heç də göründüyü qədər qorxulu deyil.
JavaRush-u yeni öyrənməyə başlamısınızsa, çox güman ki, məqalədə qaldırılan problemlərlə artıq qarşılaşmısınız. İstənilən halda, Java-nı öyrəndiyiniz ilk aylarda yaşadığınız problemləri təsvir edən şərhləri alqışlayacağıq.

Səviyyə 0 problemi: Müqayisə operatoru (==) və təyin operatoru (=) ilə qarışıqlıq.

Bu, digər proqramlaşdırma dillərindən keçənlər üçün çox rast gəlinən problemdir. Və ümumiyyətlə, ibtidai məktəbdən bəri bunun bərabər bir işarə olduğuna öyrəşmişik (=). Xatırlamaq üçün istifadə edilə bilən sadə bir hiylə belədir: əgər siz dəyərlərdən yalnız birinə əhəmiyyət verdiyinizi bilirsinizsə (birini digərinə təyin edirsiniz) tək " =" işarəsindən istifadə edirsiniz, əks halda bütün dəyişənlərə əhəmiyyət verirsiniz. və dəyərlər (siz onları müqayisə edirsiniz) ikiqat " " işarəsi lazımdır ==.

Problem: Sətir ekvivalentliyini yoxlamaq üçün müqayisə operatorundan (==) istifadə etmək

Nə etməli: Unutmayın ki, heç bir Java obyekti istifadə edərək ekvivalentlik yoxlanıla bilməz(==) , çünki bu operator primitiv növlərin bərabərliyini yoxlamaq üçün nəzərdə tutulub.
Java öyrənməyə başlayanların ən çox rast gəlinən problemləri - 2
Obyektlər üçün istifadə etməlisiniz .equals(). StringJava dilində isə o, obyektdən (və immutable) başqa bir şey deyil.
Olaraq işarələnmiş obyekt Immutable yaradıldıqdan sonra vəziyyəti dəyişdirilə bilməyən obyektdir. Java -da bu o deməkdir ki, sinifin bütün nümunə sahələri kimi qeyd olunur finalvə primitivdir (və ya həmçinin immutable).

Problem: Döngədə sətir birləşməsi

Bunu özünüz sınamayın! Hər dəfə sətirlər birləşdirildikdə yeni obyekt yaradılır String(yuxarıda öyrəndiyimiz kimi, sətirlər immutabledəyişməzdir). Bir anda yaddaşınız tükənəcək və ya proqramın tamamlanması çox vaxt aparacaq. Həll. Döngədə məzmunu birləşdirərkən StringBuilderəvəzinə istifadə edin . StringSinif StringBuildersimvol sətirinə çoxlu dəyişikliklər etmək lazım olduqda istifadə olunur. Və belə xətlər, fərqli olaraq String, deyil immutable.

Problem: NullPointerException

nullBu cür istisna faktiki olaraq real obyektə ehtiyacımız olduqda null göstəricidən istifadə etməyə çalışdığımız zaman baş verir .
Bütün primitiv növlərin standart dəyərləri var. Beləliklə, y int, 0y booleanisə false. İstənilən istinad növlərinin, yəni obyektlərin standart dəyəri null. Bu bir obyekt və ya bir növ deyil, xüsusi bir dəyərdir. Hansı ki, mahiyyətcə “burada heç nə yoxdur” deməkdir.
Java öyrənməyə başlayanların ən çox rast gəlinən problemləri - 3
Nə etməli: Əgər kodunuz elə yazılıbsa ki, hansısa nöqtədə obyektiniz dəyəri qəbul edə bilsin , xüsusən də obyekti özünüz yaratmırsınızsa, null“yoxlayın” əlavə etməlisiniz . nullHəm də unutmayın ki, boş kolleksiyaları geri qaytarmaq 's dəstindən daha yaxşıdır null. Alıcılar və təyin edənlər üçün doğrulama əlavə etmək də yaxşı olardı.

Problem: if / while / for loopu nədənsə işləmir

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
Burda nə olub? Çox sadədir: əlavə nöqtəli vergül yüz minlərlə təcrübəsiz Java proqramçısının qanını korladı. Yaxşı, bundan sonra ehtiyacınız yoxdur if (). Dil nöqteyi-nəzərindən belə sintaksis kifayət qədər məqbuldur, ona görə də tərtibçi bundan şikayət etməyəcək. Lakin o, şərti ifadəni dayandırır və blokun içindəki kod {}heç vaxt yuxarıdakı şərti təmin etməyəcək.
Java öyrənməyə başlayanların ən çox rast gəlinən problemləri - 4
Həll yolu: Dizayn məntiqini yadda saxla. “ ;” işarəsi müəyyən blokun sonu deməkdir, lakin burada hər şey yeni başlayır.

Problem: Statik olmayan üzv dəyişənlərə statik metodlardan daxil olmağa çalışır (məsələn, əsas)

Həll . Bu problem konsepsiyanın özünün dərk edilməsi ilə bağlıdır static. Metod bu sözlə işarələnibsə, bu o deməkdir ki, əsas metodu çağırmaq üçün sinfi işə salmaq lazım deyil. Beləliklə, həll yolu "statikanı" yaxşı başa düşmək və onların mahiyyətini anlamaqdır.

Problem: Artıq mövcud kitabxanaları və alətləri inkişaf etdirərək təkəri yenidən kəşf etməyə çalışmaq

Həll. Əslində o qədər də problem deyil. Yeni başlayanlar üçün bu daha çox faydalı məşqdir. Bununla belə, nəticəyə diqqət yetirmək istəyirsinizsə, məsələn, rahat abunəçi məlumat bazası yaratmaq, o zaman telefon kitabçasında abunəçi axtarmaq ərizənizin nəticələrindən yalnız biridir. Bu halda binar axtarış alqoritmini yazmağa ehtiyac yoxdur. Mövcud birini istifadə edin (biz sizi əmin edirik, kimsə bunu sizdən əvvəl yazıb və standart kitabxanalardadır). Beləliklə, Oracle sənədlərində Java standart kitabxanalarını öyrənin. Google-da öyrənin, Stack Overflow-u oxumağa alışın və JavaRush-a kömək haqqında suallar verin ! ...Təbii ki, bütün bunlar yeni başlayanların problemləri deyil. Şərhlərdə özünüzü təsvir edin! Java ilə əlaqəli məqalələri oxumaqla maraqlanırsınız? Java Developer qrupuna qoşulun . Burada çox maraqlı şeylər var.