JavaRush /Java blogi /Random-UZ /Java o'rganishni boshlaganlarning eng ko'p uchraydigan mu...

Java o'rganishni boshlaganlarning eng ko'p uchraydigan muammolari

Guruhda nashr etilgan
Maqolani tushunish uchun zarur bo'lgan bilim darajasi: boshlang'ich. Siz Java Syntax kvestini o'rganish jarayonidasiz va uning boshlang'ich darajalariga yaqinlashyapsiz. Java o'rganishni boshlaganlarning eng ko'p uchraydigan muammolari - 1Siz endigina Java tilini o'rganishni boshladingiz. Siz go'yo go'yo go'zallikdan olingan atamalar bilan bombardimon qilinadi. Siz tonnalab texnik ma'lumotlarga to'lasiz va ba'zida siz uchta qarag'ayda chalkashib ketasiz. Ishoning, siz allaqachon dasturlash bilan shug'ullanganingiz uchun BU DOIM BO'LADI (bu vaqtda ekrandan mash'um kulgi yangradi va jumla o'rtasidan kesilgan sokin ovoz pichirlaydi: "Yugur... oldin o'zingizni qutqaring. juda kech...”). Eng yaxshi dasturchi bo'lsangiz ham, xatolar dasturlash hayotingiz davomida sizni ta'qib qiladi. Biroq, bu ko'rinadigan darajada qo'rqinchli emas.
Agar siz JavaRush-ni endigina o'rganishni boshlagan bo'lsangiz, ehtimol siz maqolada ko'tarilgan muammolarga duch kelgansiz. Qanday bo'lmasin, Java tilini o'rganishingizning birinchi oylarida duch kelgan muammolarni tavsiflovchi sharhlarni mamnuniyat bilan qabul qilamiz.

0-darajali muammo: Taqqoslash operatori (==) va tayinlash operatori (=) bilan chalkashlik.

Bu boshqa dasturlash tillaridan o'tadiganlar uchun juda keng tarqalgan muammo. (=)Va umuman olganda, boshlang'ich maktabdan beri biz bu tenglik belgisi ekanligiga o'rganib qolganmiz . Eslab qolish uchun ishlatilishi mumkin bo'lgan oddiy hiyla: agar siz qiymatlardan faqat bittasi haqida qayg'urayotganingizni bilsangiz (birini boshqasiga tayinlaysiz) bitta " =" belgisidan foydalanasiz, aks holda siz barcha o'zgaruvchilar haqida qayg'ursangiz. va qiymatlar (siz ularni solishtirasiz) sizga ikkita " ==" belgisi kerak.

Muammo: Qator ekvivalentligini tekshirish uchun taqqoslash operatoridan (==) foydalanish

Nima qilish kerak: Esda tutingki, Java ob'ektlarining ekvivalentligini dan foydalanib tekshirib bo'lmaydi(==) , chunki bu operator ibtidoiy turlarning tengligini tekshirish uchun mo'ljallangan.
Java-ni o'rganishni boshlaganlarning eng ko'p uchraydigan muammolari - 2
Ob'ektlar uchun siz dan foydalanishingiz kerak .equals(). Java tilida esa Stringbu ob'ektdan (va immutable) boshqa narsa emas.
Belgilangan ob'ekt Immutable yaratilgandan keyin holatini o'zgartirib bo'lmaydigan ob'ektdir. Java da bu sinfning barcha misol maydonlari sifatida belgilangan finalva ibtidoiy (yoki shuningdek immutable) ekanligini anglatadi.

Muammo: halqadagi satrlarni birlashtirish

Buni o'zingiz sinab ko'rmang! Har safar satrlar birlashtirilganda yangi ob'ekt yaratiladi String(yuqorida bilib olganimizdek, satrlar immutableo'zgarmasdir). Bir nuqtada sizning xotirangiz tugaydi yoki dasturni bajarish uchun juda ko'p vaqt kerak bo'ladi. Yechim. Kontentni tsiklda birlashtirganda StringBuilderuning o'rniga foydalaning . StringSinf StringBuilderbelgilar qatoriga ko'p o'zgartirishlar kiritish kerak bo'lganda ishlatiladi. Va bunday chiziqlar, dan farqli o'laroq String, yo'q immutable.

