Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на java / Лекции / Тема 1.1 Введение в Java.ppt
Скачиваний:
134
Добавлен:
14.02.2015
Размер:
1.13 Mб
Скачать

Выражения

Правила вычисления выражений:

Операции одного приоритета вычисляются слева

направо: х + у + z вычисляется как (х + у) + z.

Исключение: операции присваивания

вычисляются справа налево: х = у = z вычисляется как х = (у = z).

Левый операнд вычисляется раньше правого.

Операнды полностью вычисляются перед

выполнением операции.

Перед выполнением составной операции присваивания значение левой части сохраняется для использования в правой части.

int а = 3, b = 5;

b + (b = 3) // результат 8 (b = 3) + b // результат 6 b += (b = 3) // результат 8

41

Выражения

Из констант и переменных, операций над ними, вызовов методов и скобок составляются выражения. Разумеется, все элементы выражения должны быть совместимы, нельзя написать, например, 2 + true.

Порядок вычисления выражения всегда можно отрегулировать скобками.

42

Выражения

Приоритет операций (в порядке убывания):

1.Постфиксные операции ++ и —.

2.Префиксные операции ++ и —, дополнение ~ и отрицание !.

3.Приведение типа (тип).

4.Умножение *, деление / и взятие остатка %.

5.Сложение + и вычитание -.

6.Сдвиги <<, >>, >>>.

7.Сравнения >, <, >=, <=.

8.Сравнения ==, !=.

9.Побитовая конъюнкция &.

10.Побитовое исключающее ИЛИ ^.

11.Побитовая дизъюнкция | .

12.Конъюнкция &&.

13.Дизъюнкция | | .

14.Условная операция ?: .

15.Присваивания =, +=, -=, *=, /=, %=, &=, ^=, |=, <<, >>,

>>>.

43

Консольный ввод-вывод

Потоковые объекты:

System.in – объект класса InputStream;

System.out – объект класса OutputStream;

Вывод данных: метод System.out.println( );

System.out.println("Hello World"); // вывод строки System.out.println(245); // вывод числовой константы

// Вывод строковой или численной переменной

int var = 245; String text = "Hello World";

System.out.println(text); System.out.println(var);

// Вывод произвольного сочетания переменных и констант

System.out.println("Hello" + "number = " + var);

// Вывод вещ. чисел с ограничением числа знаков после запятой

double f = 2.567432;

NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2);

System.out.println(nf.format(f));

44

Консольный ввод-вывод

В языке Java для поддержки консольного ввода-вывода имеются три встроенных потоковых объекта System.in, System.out и System.err, которые можно использовать в программе, не создавая собственных потоков.

Поток System.in является встроенным объектом подкласса InputStream и предназначен для ввода информации с клавиатуры. Поток System.out является объектом подкласса OutputStream и позволяет выводить информацию на монитор. Поток System.err – поток для вывода сообщений об ошибках на монитор.

Вывод данных в консольном приложении выполняется с помощью метода System.out.println( ) . Данный метод достаточно удобен и позволяет выводить константы и переменные в самых различных сочетаниях.

Наряду с методом println( ) существует также очень похожий метод print( ). Единственное его отличие заключается в том, что он не осуществляет перевода строки, то есть с его помощью можно выводить несколько значений в одну строку.

Для ограничение числа знаков после запятой при выводе вещественных чисел необходимо создать обьект класса NumberFormat и вызвать его метод setMaximumFractionDigits(), с помощью которого можно указать, сколько следует выводить знаков после запятой. Класс NumberFormat входит в состав пакета java.text.

В метод println() передается результат форматирования переменных с помощью метода format() класса NmberFomat.

45

Консольный ввод-вывод

Ввод данных с клавиатуры:

// установить связь с вводимыми с клавиатуры данными

import java.io.*

BufferedReader bReader = new

BufferedReader (new InputStreamReader(System.in));

// ввод строки данных

String cStr;

cStr = bReader.readLine();

// преобразование строки данных

int iNum = Integer.parseInt(cStr); float fNum = Float.parseFloat(cStr); double dNum = Double.parseDouble(cStr);

46

Консольный ввод-вывод

К сожалению, при вводе чисел или знаков в программу для их обработки, все выглядит немного сложнее. Здесь необходимы специальные классы и механизмы пакета java.io, который в этой теме не будет рассматриваться подробно, так как о нем пойдет речь в следующих темах.

Считывание вводимых с клавиатуры данных производится в программе на Java в два этапа:

установить связь с вводимыми с клавиатуры данными;

преобразовать вводимые пользователем знаки в данные соответствующего типа.

Для того, чтобы установить связь с вводимыми с клавиатуры данными используются три различных класса (BufferedReader, InputStreamRreader, System.in), которые взаимодействуют между собой и возвращают значение в переменную bReader.

Так как мы используем класс BufferedReader из пакета java.io, то необходимо в самом начале программы обеспечить импорт этого пакета с помощью инструкции import java.io.*.

Переменная bReader имеет тип класса BufferedReader, из которого мы используем только метод readLine( ), необходимый для получения введенной пользователем с клавиатуры строки.

Преобразование строки, которая содержит некое число, в соответствующее численное значение производится с помощью специальных методов, которые существуют для каждого элементарного типа данных. Необходимым условием при вызове данных методов является то, что строка cStr должна соответствовать подразумеваемому виду. Если метод получает строку ”Hello”, то при всем своем желании компилятор не сможет преобразовать ее в число!

47

Консольный ввод-вывод

Класс Scanner:

import java.util.Scanner; // импортируем класс public class Main

{public static void main(String[] args)

{ Scanner sc = new Scanner(System.in); // создаём объект

// класса Scanner

int i = 2;

System.out.print("Введите целое число: "); if(sc.hasNextInt())

{// возвращает истинну если с потока ввода можно

// считать целое число

i = sc.nextInt(); // считывает целое число с потока

// ввода и сохраняем в переменную System.out.println(i*2);

} else {

System.out.println("Вы ввели не целое число");

}

}

}

48

Консольный ввод-вывод

Класс Scanner:

import java.util.Scanner; // импортируем класс public class Main

{public static void main(String[] args)

{Scanner sc = new Scanner(System.in); // создаём объект

//класса Scanner

double i = sc.nextDouble(); // если ввести букву s, то

// случится ошибка во время

// выполнения программы

System.out.println(i/3);

}

}

49

Консольный ввод-вывод

Для ввода данных можно использовать класс Scanner из библиотеки пакетов Java (java.util). Этот класс надо подключить в программе, где он будет использоваться с помощью команды import (import java.util.Scanner).

В классе есть методы для чтения очередного символа заданного типа со стандартного потока ввода, а также для проверки существования такого символа.

Для работы с потоком ввода необходимо создать объект класса Scanner, при создании указав, с каким потоком ввода он будет связан (см. пример на слайде). Стандартный поток ввода (клавиатура) в Java представлен объектом — System.in. А стандартный поток вывода (дисплей) — уже знакомым вам объектом System.out. Есть ещё стандартный поток для вывода ошибок — System.err.

Метод hasNextDouble(), применённый объекту класса Scanner, проверяет, можно ли считать с потока ввода вещественное число типа double, а метод nextDouble() — считывает его. Если попытаться считать значение без предварительной проверки, то во время исполнения программы можно получить ошибку (отладчик заранее такую ошибку не обнаружит). Например, попробуйте в представленной на слайде программе ввести не какое-то вещественное число, а букву.

С помощью класса java.util.Scanner можно считывать различного типа данные из файлов (см. пример на следующем слайде).

50