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 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.
Obyektlər üçün istifadə etməlisiniz
.equals()
.
String
Java 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 final və 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
immutable
də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 .
String
Sinif
StringBuilder
simvol 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
null
Bu 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 , 0 y boolean isə 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. |
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 .
null
Hə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.
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.
GO TO FULL VERSION