JavaRush /Java блогы /Random-KK /Java үйренуді бастағандардың ең көп кездесетін мәселелері...

Java үйренуді бастағандардың ең көп кездесетін мәселелері

Топта жарияланған
Мақаланы түсіну үшін қажетті білім деңгейі: бастауыш. Сіз Java синтаксисі квестін оқып жатырсыз және оның бастапқы деңгейлеріне жақындайсыз. Java тілін үйрене бастағандардың жиі кездесетін мәселелері – 1Сіз Java тілін енді ғана үйрене бастадыңыз. Сізді мүйізденген сияқты терминдер бомбалайды. Сізге тонналап техникалық ақпарат жүктеледі, кейде сіз үш қарағайда шатасасыз. Маған сеніңіз, сіз бағдарламалауға кірісіп кеткендіктен, БҰЛ ӘРҚАШАН СОНАЙ БОЛАДЫ (осы сәтте экран сыртында сұмдық күлкі естіледі, ал сөйлемнің ортасын кесіп тастаған жайбарақат дауыс: «Жүгір... бұрын өзіңізді құтқарыңыз» деп сыбырлайды. тым кеш...»). Сіз ең жақсы әзірлеуші ​​болсаңыз да, қателер бағдарламалау өміріңіздің соңына дейін сізді қудалайды. Дегенмен, бұл айтылғандай қорқынышты емес.
Егер сіз JavaRush-ті енді ғана үйрене бастасаңыз, мақалада көтерілген мәселелерге тап болған шығарсыз. Қалай болғанда да, біз Java тілін үйренудің алғашқы айларында болған проблемаларды сипаттайтын пікірлерді құптаймыз.

0-деңгей мәселесі: Салыстыру операторымен (==) және тағайындау операторымен (=) шатасу.

Бұл басқа бағдарламалау тілдерінен ауысатындар үшін өте жиі кездесетін мәселе. (=)Ал жалпы, біз бастауыш сыныптан бері бұл теңдік белгісі екеніне үйреніп қалдық . Есте сақтау үшін қолдануға болатын қарапайым трюк мынада: егер сіз мәндердің біреуіне ғана мән беретінін білсеңіз (біреуін екіншісіне тағайындайсыз) сіз жалғыз « =» белгісін қолданасыз, әйтпесе барлық айнымалы мәндерге мән берсеңіз. және мәндер (сіз оларды салыстырасыз) сізге қос « ==» белгісі қажет.

Мәселе: Жолдың эквиваленттігін тексеру үшін салыстыру операторын (==) пайдалану

Не істеу керек: Есіңізде болсын, ешбір Java нысандарының эквиваленттілігін пайдаланып тексеру мүмкін емес(==) , себебі бұл оператор қарапайым түрлердің теңдігін тексеруге арналған.
Java тілін үйренуді бастағандардың жиі кездесетін мәселелері – 2
Объектілер үшін пайдалану керек .equals(). Ал StringJava тілінде бұл an object (және immutable) ғана емес.
Белгіленген нысан Immutable жасалғаннан кейін күйін өзгерту мүмкін емес нысан болып табылады. Java тілінде бұл сыныптың барлық даналық өрістері finalқарабайыр (немесе immutable) ретінде белгіленгенін білдіреді.

Мәселе: Циклдегі жолды біріктіру

Мұны өзіңіз жасамаңыз! Жолдар біріктірілген сайын жаңа нысан жасалады String(жоғарыда білгеніміздей, жолдар immutableөзгермейді). Бір сәтте жадыңыз таусылады немесе бағдарламаны аяқтау үшін тым көп уақыт кетеді. Шешім. Циклдегі мазмұнды біріктіру кезінде StringBuilderоның орнына пайдаланыңыз . StringКласс StringBuilderтаңбалар жолына көп өзгертулер енгізу қажет болғанда қолданылады. Ал мұндай сызықтар, айырмашылығы String, жоқ immutable.

