Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 12-й

Здравствуйте дорогие читатели!

Содержание

1. Начинающим
2. Тема "на заказ"
3. Вопрос - ответ
4. Программный код…
5. JavaScript

Начинающим

Операторы

Операторы в языке Java — это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с не­которыми операндами. Некоторые операторы требуют одного операнда, их называют унарными. Одни операторы ставятся перед операндами и называются префиксными, другие — после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называются инфиксными бинарными операторами. Существует тернарный оператор, работающий с тремя операндами.

В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса - арифметические, битовые, операторы сравнения и логические.

Сегодня мы рассмотрим арифметические операторы

Арифметические операторы

Арифметические операторы используются для вычислений так же как в алгебре. Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом char можно, поскольку в Java тип char — это подмножество типа int.

Оператор Результат
+ Сложение
- Вычитание (также унарный минус)
* Умножение
/ Деление
% Деление по модулю
++ Инкремент
-- Декремент
+= Сложение с присваиванием
-+ Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Деление по модулю с присваиванием

Четыре арифметических действия

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


class BasicMath 
{
 public static void int a = 1 + 1; 
 int b = a * 3; 
 main(String args[])
 { 
  int c = b / 4; 
  int d = b - а; 
  int e = -d; 
  System.out.println("a = " + а); 
  System.out.println("b = " + b); 
  System.out.println("c = " + c); 
  System.out.println("d = " + d); 
  System.out.println("e = " + e); 
 }
} 

Исполнив эту программу, вы должны получить приведенный ниже ре­зультат:


C: \> java BasicMath 
a = 2 
b = 6 
c = 1 
d = 4 
e = -4 

Оператор деления по модулю

Оператор деления по модулю, или оператор mod, обозначается символом %. Этот оператор возвращает остаток от деления первого операнда на второй. В отличие от C++, функция mod в Java работает не только с целыми, но и с вещественными типами. Приведенная ниже программа иллюстрирует работу этого оператора.


class Modulus
{ 
 public static void main (String args [])
 { 
  int x = 42; 
  double у = 42.3; 
  System.out.println("x mod 10 = " + x % 10); 
  System.out.println("y mod 10 = " + у % 10); 
 }
} 

Выполнив эту программу, вы получите следующий результат:


С:\> Modulus 
x mod 10 = 2 
y mod 10 = 2.3 

Арифметические операторы присваивания

Для каждого из арифметических операторов есть форма, в которой одновременно с заданной операцией выполняется присваивание. Ниже приведен пример, который иллюстрирует использование подобной разновидности операторов.


class OpEquals
{ 
 public static void main(String args[])
 { 
  int a = 1; 
  int b = 2; 
  int с = 3; 
  a += 5; 
  b *= 4; 
  c += a * b; 
  с %= 6; 
  System.out.println("a = " + a); 
  System.out.println("b = " + b); 
  System.out.println("c = " + c); 
 }
} 

А вот и результат, полученный при запуске этой программы: С:> Java OpEquals


а = 6 
b = 8 
с = 3 

Инкремент и декремент

В С существует 2 оператора, называемых операторами инкремента и декремента (++ и --) и являющихся сокращенным вариантом записи для сложения или вычитания из операнда единицы. Эти операторы уникальны в том плане, что могут использоваться как в префиксной, так и в постфиксной форме. Следующий при­мер иллюстрирует использование операторов инкремента и декремента.


class IncDec
{ 
 public static void main(String args[])
 { 
  int a = 1; 
  int b = 2; 
  int c = ++b; 
  int d = a++; 
  c++; 
  System.out.println("a = " + a); 
  System.out.println("b = " + b); 
  System.out.println("c = " + c); 
  System.out.println("d = " + d); 
 }
} 

Результат выполнения данной программы будет таким:

C:\ java IncDec 
a = 2 
b = 3 
c = 4 
d = 1 

Тема "на заказ"

Печать из Java-приложений.

