- •Краткая историческая справка.
- •Преимущества языка Java.
- •Недостатки java:
- •Лекция 2. Этапы разработки java-приложений. Этапы разработки java-приложений.
- •Установка jdk.
- •Инсталляция исходных кодов библиотек
- •Инсталляция пакета документации.
- •Тестирование правильности установки и создание простейшей программы
- •Визуальные среды программирования.
- •Лекция 3. Переменные и типы данных. Переменные и типы данных.
- •Подробности о примитивных типах.
- •Лекция 4. Операторы и функции. Операторы и функции.
- •Операторы ветвлений и циклов.
- •Оператор цикла while.
- •Оператор цикла for.
- •Лекция 5. Объектно ориентированное программирование Объектно ориентированное программирование.
- •Определение объекта.
- •Инкапсуляция.
- •Наследование.
- •Полиморфизм (перегрузка).
- •Пример ооп – программы.
- •Отличие перегрузки функций от переопределения.
- •Отличие классов от интерфейсов.
- •Лекция 6. Массивы и строки. Массивы и строки.
- •Многомерные массивы.
- •Приведение типов и динамические массивы.
- •Строки в java.
- •Лекция 7. Организация ввода-вывода данных Организация ввода-вывода данных.
- •Функции стандартной библиотеки ввода/вывода.
- •Новая библиотека ввода/вывода.
- •Классы потокового ввода/вывода из пакета java.Io.
- •Лекция 8. Обработка исключений. Обработка исключений.
- •Классификация исключений.
- •Перехват исключений блоками try/catch.
- •Самостоятельное выбрасывание исключений.
- •Разработка собственных классов исключений.
- •Лекция 9. Потоки. Потоки.
- •1. Cпециальный класс Thread.
- •2. Реализация интерфейса Runnable.
- •Выбор между использованием класса Thread и интерфейса Runnable.
- •Синхронизация потоков с помощью оператора synchronized.
- •Синхронизация потоков с помощью семафоров.
- •Лекция 10. Подключаемые библиотеки java. Подключаемые библиотеки java.
- •Библиотека awt
- •Внутреннее устройство системы обработки событий awt.
- •Библиотека Swing.
Лекция 3. Переменные и типы данных. Переменные и типы данных.
Алфавит языка. Идентификаторы. Знаки операций. Выражения. Константы. Типы данных. Объявление и инициализация переменных. Строки. Инициализация строк. Функции работы со строками.
Прежде чем переходить к более сложным конструкциям языка есть смысл рассмотреть систему типов, которые в этом языке программирования используются. При всей похожести на многие другие языки, java в этом смысле обладает рядом важных особенностей, незнание которых приведет к появлению в программах трудноуловимых и неочевидных ошибок. Прежде всего следует сказать, что в java все типы делятся на два больших класса: ссылочные и примитивные. Таким образом, общая система типов java имеет следующий вид.
Разница между ссылочными типами и примитивными в том, что примитивные типы занимают ячейку памяти своим значением, а ссылочные типы содержат в своей ячейке памяти не само значение, а ссылку на другую ячейку, где находится значение.
То есть, пользуясь терминологией С++, в ячейке памяти, связанной с переменной примитивного типа содержится само значение переменной, а в ячейке памяти ссылочного типа лежит указатель на другую ячейку, где лежит значение. Это приводит к тому, что при взаимном присвоении переменных простых типов, они остаются независимыми друг от друга, а при взаимном присвоении переменных ссылочных типов, они начинают указывать на одну и ту же область памяти!
Следовательно, при написании программ на java, следует обращать внимание, что чему присваиваешь.
Приведу простой пример.
Int a = 1;
Int b = 0;
a = b;
b = 3;
System.out.println(“a=”+a);
System.out.println(“b=”+b);
На экране будет напечатано:
-------------------
a = 0
b = 3
То есть, значение переменной а изменило свое значение на значение b, но когда мы поменяли значение b, это никак не отразилось на а, поскольку переменные а и b ссылаются на разные ячейки памяти. Каждая на свою, и операция присвоения
a = b
ничего здесь не изменила.
Теперь проведем ту же манипуляцию со ссылочным типом.
String[] a = new String[1];
String[] b = new String[1];
a[0] = “I’m a!”;
b[0] = “I’m b!”;
a = b;
b[0] = “I’m new b!!!”;
System.out.println(“a=”+a[0]);
System.out.println(“b=”+b[0]);
На экране будет напечатано:
-------------------
a = I’m new b!!!
b = I’m new b!!!
Произошло это потому, что после присвоения переменные a и b фактически стали ссылаться на одну и ту же ячейку памяти, а конкретно – на ту ячейку, которая первоначально была выделена для переменной b.
В java ссылка на ячейку памяти может быть пустой, то есть не указывать ни на какое конкретное значение. Для таких случаев предусмотрено специальное ключевое слово «null». Его можно присвоить любой переменной ссылочного типа.
String a = null;
Ссылки в java по сути являются указателями, совершенно аналогичными указателям С++, с той лишь разницей, что получить этот указатель в числовом виде и изменять его произвольно как в С++, в java не разрешено. Этим обеспечивается гарантированная защита от случайной порчи указателя и ошибок доступа к памяти.
