Подробнее о языке заголовка см. раздел Параллельные данные.
Наличие
Повторяется для заголовка, содержащего данные на разных языках.
Для обозначения языка заголовка используется трехсимвольный код.
Язык хорош для сетей. Известно, что даже бытовую технику объединяют/подключают в(к) сети - "сетевой" язык очень полезен. На Java удобно писать сетевые программки. Язык придумали в фирме Sun не на пустом месте. (см также на их сайт (9) или русcкоязычный ресурс (10)). Итак Sun сделали интерпретируемую версию C++ под названием Oak - для видеомагнитофонов, микроволновых печей и проч.. Программы для такой техники не должны зависать (ТВ или печь не должна виснуть). Потому в синтаксис заложена надежность и безопасность программок. Язык JavaTM компании Sun Microsystems решает эти проблемы.
// это однострочный комментарий
/* это многострочный
комментарий */
(или можно посреди строки /* кусок программки */ при отладке так вот закомментировать)
/** это особый комментарий */ для создания документации при помощи утилиты javadoc. Она кое-что понимает и создает документацию в виде HTML-страницы. Например комментарий относится к введенной следом переменной в программке. Тогда в HTML-странице будет мой комментарий и следом - та самая переменная указана. Посмотрите в Документацию Java! Полезно документацией уметь пользоваться. Ее очень много и все запомнить нереально. (и, как уже было сказано, в печатаных книгах за Sun не поспевают.. Реплика из зала: есть книжка, морально старая, но хорошо написанная - 2 тома - P.Norton "программирование на Java".
целочисленные = для хранения целых чисел
byte (8 bit) : -128 - +127
short = 2 byte : -32768 .. +32767
int = 4 byte : -... +2147483647
long = 8 byte : много-много ( 10**19 степени)
Много разных типов? Это сделано для экономии места в оперативной памяти. Если есть куча *небольших* чисел, то мне незачем отводить на них *большие* куски памяти. На использование int рассчитаны все функции. Если переполняется предусмотренная под тот или иной тип ячейка памяти - данные просто теряются. Но такие ошибки надо предусматривать и перехватывать механизмом перехвата исключительных ситуаций.
float : 4 byte : min=+/-1,4*10**-45 max=+/-3,4*10**+38
double : 8 byte : max=+/-2*10**-308 max=+/-1.7*10**+308
Символьные
char : 2 byte (чтобы туда влазила кодировка unicode - см www.unicode.org - 65 000 символов на всех языках и еще место осталось). В Win окне или в DOS-окне не сработает, но в бродилках все ОК
boolean : thrue/false (нельзя как в других языках понимать это как 0 или 1)
Что такое "простые типы" ? Это значит отвели память и никак ее не структурировали. А еще существуют сложные типы данных - объекты. Об них позднее. Теперь о них упоминаю, чтоб вас не пугало отсутствие строкового типа string. Объекты - это современно и здорово. Это нужно освоить. Это несложно и удобно... Но пока закончим разговор про простые типы.
int a; // мы сделали переменную имя а для хранения целого числа.
// в конце оператора ставят ; и пробелов, табуляций.. может
// быть много (не то что в Бейсике)
Память не только выделилась, но и заполнилась. В других языках надо инициализировать переменную - назначить ей некоторое значение, "ноль" например, иначе там будет вредный мусор. А в java переменная сама собой заполняется нулями. Вещественная переменная заполнилась бы 0,0 ; Символьная заполнится нулевым символом кодировки unicode (т.е. 0000 ), boolean - false ; (хотя лучше все же инициализировать явно, по старинке)
Вводить переменные можно в любом месте до их использования. А не только в начале.
Имена как и в других языках - состоят из букв, цифр (но с цифры имя нельзя чтоб начиналось), символа подчеркивания. (это правило полезно использовать и в именах файлов)
a = 5 ; // в объявленную ранее переменную занесли 5
Можно эти операции объединить вот так:
int a = 5 ;
Примеры для переменных других простых типов:
float c = 7.2 ;
boolean d = true ;
char e = 'M' ; // только в одинарные кавычки
Спецсимволы - как и в C - например:
\n enter=newline \t = tab \r = enter \f = newpagetoprint \b backspace
Использование числовых значений кодировки unicode:
\u0037 = это то же самое, что символ '7' (цифры десятичные)
Расшифровка символов есть на сайте Unicode и на
розданном CD есть расшифровка для русского языка.
Чтобы спецсимвол не работал как спецсимвол, ставят косую черту:
char c = '\'' ; // тут в "c" поместили символ "одиночная кавычка"
Экзотика: Можно использовать и 8 и 16-ричную форму записи, например так:
a = 0x7B // записано 16-ричное число 7B
a = 0175 // записано 8-ричное число 175
---
Какие преобразования типов данных возможны?:
int x; // 4 byte длиной
byte y; // 1 byte длиной
x=y; // более короткое число "y 1 byte длиной" положили в место
// для длинного "x 4 byte длиной"
Наоборот тоже возможно, но компилятор будет ругаться.
Еще можно явно преобразовывать типы:
y=(byte)x; // сделать из 4-байтового числа "x" 1-байтовое
Аналогичные штуки работают для вещественных чисел.
double z = 7.8; Превратим вещ. z в целое
x=(int)z; // сработает, но пропадет хвостик 0.8
А если попытаться написать x=z; то компилирование не произойдет и байт-код не получиться. Наоборот, преобразование с удлинением места в памяти не обязательно указывать во что преобразовываем. То есть при таком безопасном преобразовании можно применить неявную форму записи преобразования. То есть в примере выше можно написать z=x;
(кто не знает что такое % - это есть вычисление остатка от
целочисленного деления, например
10 % 3 -> получится 1 ,
10,2 % 3 -> тоже 1)
увеличить на число и результат положить в ту же ячейку-переменную, откуда брали. Сокращают запись:
а=а+5; то же самое что а+=5;
Аналогично пишут для - % * /
Инкремент, например а=а+1;
++а = сначала увеличиваем переменную, потом можем
воспользоваться хранящимся в ней значением.
а++ = наоборот, сначала можем воспользоваться хранящимся
в переменной значением, потом увеличиваем ее на единицу;
Пример:
int a=5, b;
b=++a; // это значит в b попала шестерка
// (сначала к 5 прибавилась 1, потом ее
// использовали для занесения в ячейку "6")
Аналогично есть "декремент"
--а или а--
(это все не сложно, нужно лишь привыкнуть и запомнить разные разности)
(результат будет булевского типа)
< > =< >= ==
!= не равно
Пример
int a = 5;
int b = 6;
boolean c
c = а == b // в "с" будет-запишется false
|| или
! не
&& и
исчерпывающие примеры
true && true = true
true && false = false
false && true = false
false && false = false
true || true = true
true || false = true
false || true = true
false || false = false
!true = false
!false = true
Зачем это нужно? Для написания всяких сложных условий типа "если переменная А меньше того-то, но больше сего-то , тогда
Прежде чем погибнуть по причине ошибки, программа создает "исключения". Это объекты - экземпляры какого-нибудь класса из подклассов java.lang.Throwable Класс Throwable содержит строку сообщения String. Много стандартных классов-наследников у Throwable.
Их (объекты-"исключения") можно перехватывать и обрабатывать, не давая совершиться чему-то страшному. Например вводим буквы вместо цифр в калькулятор. "Обработать искл.сит.", - значит понять что случилось, остановить программу и выдать сообщение, "не цифра!" например. Применяется конструкция