Java чувствителен ли е към главни и малки букви? [затворено]

Четох някъде, че Java е чувствителна към главни и малки букви. Не можах да потвърдя това. Така ли? Ако да защо?


person giri    schedule 24.01.2010    source източник


Отговори (8)


Четох някъде, че Java е чувствителна към главни и малки букви. Не можах да потвърдя това.

Изходният код на Java е чувствителен към главни и малки букви, ако имате предвид това. т.е. Double не е от същия тип като double и можете да имате две различни и отделни променливи myData и mydata.

Така ли? Ако да защо?

Чувствителността към главни и малки букви е норма в повечето програмни езици и среди, тъй като малките и главните букви са представени по различен начин на най-ниските нива. За един компютър "a" и "A" са две напълно различни неща и е необходима допълнителна работа, за да го накарате да действа така, сякаш са едно и също.

Освен това, някои езици имат много трудни специални правила за малки и големи букви, напр. немската буква ß няма главна версия и обикновено е главна на "SS" - така че трябва ли "weiß" и "WEISS" да се считат за синтактично идентични? Още по-лошо е турското: те имат две отделни букви i със и без точка и всяка има своя собствена главна версия. Така че в Турция "ИЗОБРАЖЕНИЕ" не е версията с главни букви на "изображение"! И това изобщо не е без значение, особено за Java, тъй като всъщност можете да използвате всички тези букви като идентификатори във вашите Java програми, ако искате.

В светлината на всичко това е много разбираемо дизайнерите на езици за програмиране да изберат простото решение синтаксисът да е чувствителен към главни и малки букви.

person Michael Borgwardt    schedule 24.01.2010
comment
Мисля, че езиците без регистър могат лесно да съществуват без проблема, който споменавате. Ако позволите идентификаторите / променливите / константите / и т.н. в програмата да бъдат съставени само от ASCII знаци, тогава проблемът вече няма да съществува. Освен това, дори ако сте френски програмист, ще кодирате на английски. Вашият код трябва да бъде разбран от възможно най-много хора. Да, други специални символи могат (и ще съществуват) в символни низове във вашия код, но това е съвсем различен проблем. Не казвам, че трябва да се направи превключване към нечувствителност към главни и малки букви, просто казвам, че ще бъде лесно. - person Radu Murzea; 12.07.2012
comment
Наистина, HTML, CSS и SQL (и по този начин PL/SQL) идват на ум като примери за езици, нечувствителни към малки и главни букви, които не изглежда да имплодират поради ß (въпреки че това е интересен момент). - person William Robertson; 11.04.2017

Да, регистърът на буквите е чувствителен. Това е така поради наследството му от C. За да поддържат езика по-познат за това, с което хората са свикнали „през деня“, те го оставиха като чувствителен към малки и малки букви. Има допълнително предимство, тъй като идентификаторите на Java могат да бъдат почти всеки Unicode знак. Не е нужно да се притеснявате дали отделен знак може да бъде изписан с главни букви или не.

Например трябва ли ß да е еквивалентно на ss?

person Paul Wagland    schedule 24.01.2010
comment
Какъв Unicode знак е това? - person Cole Johnson; 03.08.2013
comment
@ColeCole9Johnson ß МАЛКА БУКВА НА ЛАТИНИЦА SHARP S Unicode: U+00DF, UTF-8: C3 9F - person Paul Wagland; 04.08.2013
comment
С, а? Тогава защо lowercase(U+00DF) води до ss? Сигурен съм, че ще бъде само s. - person Cole Johnson; 04.08.2013
comment
Опитайте да погледнете коментара ми. Unicode U+00DF не е Unicode U+0053. Последното е S, първото е ß. S ≠ ß - person Paul Wagland; 05.08.2013
comment
Съжалявам. Не мисля, че ме разбирате. Вашият коментар звучи така, сякаш този знак е дефиниран като малки букви на ss - person Cole Johnson; 05.08.2013
comment
@ColeCole9Johnson - Е, това е интересното... ß с главни букви е SS или поне беше (en.wikipedia.org/wiki/Capital_%DF), и SS трябва да съответства на ss, така че трябва ли ß да съответства на ss? - person Paul Wagland; 06.08.2013

Идентификаторите са чувствителни към малки и главни букви, тъй като сортирането е труден, зависим от локала проблем.

person Tobu    schedule 24.01.2010
comment
Unicode сортирането дефинира предварителна поръчка, което означава, че също дефинира сравнение без значение за главни и малки букви. - person Tobu; 24.01.2010
comment
Поправям се; съжалявам Вече не мога да променя гласуването, но след като Джоел и Джеф решиха, че е добра идея дискусиите никога да не променят мнението. - person Joey; 24.01.2010
comment
Благодаря, и бих предпочел да пренебрегна положителното подсилване. - person Tobu; 25.01.2010

Java е чувствителна към малки и големи букви, защото използва синтаксис в стил C. Чувствителността към малки и главни букви е полезна, защото ви позволява да заключите какво означава едно име въз основа на неговия регистър.

Например, стандартът на Java за имена на класове е главна първата буква на всяка дума (Integer, PrintStream и т.н.). Стандартът за имената на променливите и методите е малката първа буква на първата дума и главни всички други първи букви (number, println(), checkError() и т.н.). А стандартът за константите е изцяло с главни букви с долна черта (SOME_CONSTANT).

Въпреки че не сте задължени да следвате тези правила във вашия код (той ще се компилира дори ако нарушите тези правила), вграденият код на Java ги следва, както и всички основни библиотеки на Java. И вашият код също трябва да следва тези правила, защото помага на други разработчици да изведат смисъл, когато видят главните букви.

person Kaleb Brasee    schedule 24.01.2010

Това беше по-скоро техническо решение. Java е предназначена да бъде независима от платформата. Публичните Java класове се съхраняват с името на пакета/класа във файловата система. В платформи, различни от Windows, имената на файловете са чувствителни към главни и малки букви. Ще се провали там, ако не използвате точен случай за зареждане/изпълнение на класа. Тази необходимост от чувствителност към малки и главни букви е разширена до други идентификатори в Java (което в крайна сметка дава място за други (но нетехнически) предимства като конвенции за именуване).

person BalusC    schedule 24.01.2010

Дали езикът за програмиране трябва да е чувствителен към главни и малки букви или не води до разделяне на мненията между програмистите. Независимо от дебата е важно да запомните, че Java е чувствителна към главни и малки букви. Това просто означава, че регистърът на буквите във вашите Java програми има значение. Да предположим например, че решите да създадете три променливи, наречени "endLoop", "Endloop" и "EnDlOoP". Въпреки че на английски виждаме имената на променливите като казващи едно и също нещо, Java не го прави. Ще ги третира по различен начин.

person Norvik    schedule 26.10.2011

да Java е чувствителна към малки и главни букви, защото повечето езици за програмиране са!

person Alex Baranosky    schedule 24.01.2010
comment
Бих казал, че това е доста лошо обяснение. - person MightyPork; 03.08.2013

Компилаторът и интерпретаторът на Java са чувствителни към малки и големи букви, така че трябва да използвате главни букви последователно.

HelloWorldApp не е същото като Helloworlddapp.

Тази чувствителност към главни и малки букви отразява наследството на Java като израстък на C и C++.

person Mark R    schedule 24.01.2010