Muammo: NullPointerException

Bunday istisno, nullbiz haqiqiy ob'ektga muhtoj bo'lganimizda, biz null ko'rsatgichdan foydalanishga harakat qilganimizda sodir bo'ladi.
Barcha ibtidoiy turlar standart qiymatlarga ega. Demak, y int, 0y booleanesa false. Har qanday mos yozuvlar turlarining, ya'ni ob'ektlarning standart qiymati null. Bu ob'ekt yoki tur emas, bu maxsus qiymat. Bu "bu erda hech narsa yo'q" degan ma'noni anglatadi.
Java-ni o'rganishni boshlaganlarning eng ko'p uchraydigan muammolari - 3
Nima qilish kerak: Agar sizning kodingiz bir nuqtada ob'ektingiz qiymatni qabul qila oladigan tarzda yozilgan bo'lsa null, "check for" ni qo'shishingiz kerak null, ayniqsa ob'ektni o'zingiz yaratmasangiz. Shuni ham yodda tutingki, 's to'plamidan ko'ra bo'sh to'plamlarni qaytarish yaxshiroqdir null. Qabul qiluvchilar va sozlagichlar uchun tasdiqlashni qo'shish ham yaxshi bo'lar edi.

Muammo: negadir if / while / for tsikli ishlamaydi

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
Bu erda nima bo'ldi? Hammasi oddiy: qo'shimcha nuqta-vergul yuz minglab yangi Java dasturchilarining qonini buzdi. Xo'sh, keyin sizga kerak emas if (). Til nuqtai nazaridan, bunday sintaksis juda maqbuldir, shuning uchun kompilyator bu haqda shikoyat qilmaydi. Ammo u shartli bayonotni tugatadi va blok ichidagi kod {}hech qachon yuqoridagi shartni qondirmaydi.
Java-ni o'rganishni boshlaganlarning eng ko'p uchraydigan muammolari - 4
Yechim: Dizayn mantig'ini eslang. " ;" belgisi ma'lum bir blokning oxirini anglatadi, ammo bu erda hamma narsa endi boshlanmoqda.

Muammo: statik bo'lmagan a'zo o'zgaruvchilarga statik usullardan kirishga urinish (masalan, asosiy)

Yechim . Bu muammo kontseptsiyani o'zi tushunish bilan bog'liq static. Agar usul ushbu so'z bilan belgilangan bo'lsa, demak, asosiy metodni chaqirish uchun biz sinfni instantsiyalashimiz shart emas. Shunday qilib, yechim "statika" ni yaxshi tushunish va ularning mohiyatini tushunishdir.

Muammo: Mavjud kutubxonalar va vositalarni ishlab chiqish orqali g'ildirakni qayta ixtiro qilishga urinish

Yechim. Bu aslida unchalik muammo emas. Yangi boshlanuvchilar uchun bu ko'proq foydali mashqdir. Biroq, agar siz natijaga e'tibor qaratmoqchi bo'lsangiz, masalan, qulay abonent ma'lumotlar bazasini yaratish, keyin telefon kitobida abonentni qidirish sizning arizangiz natijalaridan faqat bittasi. Bunday holda, ikkilik qidiruv algoritmini yozishning hojati yo'q. Mavjuddan foydalaning (biz sizni ishontirib aytamizki, kimdir buni sizdan oldin yozgan va u standart kutubxonalarda mavjud). Shunday qilib, Oracle hujjatlaridagi Java standart kutubxonalarini o'rganing. Google'ni o'rganing, Stack Overflow o'qishga odatlaning va JavaRush yordami bo'yicha savollar bering ! ...Albatta, bularning barchasi yangi boshlanuvchilarning muammolari emas. Izohlarda o'zingizni tasvirlab bering! Java bilan bog'liq maqolalarni o'qishga qiziqasizmi? Java Developer guruhiga qo'shiling . Bu erda juda ko'p qiziqarli narsalar bor.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION