Макаланы түшүнүү үчүн талап кылынган бorм деңгээли: башталгыч. Сиз Java синтаксисинин тапшырмасын изилдөө процессиндесиз жана анын баштапкы деңгээлине жакындап калдыңыз.
Сиз жаңы эле Java тorн үйрөнө баштадыңыз. Сиз бир корнукопиядан алынган терминдер менен бомбаланып жатасыз. Сизге тонналаган техникалык маалыматтар жүктөлөт, кээде сиз үч карагайда адашып каласыз. Мага ишен, сен буга чейин эле программалоо менен алектенип калгансың, ДАЙЫМ УШУНДАЙ БОЛОТ (ушул маалда экрандан коркунучтуу күлкү угулуп, сүйлөмдүн ортосунан кесилген жайбаракат үн шыбырап, “Чурка... мурун өзүңдү сакта. кеч...»). Сиз эң мыкты иштеп чыгуучу болсоңуз да, мүчүлүштүктөр программалоо өмүрүңүздүн аягына чейин сизди кыйнашат. Бирок, бул сезилгендей коркунучтуу эмес.
Эгер сиз JavaRushти жаңыдан үйрөнө баштаган болсоңуз, анда сиз макалада айтылган көйгөйлөргө туш болгонсуз. Кандай болгон күндө да, биз Java тorн үйрөнгөнүңүздүн алгачкы айларында болгон көйгөйлөрдү сүрөттөгөн комментарийлерди кабыл алабыз. |
0-деңгээл маселеси: Салыштыруу оператору (==) жана дайындоо оператору (=) менен чаташуу.
Бул башка программалоо тилдеринен которулгандар үчүн өтө кеңири таралган көйгөй.
(=)
Ал эми жалпысынан башталгыч класстан бери биз бул бирдей белги экенине көнүп калганбыз . Жөнөкөй ыкманы эстеп калууга болот: эгер сиз баалуулуктардын бирине гана маани берериңизди билсеңиз (бирин экинчисине дайындайсыз) сиз бир гана "
=
" белгисин колдоносуз, антпесе бардык өзгөрмөлөргө маани берсеңиз. жана баалуулуктарды (сиз аларды салыштырасыз) сизге кош "
==
" белгиси керек.
Маселе: Саптын эквиваленттүүлүгүн текшерүү үчүн салыштыруу операторун (==) колдонуу
Эмне кылуу керек: Эсиңизде болсун,
эч бир Java an objectисинин эквиваленттүүлүгүн колдонуу менен текшерүү мүмкүн эмес(==)
, анткени бул оператор примитивдүү типтердин теңдигин текшерүү үчүн иштелип чыккан.
an objectтер үчүн колдонуу керек
.equals()
. Ал эми
String
Java тorнде бул an object гана эмес (жана
immutable
).
деп белгиленген an object Immutable түзүлгөндөн кийин абалын өзгөртүү мүмкүн эмес an object болуп саналат. Javaда бул класстын бардык мисал талаалары примитивдер (же ошондой эле ) катары белгиленгенин билдирет . final immutable |
Маселе: Циклдеги сапты бириктирүү
Муну өзүңүз аракет кылбаңыз! Саптар бириктирилген сайын жаңы an object түзүлөт
String
(жогоруда билгенибиздей, саптар
immutable
өзгөрүлбөйт). Кайсы бир убакта эс тутумуңуз түгөнүп калат же программа аяктоо үчүн өтө көп убакытты талап кыла баштайт.
Чечим. Циклдеги мазмунду бириктиргенде
StringBuilder
анын ордуна колдонуңуз .
String
Класс
StringBuilder
символдор сабына көп өзгөртүүлөрдү киргизүү керек болгондо колдонулат. Жана мындай саптар, айырмаланып
String
, андай эмес
immutable
.
Көйгөй: NullPointerException
Мындай өзгөчөлүк биз нөл көрсөткүчтү колдонууга аракет кылганда,
null
биз чындыгында реалдуу an object керек болгондо пайда болот.
Бардык примитивдүү типтердин демейки маанилери бар. Ошентип, y int болот 0 , жана у boolean болот false . Ар кандай шилтеме түрлөрүнүн, башкача айтканда, an objectтердин демейки мааниси null . Бул an object же тип эмес, бул өзгөчө баалуулук. Бул негизинен "бул жерде эч нерсе жок" дегенди билдирет. |
Эмне кылуу керек: Эгер сиздин codeуңуз кандайдыр бир учурда an objectиңиздин маанисин кабыл ала тургандай кылып жазылган болсо
null
, сиз "текшерүү
null
" белгисин кошушуңуз керек, өзгөчө an objectти өзүңүз түзбөй жатсаңыз. Ошондой эле эсиңизде болсун, 's топтомуна караганда бош коллекцияларды кайтаруу жакшыраак
null
. Алуучу жана орнотуучулар үчүн валидацияны кошсоңуз жакшы болмок.
Маселе: эмнегедир if / while / for цикли иштебей жатат
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
Бул жерде эмне болду? Бул жөнөкөй: кошумча үтүрлүү чекит жүз миңдеген жаңы Java программисттеринин канын бузуп салды. Ооба, андан кийин сага кереги жок
if ()
. Тил көз карашынан алганда, мындай синтаксис абдан алгылыктуу, ошондуктан компилятор ага нааразы болбойт. Бирок ал шарттуу билдирүүнү токтотот жана блоктун ичиндеги code
{}
эч качан жогорудагы шартты канааттандырbyte.
Чечим: Дизайн логикасын унутпаңыз. “
;
” белгиси белгилүү бир блоктун аягы дегенди билдирет, бирок бул жерде баары жаңыдан башталып жатат.
Көйгөй: Статикалык эмес мүчө өзгөрмөлөргө статикалык ыкмалардан кирүүгө аракет кылуу (мисалы, негизги)
Solution . Бул маселе концепциянын өзүн түшүнүүгө байланыштуу
static
. Эгерде метод ушул сөз менен белгиленсе, бул негизги методду чакыруу үчүн классты түзүүнүн кереги жок дегенди билдирет. Демек, чечим - "статиканы" жакшы түшүнүү жана алардын маңызын түшүнүү.
Маселе: Учурдагы китепканаларды жана куралдарды иштеп чыгуу менен дөңгөлөктү кайра ойлоп табууга аракет кылуу
Чечим. Бул чындыгында анчалык деле көйгөй эмес. үйрөнчүктөр үчүн, бул пайдалуу көнүгүү болуп саналат. Бирок, эгер сиз жыйынтыкка көңүл бургуңуз келсе, мисалы, абоненттердин ыңгайлуу базасын түзүү, анда телефон китепчесинде абонентти издөө сиздин арызыңыздын натыйжаларынын бири гана. Бул учурда бинардык издөө алгоритмин жазуунун кереги жок. Учурдагысын колдонуңуз (сизди ишендиребиз, аны кимдир бирөө сизге чейин жазып койгон жана ал стандарттык китепканаларда бар). Ошентип, Oracle documentтериндеги Java стандарттык китепканаларын изилдеңиз. Google'ду үйрөнүңүз, Stack Overflow окууга көнүңүз жана
JavaRush жардамында суроолорду бериңиз ! ...Албетте, булар башталгычтардын бардык проблемалары эмес. Комментарийлерде өзүңүздүн оюңузду сүрөттөңүз!
Сиз Java менен байланышкан макалаларды окугуңуз келеби? Java Developer тобуна кошулуңуз .
Бул жерде көп кызыктуу нерселер бар.
GO TO FULL VERSION