Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое |
Общие представления о языке Java
1.5.Идентификаторы. Переменные и типы. Примитивные и ссылочные типы
Идентификаторы - это имена переменных, подпрограмм-функций и других элементов языка программирования. В идентификаторах можно применять только буквы и цифры, причем первой всегда должна быть буква (в том числе символы подчеркивания и доллара), а далее может идти произвольная комбинация букв и цифр. Некоторые символы национальных алфавитов рассматриваются как буквы, и их можно применять в идентификаторах. Но некоторые используются в качестве символов-разделителей, и в идентификаторах их использовать нельзя.
Язык Java является регистро-чувствительным. Это значит, что идентификаторы чувствительны к тому, в каком регистре (верхнем или нижнем) набираются символы. Например, имена i1 и I1 соответствуют разным идентификаторам. Это правило привычно для тех, кто изучал языки C/C++, но может на первых порах вызвать сложности у тех, кто изучал язык PASCAL, который является регистро-нечувствительным.
Длина идентификатора в Java любая, по крайней мере, в пределах разумного. Так, даже при длине идентификатора во всю ширину экрана компилятор NetBeans правильно работает.
Переменная – это именованная ячейка памяти, содержимое которой может изменяться. Перед тем, как использовать какую-либо переменную, она должна быть задана в области программы, предшествующей месту, где эта переменная используется. При объявлении переменной сначала указывается тип переменной, а затем идентификатор задаваемой переменной. Указание типа позволяет компилятору задавать размер ячейки (объем памяти, выделяемой под переменную или значение данного типа), а также допустимые правила действий с переменными и значениями этого типа. В Java существует ряд предопределенных типов: int – целое число, float – вещественное число, boolean – логическое значение, Object – самый простой объектный тип (класс) Java, и т.д. Также имеется возможность задавать собственные объектные типы (классы), о чем будет рассказано позже.
Объявление переменных a1 и b1, имеющих некий тип MyType1, осуществляется так:
MyType1 a1,b1;
При этом MyType1 – имя типа этих переменных.
Другой пример – объявление переменной j типа int:
int j;
Типы бывают предопределенные и пользовательские. Например, int – предопределенный тип, а MyType1 – пользовательский. Для объявления переменной не требуется никакого зарезервированного слова, а имя типа пишется перед именами задаваемых переменных.
Объявление переменных может сопровождаться их инициализацией - присваиванием начальных значений. Приведем пример такого объявления целочисленных переменных i1 и i2:
int i1=5; int i2=-78;
либо
int i1=5,i2=-78;
Присваивания вида int i1=i2=5;, характерные для C/C++, запрещены.
Для начинающих программистов отметим, что символ "=" используется в Java и многих других языках в качестве символа присваивания, а не символа равенства, как это принято в математике. Он означает, что значение, стоящее с правой стороны от этого символа, копируется в переменную, стоящую в левой части. То есть, например, присваивание b=a означает, что в переменную (ячейку) с именем b надо скопировать значение из переменной (ячейки) с именем a. Поэтому неправильное с точки зрения математики выражение
x=x+1
в программировании вполне корректно. Оно означает, что надо взять значение, хранящееся в ячейке с именем x, прибавить к нему 1 (это будет происходить где-то вне ячейки x ), после чего получившийся результат записать в ячейку x, заменив им прежнее значение.
После объявления переменных они могут быть использованы в выражениях и присваиваниях:
переменная=значение; переменная=выражение; переменная1= переменная2;
и так далее. Например,
i1=i2+5*i1;
Примитивными типами называются такие, для которых данные содержатся в одной ячейке памяти, и эта ячейка не имеет подъячеек.
Ссылочными типами называются такие, для которых в ячейке памяти ( ссылочной переменной ) содержатся не сами данные, а только адреса этих данных, то есть ссылки на данные. При присваивании в ссылочную переменную заносится новый адрес, а не сами данные. Но непосредственного доступа к адресу, хранящемуся в ссылочных переменных, нет. Это сделано для обеспечения безопасности работы с данными – как с точки зрения устранения непреднамеренных ошибок, характерных для работы с данными по их адресам в языках C/C++/PASCAL, так и для устранения возможности намеренного взлома информации.
Если ссылочной переменной не присвоено ссылки, в ней хранится нулевой адрес, которому дано символическое имя null. Ссылки можно присваивать друг другу, если они совместимы по типам, а также присваивать значение null. При этом из одной ссылочной переменной в другую копируется адрес. Ссылочные переменные можно сравнивать на равенство, в том числе на равенство null. При этом сравниваются не данные, а их адреса, хранящиеся в ссылочных переменных.
В Java все типы делятся на примитивные и ссылочные. К примитивным типам относятся следующие предопределенные типы: целочисленные типы byte, short, int, long, char, типы данных в формате с плавающей точкой float, double, а также булевский (логический) тип boolean и типы-перечисления, объявляемые с помощью зарезервированного слова enum (сокращение от enumeration – "перечисление"). Все остальные типы Java являются ссылочными.
В Java действуют следующие соглашения о регистре букв в идентификаторах:
- Имена примитивных типов следует писать в нижнем регистре (строчными буквами). Например, int, float, boolean и т.д.
- Имена ссылочных типов следует начинать с заглавной (большой) буквы, а далее для имен, состоящих из одного слова, писать все остальные буквы в нижнем регистре. Например, Object, Float, Boolean, Collection, Runnable. Но если имя составное, новую часть имени начинают с заглавной буквы. Например, JButton, JTextField, JFormattedTextField, MyType и т.д. Обратите внимание, что типы float и Float, boolean и Boolean различны – язык Java чувствителен к регистру букв!
- Для переменных и методов имена, состоящие из одного слова, следует писать в нижнем регистре. Например, i, j, object1. Если имя составное, новую часть имени начинают с заглавной буквы: myVariable, jButton2, jTextField2.getText() и т.д.
- Имена констант следует писать в верхнем регистре (большими буквами), разделяя входящие в имя составные части символом подчеркивания "_". Например, Double.MIN_VALUE, Double.MAX_VALUE , JOptionPane.INFORMATION_MESSAGE, MY_CHARS_COUNT и т.п.
- Символ подчеркивания "_" рекомендуется использовать для разделения составных частей имени только в именах констант и пакетов.
Переменная примитивного типа может быть отождествлена с ячейкой, в которой хранятся данные. У нее всегда есть имя. Присваивание переменной примитивного типа меняет значение данных. Для ссылочных переменных действия производятся с адресами ячеек, в которых хранятся данные, а не с самими данными.
Для чего нужны такие усложнения? Ведь человеку гораздо естественнее работать с ячейками памяти, в которых хранятся данные, а не адреса этих данных. Ответ заключается в том, что в программах часто требуются динамически создаваемые и уничтожаемые данные. Для них нельзя заранее создать необходимое число переменных, так как это число неизвестно на этапе написания программы и зависит от выбора пользователя. Такие данные приходится помещать в динамически создаваемые и уничтожаемые ячейки. А с этими ячейками удается работать только с помощью ссылочных переменных.
Ссылочные типы Java используются в объектном программировании. В частности, для работы со строками, файлами, элементами пользовательского интерфейса. Все пользовательские типы (задаваемые программистом) , кроме типов-перечислений, являются ссылочными. В том числе – строковые типы.
Краткие итоги
- Алфавит языка Java состоит из букв, десятичных цифр и специальных символов. Буквами считаются латинские буквы (кодируются в стандарте ASCII), буквы национальных алфавитов (кодируются в стандарте Unicode), а также соответствующие им символы, кодируемые управляющими последовательностями.
- В программах разрешается пользоваться десятичными и шестнадцатеричными целыми числовыми константами. Шестнадцатеричная константа начинается с символов 0x или 0X, после чего идет само число в шестнадцатеричной нотации.
- Java - универсальный язык прикладного программирования, JavaScript – узкоспециализированный язык программирования HTML-документов, C++ - универсальный язык системного программирования. Java - компилируемый, платформонезависимый, объектно-ориентированный язык с C-образным синтаксисом.
- Программы Java переносимы как на уровне исходных кодов, так и на уровне скомпилированных исполняемых кодов – байт-кода. Байт-код является платформонезависимым, так как не содержит инструкций процессора конкретного компьютера. Он интерпретируется виртуальной Java-машиной (JVM).
- JIT-компиляция (Just-In-Time) – компиляция байт-кода в код конкретной платформы в момент выполнения программы, то есть "по ходу дела", "налету". Она позволяет ускорить работу программ за счет замены интерпретации байт-кода на выполнение скомпилированного кода.
- Основные категории программ Java:
- Приложение (application) – аналог "обычной" прикладной программы.
- Апплет (applet) – специализированная программа, работающая в окне WWW-документа под управлением браузера.
- Сервлет (servlet) - специализированная программа, работающая в WWW на стороне сервера
- Модуль EJB (Enterprise JavaBeans) – предназначен для многократного использования серверными приложениями Java
- Библиотека – предназначена для многократного использования программами классов Java
- Версии Java 1.0 и 1.1 принято называть Java 1. Все версии Java начиная c 1.2 принято называть Java 2.
- Поставить на компьютер исполняющую среду Java (виртуальную Java-машину) можно путем установки SDK (Software Development Kit) - Комплекта разработки программного обеспечения. Имеется три типа SDK:
- Java ME – комплект Java Micro Edition, предназначенный для программирования "тонких аппаратных клиентов".
- Java SE – комплект Java Standard Edition, предназначенный для программирования обычных компьютеров.
- Java EE– комплект Java Enterprise Edition, предназначенный для написания серверного программного обеспечения.
- Язык Java является регистро-чувствительным. Исходные коды программ Java набираются в виде последовательности символов Unicode.
- Управляющая последовательность применяется в случае, когда требуется использовать символ, который обычным образом в текст программы ввести нельзя. Простая управляющая последовательность начинается с символа "\", после которого идет управляющий символ. Управляющая последовательность для кодирования символа Unicode начинается с последовательности из двух символов -"\u", после которой следует четыре цифры номера символа в шестнадцатеричной нотации. Например, \u1234.
- Специальные символы используются в качестве операторов и разделителей языка Java и не могут входить в состав идентификаторов. Специальные символы бывают простые и составные. Они используются в операторах, для форматирования текста и как разделители.
- Идентификаторы - это имена переменных, процедур, функций и т.д. В идентификаторах можно применять только буквы и цифры, причем первой всегда должна быть буква, а далее может идти произвольная комбинация букв и цифр. Длина идентификатора в Java любая.
- Переменная – это именованная ячейка памяти, содержимое которой может изменяться. При объявлении переменной сначала указывается тип переменной, а затем идентификатор задаваемой переменной.
- Типы в Java делятся на примитивные и ссылочные. Существует несколько предопределенных примитивных типов, все остальные – ссылочные. Все пользовательские типы кроме типов-перечислений являются ссылочными. Значение null соответствует ссылочной переменной, которой не назначен адрес ячейки с данными.
Типичные ошибки:
- Путают языки Java и JavaScript, либо считают, что JavaScript – это интерпретируемый вариант Java. Хотя эти языки не имеют друг к другу никакого отношения.
- Ошибочно считают, что приложение Java может быть запущено на любом компьютере без установки исполняющей среды (JRE).
- Не различают приложения (applications) и апплеты (applets).
- При записи шестнадцатеричного числа вида 0x… вместо ведущего нуля пишут букву O.
- Ошибочно считают, что в идентификаторах Java нельзя использовать символы национальных алфавитов.
- Ошибочно считают, что не имеет значения, в каком регистре набраны символы идентификатора (характерно для тех, кто раньше программировал на PASCAL или FORTRAN).
Задания
- Написать в 16-ричном виде числа 0, 1, 8, 15, 16, 255, 256.
- Дать ответ, являются ли допустимыми идентификаторами i1, i_1, 1i, i&1, i1234567891011, IJKLMN?
- Являются ли допустимыми и различными идентификаторы myObject, MyObject, myobject, Myobject, my object, my_object?