* Типове данни, масиви и оператори в Java
Публикувано на 12 септември 2009 в раздел ПИК3 Java.
Вече споменахме, че обектите са в основана на езика Java. В езика е залегнала йерархична структура за групирането им. Всички обекти със сходни свойства се обединяват в класове. Класовете от своя страна се обединяват в пакети. Засега обаче ще се фокусираме към синтаксис на езика и ще се спрем по-подробно на класовете и модификаторите за достъп в по-следваща статия.
„Сорс-кодът“ на програмите на Java се записва във файлове с разширение .java. Когато бъдат компилирани до байткод те получават разширение .class. Именно този .class файл е преносимият код, който може да бъде компилиран на различни машини.
Както всяка стандартна програма, така и Java програмите имат своя „входна точка“, т.е. място от което се стартират. Обикновено е прието в .java файла да дефинираме клас със същото име като файла и той да бъде публичен, т.е. „достъпен за външния свят“. В този клас се дефинира и основен метод (в Java е прието функциите и процедурите да се наричат методи) с име „main“. Ето как ще изглежда нашата първа Java програма. Създайте текстов файл с име myfirstprogram.java и запишете в него следната информация:
public class myfirstprogram{ public static void main(String[] args) { System.out.format("%s", "Hello World\n"); } }
Ако компилирате този файл се досещате, че ще бъде изписан надписът „Hello World“. По конвенция методът main трябва да бъде публичен и статичен (както казахме по-късно ще се спрем над дефиниция на тези термини – засега приемете това наготово). Подадения му входен параметър args е масив от входни параметри от тип String, който може да бъде подаден чрез командния ред. Методът System.out.format() е стандартен форматиран изход познат от C като printf() и се използва за отпечатване на информация в конзолата.
Няма да се спираме над дефиниция на основните типове данни – те са добре познати от програмирането на C:
- boolean – булев тип приемащ за стойност литерали true или false;
- char – символ в кодировка unicode;
- byte – 8 битово цяло число;
- short – 16 битово цяло число;
- int – 32 битово цяло число;
- long – 64 битово цяло число;
- float – 32 битово число с плаваща запетая;
- double – 64 битово число с плаваща запетая.
При тип char специалните символи са:
- \n – нов ред;
- \r – връщане в началото на ред;
- \t – табулация;
- \b – връщане на символ назад (backspace);
- \’ – апостроф;
- \“ – кавички;
- \\ – знак наклонена черта.
За разлика от C и C++ стандартно в езика Java (без допълнителна библиотека) е наличен и низов тип String. Той се състои от поредица от 16 битови unicode символи (т.е. естествена алтернатива на масив от тип char). За разлика от основните типове данни обаче, той е обект. На този етап е достатъчно да знаем, че обектите се съхраняват в heap, а не в стека. По-нататък ще видим повече подробности.
Масиви в Java могат да бъдат задавани по два еквивалентни начина:
int[] array1; int array2[];
Първият запис е нововъведение в Java спрямо C и C++. Вторият начин на записване е по-удобен за програмистите свикнали да пишат на C. Между тези два записа няма никаква разлика. Въпреки това не се окуражава използването на втория синтаксис – от Oracle препоръчват първия, тъй като той е типичен за езика Java. Масивите в Java са обекти. За разлика от C в Java не е предвидена възможност за създаване на масив с стек.
Показания пример по-горе се нарича „дефиниция на масив“, т.е. създадена е променлива, която сочи към обект от тип масив, но самият той все още не е „създаден“. Тъй като масивите са обекти, то те се създават чрез оператор new:
array1 = new int[10]; array2 = new int[5];
Както виждате размерността на масива се посочва при неговото създаване, а не при неговата дефиниция. Следващата стъпка е „инициализация“ на масива. Тя става по стандартния познат начин:
array1[0] = 4; array1[1] = 5;
Искаме да отбележим като особеност спрямо езика C, че в момента на създаване на масив той се инициализира автоматично със стандартни начални стойности. При целочислените типове данни това е числото 0 (с L накрая ако е long), при типовете в плаваща запетая е 0.0 (с f накрая ако е float), при char e символът \u0000, а при тип boolean е false. Това означава, че ако искаме да отпечатаме съдържанието на така записания масив array1, то първите два елемента ще са числата 4 и 5, а останалите до края ще са 0.
Двумерните и „n“-мерните масиви се дефинират аналогично:
int[][] array3 = new int[2][3]; array3[0][2] = 5;
Операторите в Java са следните:
1. Унарни:
a) ++ – инкрементиране с 1;
b) – – декрементиране с 1;
c) + – положително число, например +3;
d) – – отрицателно число, например -3;
e) ~ – побитово инвертиране, например 00001111 става 11110000;
f) ! – логическо отрицание;
g) (<тип>) – преобразуване на тип данни, например ако x е от тип int, то можем да направим double d = (double)x.
2. Аритметични:
a) + – събиране (използва се и за конкатенация на обекти от тип String);
b) – – изваждане;
c) * – умножение;
d) / – деление;
e) % – остатък от деление при целочислените типове.
3. Сравнение:
a) < – по-малко;
b) <= – по-малко или равно;
c) > – по-голямо;
d) >= – по-голямо или равно;
e) == – равно;
f) != – не равно.
4. Логически:
a) && – логическо „и“;
b) || – логическо „или“.
5. Побитови:
a) & – побитово „и“;
b) | – побитово „или“;
c) ^ – побитово „изключващо или“;
d) << – изместване вляво;
e) >> – изместване вдясно;
f) >>> – изместване вдясно без знак (нов оператор, който не присъства в C/C++, но на който няма да се спираме).
не може ли да сложите някакви стрелкички, които да водят до следващия урок… сега трябва пак да връщам на раздел java->по-стари публикации… благодаря :)
Очевидно може… Ще се постарая когато имам време. Иначе междувременно виж това:
https://www.cphpvb.net/sitemap/