it_vse (519823), страница 54
Текст из файла (страница 54)
Именнологические операции используются в конструкциях IF..ELSE и др.Логическая операция И (AND).!xЛогическая операция НЕ (NOT).-xУнарная операция "изменение знака".x<<2Поразрядный сдвиг битов влево: сдвинуть биты переменной х на 2 бита влево. Пример:00000001 (двоичное) <<2 дает 00000100 (двоичное).Поразрядный сдвиг вправо, поразрядный сдвиг вправо без знака.>>, >>><<=, >>=, >>>= Поразрядный сдвиг с присваиванием.Оператор if - else:Синтаксис:if (выражение) {операторы;} else {операторы; }Пример:1) if ( x==2 && x!=3 ) { /*операторы выполняются если x равен 2 и не равен 3*/ } else { /*операторы */ }2) if (x==2) { /*операторы */ }Оператор whileСинтаксис:1) while (выражение) {операторы;}2) do {операторы;} while (выражение);Пример:1) while(x==2 && x!=3) { x++; /* и др.
операторы - выполняются пока x равен 2 и не равен 3 */ }2) do { /*операторы */ } while (x==2);Операторы forСинтаксис:1) for ( тип_данных счетчик=исходное_значение; (условие_остановки); шаг ) { /*операторы */ }Пример:1) for ( int i=0, long j=10; ( ( i >100 ) | | yslovie_J ( )); i++, raschet_J ( ) ) { /*операторы */ } Ляхевич А.Г., 2000 - 2002 год2) for (int i=0; i==100; i++) {/*операторы */ }Описание метокВ Java нет операторов Goto, поэтому управление на метки передается при помощи операторов break иcontinue (см. ниже). Метки описываются не относительно всей программы, а относительно только техоператоров, которые заключены между скобками { } в описании метки.
Описание меток можно вкладыватьодно в другое.Синтаксис:метка : { /*операторы, относительно которых определена метка*/ }Пример:metka1: { x++;metka2:{ y++; }}Оператор breakИспользуется в конструкциях while, for и switch (см. ниже). Прерывает выполнение цикла и передаетуправление по указанной метке.
Если метка не указана, то управление передается строке, следующей зациклом. Пример:Пример 1metka1: { for (int i=0; i==100; i++) {metka2: { for (int m=0; m==100; m++) {if ( i==77 ) break metka1;if ( m==99 ) break metka2; }}}}Пример 2for (int i=0; i==100; i++) { if ( i==77 ) break; }Пример 3metka: { int x = 3;/* операции */if (x==3) break metka; }Операторы continueИспользуется в конструкциях while, for и switch (см. ниже).
Прерывает выполнение цикла и преждевременнопередает управление к следующему проходу цикла. Указание метки в операторе continue позволяет выбратьуровень вложенности цикла, которому передается управление. Пример:Пример 1metka1: { for (int i=0; i==100; i++) {metka2: { for (int m=0; m==100; m++) {if ( i==77 ) continue metka1;if ( m==99 ) continue metka2; }}}}Пример 2for (int i=0; i==100; i++) { if ( i==77 ) continue; }Операторы switchПереключатель switch (должен иметь целый тип: byte, short, char, int, но не float и boolean) передает управление одному из нескольких составляющих его операторов в зависимости от значения переключателя. Еслисовпадений нет, то управление передается метке по умолчанию (default). Если default-метка отсутствует,программа продолжается с первого оператора, стоящего после блока switch.Синтаксис:switch (переключатель) {case значение1 : оператор1; операторN; break;case значениеN: оператор1; операторN; break;default: оператор1; операторN; break;}Пример:int x=1; switch (x){case 1: System.out.println ("one"); break;case 2: case 3: case ' ': System.out.println ("two or three or space"); break;case default: System.out.println ("Default"); }8.10.
Математические функции, дата и время, работа со строкамиМатематические функции:В пакете java.lang имеется класс Math, который предоставляет некоторые полезные математические итригонометрические функции. Пример:class primer {public static void main(String args[ ] ) { // Запуск программы Ляхевич А.Г., 2000 - 2002 годint chislo1 = Math.min (100, 700); // Возвращает минимальное значения из двух чисел 100 и 700int chislo2 = Math.max (100, 700); // Возвращает максимальное значения из двух чисел 100 и 700int chislo3 = Math.abs (-3); // Возвращает абсолютное значение числаint chislo4 = ( int ) ( 10*Math.random ( ) ) + 1; /* Возвращает случайное целое число от 1 до 10.Здесь Math.random( ) возвращает случайное число от 0 до 1, а конструкция ( int ) ( выражение ) служитдля преобразования выражения, находящегося под скобками, к типу int. Аналогично можно проводитьпреобразования и между другими типами данных.
Наример: ( long ) ( 15.234 + 10.017 ) */long chislo5 = Math.round (10.5); //Округление по правилам математики. Результат = 11double chislo6 = Math.floor(10.7); //Округление всегда в меньшую сторону. Результат = 10double chislo7 = Math.ceil (10.3); //Округление всегда в большую сторону.
Результат = 11double chislo8 = Math.rint (10.5); //Округление до ближайшего целого. Результат = 10double chislo9 = Math.sqrt ( 4 ); //Квадратный корень из 4.double chislo10 = Math.pow ( 7, 1/3 ); // Число 7 в степени 1/3double chislo11 = Math.log ( 7 ); // Натуральный логарифм числа 7.double chislo12 = Math.log ( 7 ) / Math.log ( 10 ); // Десятичный логарифм числа 7.double chislo14 = Math.exp ( 7 ); // Экспонента числа 7, т.е. e7. Существует константа Math.Edouble chislo15 = Math.sin ( 3.14 ); // Синус. Угол задается в радианах. Радианы=градусы*Math.PI / 180.double chislo16 = Math.cos ( Math.PI / 2 ); // Косинус. Угол задается в радианах.double chislo17 = Math.tan ( 3.14 ); /* Тангенс. Существуют также методы asin(), acos(), atan(), означающиеарккосинус, арксинус и арктангенс, соответственно.
*/}}Для генерации случайных чисел можно воспользоваться и классом Random из пакета java.util. Пример:import java.util.Randomclass primer {public static void main(String args[ ] ) { // Запуск программыRandom generator1 = new Random (12345 ); /* Инициализирует генератор случайных чисел числом 12345.Если повторно проинициализировать генератор этим числом, то будетполучена такая же последовательность случайных чисел. Если незадать число, то для инициализации выберется значение системноготаймера (в миллисекундах, прошедших от 01.01.1970 г.)*/int chislo1 = generator1.nextInt ( ); // 32-разрядное случайное число типа intlong chislo2 = generator1.nextLong ( ); // 64-разрядное случайное число типа longfloat chislo3 = generator1.nextFloat ( ); // случайное число типа float в диапазоне от 0 до 1double chislo4 = generator1.nextDouble ( ); // случайное число типа double в диапазоне от 0 до 1double chislo5 = generator1.nextGaussian ( ); /* Случайное число нормального распределения. Среднеезначение =0, стандартное отклонение = 1 */}}Дата и время:Для работы со значениями даты и времени можно воспользоваться следующими конструкциями:import java.util.Date // почти все функции работы с датой и временем находятся в этом классеclass primer {public static void main(String args[ ] ) { // Запуск программыlong timer1 = System.currentTimeMillis( ); //Число миллисекунд, прошедших с 01.01.1970Date timer2 = new Date ();// Создание объекта "дата"int vremya1 = timer2.getYear();// Получить число лет, прошедших с 1900 г, т.е.
для 2001 = 101int vremya2 = timer2.getMonth();// Получить текущий месяц. Январь = 0, Февраль = 1 и т.д.int vremya3 = timer2.getDate();// Получить текущую датуint vremya4 = timer2.getHours();// Получить часыint vremya5 = timer2.getMinutes();// Получить минутыint vremya6 = timer2.getSeconds();// Получить секундыint vremya7 = timer2.getDay();// Получить день недели: 0-воскресенье, 1-понедельник и т.д.// Если менеджер безопасности разрешит вам эти операции, то вы сможете модифицировать дату и время:timer2.setYear(102); // Установить 2002 годtimer2.setMonth(11); // Установить 12-й месяцtimer2.setDate(20);timer2.setHours(23);timer2.setMinutes(5);timer2.setSeconds(10); Ляхевич А.Г., 2000 - 2002 год}}Работа со строками:Работа со строками в Java реализована не достаточно удобно.
Строки в Java фактически представляют собойстроковые константы: после объявления строки ее содержимое нельзя изменять. Для изменения самойстроки нужно создать объект StringBuffer, которому можно присвоить значение строки, а потом егомодифицировать. Затем можно создать новую строку, равную значению объекта StringBuffer. Пример:ПрограммаКомментарииString stroka="Это";// Или более строго: String stroka =new String("Это");StringBuffer karman =new StringBuffer (stroka); // Создание буфера с именем karmankarman.insert(0, 'а') ;// Вставка "а" в 1 позицию строки (индексация - с нуля)karman.append ( '!' ) ;// Добавление "!" к строкеkarman.setCharAt (2, 'а');// Замена третьего символа на "а"stroka=new String (karman);// Присваивание нового значения строке.Единственное исключение из такой неудобной процедуры - можно складывать строки, например:String komy = "вам" ;String summa = "Привет "+komy+"братья" ;Над строками можно выполнять некоторые функции, в результате которых создаются новые измененныестроки (примеры см.