- •К экзамену
- •1 Семестр
- •1.Общая характеристика Java
- •2. Жизненный цикл программы Java
- •3. Лексические основы Java
- •4. Операции в Java
- •5. Примитивные типы данных
- •6. Булевские переменные и булевская алгебра
- •7. Условный оператор
- •9. Оператор Break
- •10. Оператор Switch
- •11. Цикл While
- •12. Цикл Do
- •13. Цикл For
- •14. Одномерные массивы
- •15. Многомерные массивы
- •16. Введение в строки
- •Преимущества:
- •Недостатки:
- •Преимущества:
- •Недостатки:
- •17. Основные конструкторы класса String
- •Работа со строками (класс String)
- •21. Класс StringBuffer
- •22. Методы StringBuffer
- •23. Класс StringTokenizer и его методы
- •24. Общие понятия об ооп
- •28. Определение классов и методов
- •29. Модификаторы доступа
- •30. Описание методов
- •38. Статические переменные
- •39. Перегрузка метода
- •40. Рекурсивные методы
- •41. Конструкторы
- •42. Инициализаторы
- •43. Реализация наследования в Java
- •44. Производные методы
- •Замечание
- •Типы исключений
- •2. Блоки try-catch-throw
- •Несколько разделов catch
- •Вложенные операторы try
- •Throw ОбъектТипаThrowable;
- •3. Иерархия классов исключительных ситуаций
- •4. Базовые классы исключений и их методы
- •5. Проверяемые и непроверяемые исключения
- •6. Создание собственных классов исключений
- •7. Типы коллекций в Java
- •8. Класс ArrayList, конструкторы, основные методы
- •9. Класс LinkedList и его методы
- •10. Общая характеристика потоков Java
- •Создание потоков
- •Запуск и остановка
- •Приостановка и возобновление
- •11. Иерархия типов в java.Io
- •12. Класс InputStream и его методы
- •19. Класс File
- •Класс DataInputStream (производный от InputStream)
- •Класс DataOutputStream (производный от OutputStream)
- •Классы BufferedInputStream и BufferedOutputStream
- •Класс RandomAccessFile
- •Классы InputStreamReader и OutputStreamWriter (производные от Reader и Writer)
- •Классы FileReader и FileWriter
- •Зачем сериализация нужна?
- •Как сериализовать объект?
- •Формат сериализованного объекта
- •Алгоритм сериализации Java
- •21. Форматирование данных при выводе Методы printf и format
- •22. Класс Scanner, конструкторы, основные методы
- •23. Архитектура mvc (Model/View/Controller) Архитектура Model-View-Controller (mvc)
- •Еще Java фреймвоки
- •24. Gui общее понятия, принципы реализации в Java
- •25. Событийная модель Java
Алгоритм сериализации Java
К этому моменту у вас уже должно быть достаточно знаний, чтобы сериализовать объект. Но как работает этот механизм? Алгоритм сериализации делает следующие вещи:
запись метаданных о классе ассоциированном с объектом
рекурсивная запись описания суперклассов, до тех пор пока не будет достигнут java.lang.object
после окончания записи метаданных начинается запись фактических данных ассоциированных с экземпляром, только в этот раз начинается запись с самого верхнего суперкласса
рекурсивная запись данных ассоциированных с экземпляром начиная с самого низшего суперкласса
21. Форматирование данных при выводе Методы printf и format
Пакет java.io содержит класс PrintStream, который содержит эти два метода, эти методы можно использовать вместо print и println. Объект System.out, который вы уже использовали — это объект PrintStream, поэтому вы можете вызывать методы PrintStream используя System.out. Например:
1 |
System.out.format(.....); |
Синтаксис методов одинаков:
1 |
public PrintStream format(String format, Object... args) |
где format — это строка которая определяет шаблон, согласно которому будет происходить форматирование, args — это список переменных, для печати по заданному шаблону. Простой пример:
1 2 3 |
System.out.format("The value of " + "the float variable is " + "%f, while the value of the " + "integer variable is %d, " + "and the string is %s", floatVar, intVar, stringVar); |
Строка format содержит обычный текст и специальные форматирующие символы. Эти символы начинаются со знака процента (%) и заканчиваются конвертором — символом, который определяет тип переменной для форматирования. Пример:
1 2 |
int i = 461012; System.out.format("The value of i is: %d%n", i); |
Спецификатор %d определяет одну десятичную целую переменную. %n — переход на новую линию. Данный пример выведет:
1 |
The value of i is: 461012 |
22. Класс Scanner, конструкторы, основные методы
считывать данные с консоли. Это совсем не трудно, так как для считывания у нас есть специальный встроенный класс, который носит название Scanner. У него есть много функций (методов) для считывания, такие как nextInt, nextLine, а также для проверки, присутствует ли переменная того или иного типа и доступна ли она для считывания.
Для начала покажу сам код, который мы будем использовать для считывания и вывода, а потом уже напишу пояснения. Вот собственно и он:
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.*;
public abstract class calc { public static void main(String[] args) { Scanner sc= new Scanner(System.in); int a=sc.nextInt(); System.out.println(a); sc.close(); } } |
Вот видите, совсем небольшой
В самом начале кода, мы подключаем стандартную библиотеку, в которой и находится наш класс для считывания. Это библиотека Java.util.*;
‘*’ означает что будут подключены все классы основной библиотеки util.
Дальше уже следует обычный код, который был автоматически написан для нас при создании главного класса. Если Вы еще не знаете как создать класс на Java, то прочтите.
Теперь когда все подключено и создано, нам остается лишь сделать новый указатель на класс считывания и воспользоваться методом nextInt для считывания переменной типа INT.
Также мы могли бы считать другую переменную, но об этом чуть позже.
После считывания мы выводим ее на экран (точнее в консоль) и главное ЗАКРЫВАЕМ (вызываем метод close из класса Scanner) наш поток считывания.
Ну вот, теперь вы имеете общее представление о том, как считать переменные из консоли на Java и как вывести переменную в консоль на Java.
После общего понятия работы класса, нам нужно изучить его методы, которые использует класс Scanner для считывания данных. К примеру nextInt это метод (функция) для считывания переменных типа INT.
Вот методы класса Scanner для работы со считыванием данных:
void |
close()Прекращение работы с потоком. |
boolean |
hasNext()Возвращает true если есть что вводить. |
boolean |
hasNextBigDecimal()Возвращает true если можно ввести BigDecimal |
boolean |
hasNextBigInteger()Возвращает true если можно ввести BigInteger |
boolean |
hasNextBoolean()Возвращает true если можно ввести boolean |
boolean |
hasNextByte()Возвращает true если можно ввести byte |
boolean |
hasNextDouble()Возвращает true если можно ввести double |
boolean |
hasNextFloat()Возвращает true если можно ввести float |
boolean |
hasNextInt()Возвращает true если можно ввести int |
boolean |
hasNextLine()Returns true if there is another line in the input of this scanner |
boolean |
hasNextShort()Возвращает true если можно ввести short |
String |
next()Позвращает введенную строку до символа перехода строки (Enter) |
BigDecimal |
nextBigDecimal()Возвращает введенное число типа BigDecimal. |
BigInteger |
nextBigInteger()Возвращает введенное число типа BigInteger. |
boolean |
nextBoolean()Возвращает введенное логическое значение (true | false) |
double |
nextDouble()Возвращает введенное число типа double. |
byte |
nextByte()Возвращает введенное число типа byte. |
float |
nextFloat()Возвращает введенное число типа float. |
int |
nextInt()Возвращает введенное число типа int. |
long |
nextLong()Возвращает введенное число типа long. |
short |
nextShort()Возвращает введенное число типа short. |