Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория экзамен.doc
Скачиваний:
25
Добавлен:
29.05.2015
Размер:
516.61 Кб
Скачать

Алгоритм сериализации 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.