Java 1.1 и последующие версии предлагают несколько простых методов печати, которые можно вызвать из Java-приложений.

Сначала мы рассмотрим относительно примитивные методы печати, которые предлагает Java, а затем изучим технологию объектно-ориентированного программирования. Знание данной технологии позволит нам построить более полезный и надежный объект Printer.

Основы печати на Java

Java 1.1 представляет класс PrintJob и дополнительный метод print(Graphics g) класса Container, которые образуют систему печати. Вы получаете объект класса PrintJob из класса Toolkit, взятого из класса Frame.


PrintJob pj = getToolkit().getPrintJob(frm, "printing", null); 

Первым аргументом является фрейм приложения, вторым - любое имя задания для печати, а третьим - либо объект класса Properties, либо null. Поскольку система печати на Java не поддерживает никакие свойства, поэтому в качестве объекта вполне можно использовать null.

Класс PrintJob включает следующие методы:

end() Заканчивает процесс печати и выполняет необходимую чистку.
finalize() Заканчивает процесс печати, как только к нему перестают поступать обращения.
GetGraphics() Получает объект Graphics, который изображается на следующей странице.
GetPageDimension() Возвращает размеры страницы в пикселах.
GetPageResolution() Возвращает разрешение страницы в пикселах на дюйм.
LastPageFirst() Возращает "true" ("истинно"), при условии что последняя страница печатается первой.

Простая программа печати

Самой простой программой печати является та, которая:

  1. Создает фрейм;
  2. Получает объект PrintJob;
  3. Получает объект принтера Graphics;
  4. Передаёт данные для печати объекту принтера Graphics;
  5. Удаляет объект принтера Graphics, что приводит к выбросу страницы;
  6. Завершает процесс печати.

Пример подобной программы приводится далее:


import java.awt.*;
public class Printer1 extends Frame
{
 public Printer1()
 {
  //Получаем объект PrintJob
  PrintJob pjob = getToolkit().getPrintJob(this, "Printer", null);
  //Получаем объект Graphics
  Graphics pg = pjob.getGraphics();
  //Печатаем
  pg.setFont(new Font("SansSerif",Font.PLAIN,12));
  pg.drawString("Hello!!!", 100, 100);
  pg.dispose(); //Конец страницы
  pjob.end(); //Завершаем работу
  System.exit(0); //Выходим
 }
 static public void main(String argv[])
 {
  new Printer1();
 }
}
  1. Данная программа поможет нам создать больше общих классов печати:
  2. Задание на печать должно создаваться во фрейме. Поэтому задания на печать почти всегда являются визуальными приложениями.
  3. Когда вы создаете класс PrintJob, появляется системный диалог принтера; после чего вы можете выбрать тип принтера и желаемое количество копий.
  4. Хотя задание на печать создается во фрейме, необязательно чтобы данный фрейм был визуальным или имел ненулевой размер.
  5. Прежде чем отправлять текст на принтер, вы должны выбрать шрифт.
  6. Процесс печати происходит путем передачи данных объекту принтера Graphics.
  7. Каждая страница распечатывается сразу и имеет свой собственный объект Graphics. А метод dispose() позволяет распечатать страницу до конца.

Недостатки простых способов печати

Данная простая программа печати выглядит достаточно примитивно. Мы должны печатать каждую строку текста, в конце каждой строки ставить символ переноса, сами задавать шрифт, а также задавать каждую страницу отдельно.

В следующем номере мы создадим более функциональный объект Printer, который сможет сам задавать, типы шрифтов и конец строки и к тому же, этот процесс будет скрыт от нас.

Вопрос - ответ

Вопрос:
В Graphics2D надо чтобы три картинки вращались независимо друг от друга. Я когда rotate делаю крутятся все, а надо для одной.
Серж

Ответ:
В Graphics2D всё прорисовывается последовательно, т.е. для прорисовки нескольких картинок относительно начальных координат необходимо:

Выполняем поворот на Phi1
Рисуем картинку1
Выполняем поворот на -Phi1 (приводи координатную плоскость в начальное положение)
Выполняем поворот на Phi2
Рисуем картинку2
Выполняем поворот на –Phi2 (приводи координатную плоскость в начальное положение)
Выполняем поворот на Phi3
Рисуем картинку3
Выполняем поворот на –Phi3 (приводи координатную плоскость в начальное положение)
Пример помещаю в раздел “Программный код…”

Вопрос:
Как из аплета перейти по заданной ссылке?
Сергей

Ответ:


try
{
 AppletContext ap = getAppletContext();
 ap.showDocument(new URL("http://my-site/"), "_self");   
}
catch(Exception e)
{
}

Вместо параметра _self можешь подставить _blank для открытия ссылки в новом окне или указать имя фрейма.

Программный код…

Вот простинький пример поворота изображения.


import java.awt.*;
import java.awt.event.*;
class RotateImg extends Frame
{
 public RotateImg()
 {
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
	dispose();
	System.exit(0);
   }
  });
 }
 public static void main(String args[])
 {
  System.out.println("Starting RotateImg...");
  RotateImg mainFrame = new RotateImg();
  mainFrame.setSize(400, 400);
  mainFrame.setTitle("RotateImg");
  mainFrame.setVisible(true);
 }
 public void paint(Graphics g)
 {
  Image img1 = getToolkit().getImage("1.gif");
  Graphics2D g2= (Graphics2D)g;
  g2.drawImage(img1,120,120,this);
  g2.rotate(Math.PI/10);
  g2.drawImage(img1,120,120,this);
  g2.rotate(-Math.PI/10);
  g2.translate(120,120);
  g2.rotate(Math.PI/2);
  g2.translate(-120,-120);
  g2.drawImage(img1,120,120,this);
 }
}

JavaScript

Вопрос:

Не могли бы Вы предложить код JavaScript (для вставки на html-страницу), который выполнял бы следующую операцию:

Страница на сайте состоит из нескольких фреймов (fr1.html, fr2.html, fr3.html ).

В том случае, если посетитель открывает один из фреймов напрямую (допустим, получив ссылку из поискового каталога), JavaScript проверяет, что фрейм открыт отдельно от остальных фреймов и производит перезагрузку таким образом, чтобы страница показывалась с учетом всех фреймов (открывается файл index.html ) .

Структура страницы: index.html - главный файл (разбивка на фреймы);
fr1.html - фрейм 1;
fr2.html - фрейм 2;
fr3.html - фрейм 3.

Виктор

Ответ:

Допустим, имена фреймов fr1, fr2, fr3, то необходимо в файл который загружается во фрейм fr1 вставить между тегами <head;> </head> следующие:


<script; language="JavaScript">
<!--
 if(this.name!="fr1")document.location="index1.html"
//-->
</script>
Подробнее на /javascript/examples/frame1.html

Вопросы присылайте на E-mail [email protected] с пометкой "вопрос по Java".

Жду вопросов и предложений.
Юрий Ладик.

Подписаться на эту рассылку можно тут /subs/subs.html


Дэвид Флэнаган
"Java в примерах. Справочник"
Подробнее>>
Заказать>>


Питер Вейнер
"Java и JavaScript"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!



Выпуск 29-й
Выпуск 28-й
Выпуск 27-й
Выпуск 26-й
Выпуск 25-й
Выпуск 24-й
Выпуск 23-й
Выпуск 22-й
Выпуск 21-й
Выпуск 20-й
Выпуск 19-й
Выпуск 18-й
Выпуск 17-й
Выпуск 16-й
Выпуск 15-й
Выпуск 14-й
Выпуск 13-й
Выпуск 12-й
Выпуск 11-й
Выпуск 10-й
Выпуск 9-й
Выпуск 8-й
Выпуск 7-й
Выпуск 6-й
Выпуск 5-й
Выпуск 4-й
Выпуск 3-й
Выпуск 2-й
Выпуск 1-й