Мәселе: NullPointerException

Мұндай ерекшелік біз nullнақты нысан қажет болғанда нөлдік көрсеткішті қолдануға тырысқанда орын алады.
Барлық қарабайыр түрлерде әдепкі мәндер болады. Сонымен, у int- 0, ал у boolean- false. Кез келген сілтеме түрлерінің, яғни нысандардың әдепкі мәні болып табылады null. Бұл нысан немесе түр емес, бұл ерекше мән. Бұл «мұнда ештеңе жоқ» дегенді білдіреді.
Java тілін үйрене бастағандардың жиі кездесетін мәселелері – 3
Не істеу керек: Егер сіздің codeыңыз белгілі бір уақытта нысан мәнін қабылдай алатындай етіп жазылған болса null, «тексеру null» қосу керек, әсіресе нысанды өзіңіз жасамасаңыз. Сондай-ақ, 's жиынтығынан гөрі бос жинақтарды қайтару жақсы екенін есте сақтаңыз null. Сондай-ақ қабылдаушылар мен орнатушылар үшін тексеруді қосу жақсы болар еді.

Мәселе: қандай да бір себептермен if / while / for циклі жұмыс істемейді

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
Мұнда не болды? Бұл қарапайым: қосымша нүктелі үтір жүздеген мың жаңа Java бағдарламашыларының қанын бұзды. Жақсы, кейін сізге қажет емес if (). Тілдік тұрғыдан алғанда, мұндай синтаксис әбден қолайлы, сондықтан компилятор оған шағымданбайды. Бірақ ол шартты мәлімдемені тоқтатады және блок ішіндегі code {}ешқашан жоғарыдағы шартты қанағаттандырмайды.
Java тілін үйрене бастағандардың жиі кездесетін мәселелері – 4
Шешуі: дизайн логикасын есте сақтаңыз. « ;» белгісі белгілі бір блоктың аяқталуын білдіреді, бірақ мұнда бәрі енді басталып жатыр.

Мәселе: статикалық әдістерден (негізгі сияқты) статикалық емес мүше айнымалы мәндерге қол жеткізуге тырысу

Шешім . Бұл мәселе ұғымның өзін түсінумен байланысты static. Егер әдіс осы сөзбен белгіленсе, бұл негізгі әдісті шақыру үшін классты құрудың қажеті жоқ дегенді білдіреді. Сондықтан шешім «статиканы» жақсы түсіну және олардың мәнін түсіну болып табылады.

Мәселе: бұрыннан бар кітапханалар мен құралдарды әзірлеу арқылы дөңгелекті қайта ойлап табуға тырысу

Шешім. Бұл шын мәнінде соншалықты проблема емес. Жаңадан бастағандар үшін бұл пайдалы жаттығу. Дегенмен, егер сіз нәтижеге назар аударғыңыз келсе, мысалы, ыңғайлы абоненттік деректер базасын жасау, онда телефон кітапшасынан абонентті іздеу - бұл сіздің өтінішіңіздің нәтижелерінің бірі ғана. Бұл жағдайда екілік іздеу алгоритмін жазудың қажеті жоқ. Барын пайдаланыңыз (біз сізге сендіреміз, оны сізден бұрын біреу жазып қойған және ол стандартты кітапханаларда бар). Сондықтан Oracle құжаттамасындағы Java стандартты кітапханаларын зерттеңіз. Google-ды үйреніңіз, Stack Overflow оқуға дағдыланыңыз және JavaRush анықтамасы бойынша сұрақтар қойыңыз ! ...Әрине, бұл жаңадан бастағандардың барлық мәселелері емес. Пікірлерде өзіңізді сипаттаңыз! Сіз Java-ға қатысты мақалаларды оқығыңыз келе ме? Java әзірлеушілер тобына қосылыңыз . Мұнда көптеген қызықты заттар бар.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION