Java chapt01.FirstProgram

Java chapt01.FirstProgram

Тут к имени приложенияFirstProgram.class добавляется имя пакета chapt01, в каком он размещен.

Чтоб выполнить приложение, нужно загрузить и установить последнюю версию пакета, к примеру с веб-сайта java.sun.com. При установки рекомендуется указывать для размещения корневой каталог. Если JDK установлена
в директории (для Windows) c:\jdk1.6.0, то каталог, который Java chapt01.FirstProgram компилятор Java будет рассматривать как корневой для иерархии пакетов, можно вручную задавать при помощи переменной среды окружения СLASSPATHв виде:

СLASSPATH=.;c:\jdk1.6.0\

Переменной задано очередное значение ‘.’ для использования текущей директории, к примеру с:\temp, в качестве рабочей для хранения собственных собственных приложений.

Чтоб можно было вызывать сам компилятор и другие Java chapt01.FirstProgram исполняемые программки, переменную PATH необходимо проинициализировать в виде

PATH=c:\jdk1.6.0\bin

Этот путь показывает на месторасположение файлов javac.exe и java.exe. В разных версиях операционных систем путь к JDK может указываться разными методами.

Но при одновременном использовании нескольких разных версий компилятора и разных библиотек применение переменных среды окружения начинает мешать действенной работе Java chapt01.FirstProgram, потому что при выполнении приложения поиск класса осуществляется независимо от версии. Когда виртуальная машина обнаруживает класс с подходящим именованием, она его и подгружает. Такая ситуация предрасполагает к ошибкам, иногда трудноопределимым. Потому переменные окружения лучше не определять совсем.

Последующая программка показывает в окне консоли аргументы командной строчки способа main(). Аргументы представляют Java chapt01.FirstProgram последовательность строк, разбитых пробелами, значения которых присваиваются объектам массива String[] args. Объекту args[0] присваивается значение первой строчки и т.д. Количество аргументов определяется значением args.length.

/* пример # 4 : вывод аргументов командной строчки: OutArgs.java */

package chapt01;

public class OutArgs {

public static void main(String[] args) {

for(String str : args)

System.out.printf("Aрг-> %s%n", str);

}

}

В Java chapt01.FirstProgram данном примере употребляется новый вид цикла версии Java 5.0 forязыка Java и способ форматированного вывода printf(). Тот же итог был бы получен при использовании обычного цикла

for (int i = 0; i < args.length; i++)

System.out.println("Aрг-> " + args[i]);

Пуск этого приложения осуществляется при помощи последующей командной строчки вида Java chapt01.FirstProgram:

java chapt01.OutArgs 2007 Mustang "Java SE 6"

что приведет к выводу на консоль последующей инфы:

Арг-> 2007

Арг-> Mustang

Арг-> Java SE 6

Приложение, запускаемое с аргументами командной строчки, может быть применено как один из методов ввода строковых данных.

Классы и объекты

Классы в языке Java объединяют поля класса, способы, конструкторы и логические блоки Java chapt01.FirstProgram. Главные отличия от классов C++: все функции определяются снутри классов и именуются способами; нереально сделать способ, не являющийся способом класса, либо объявить способ вне класса; ключевое слово inline, как в C++ , не поддерживается; спецификаторы доступа public,private,protectedдействуют лишь на те объявления полей, способов и классов, перед которыми они стоят, а не Java chapt01.FirstProgram на участок от 1-го до другого спецификатора, как в С++; элементы по дефлоту не инсталлируются в private, а доступны для классов из данного пакета. Объявление класса имеет вид:

[спецификаторы] class ИмяКласса [extends СуперКласс]

[implements список_интерфейсов]{/*определение класса*/}

Спецификатор доступа к классу может быть public (класс доступен в данном пакета и вне пакета Java chapt01.FirstProgram), final (класс не может иметь подклассов), abstract (класс может содержать абстрактные способы, объект такового класса сделать нельзя). По дефлоту спецификатор устанавливается в дружеский (friendly). Таковой класс доступен исключительно в текущем пакете. Спецификатор friendly при объявлении вообщем не употребляется и не является главным словом языка. Это слово употребляется, чтоб как-то Java chapt01.FirstProgram найти значение по дефлоту.

Хоть какой класс может наследовать характеристики и способы суперкласса, обозначенного после ключевика extends, и включать огромное количество интерфейсов, перечисленных через запятую после ключевика implements. Интерфейсы пред­ставляют собой абстрактные классы, содержащие только нереализованные способы.

// пример # 5 : обычный пример Java Beans класса: User.java

package chapt01;

public class User {

public int numericCode;//нарушение Java chapt01.FirstProgram инкапсуляции

private String password;

public void setNumericCode(int value) {

if(value > 0) numericCode = value;

else numericCode = 1;

}

public int getNumericCode() {

return numericCode;

}

public void setPassword(String pass) {

if (pass != null) password = pass;

else password = "11111";

}

public String getPassword() {

//public String getPass() {//неправильно – неполное имя способа

return password;

}

}

Класс User содержит два поля numericCode и password, помеченные как public и private. Значение поля password можно изменять только с помощью способов, к примеру setPassword(). Поле numericCode доступно Java chapt01.FirstProgram конкретно через объект класса User. Доступ к способам и public-полям данного класса осуществляется только после сотворения объекта данного класса.

/*пример # 6 : создание объекта, доступ к полям

и способам объекта: UserView.java : Runner.java */

package chapt01;

class UserView {

public static void welcome(User obj) {

System.out.printf("Привет! Введен код: %d, пароль: %s",

obj Java chapt01.FirstProgram.getNumericCode(), obj.getPassword());

}

}

public class Runner {

public static void main(String[] args) {

User user = new User();

user.numericCode = 71;//неправильно - прямой доступ

// user.password = null; // поле труднодоступно

user.setPassword("pass"); //корректно

UserView.welcome(user);

}

}

Компиляция и выполнение данного кода приведут к выводу на консоль последующей инфы:

Привет! Введен код: 71, пароль: pass

Объект класса создается за два шага. Поначалу объявляется Java chapt01.FirstProgram ссылка на объект класса. Потом при помощи оператора new создается экземпляр объекта, к примеру:

User user; //объявление ссылки

user = newUser(); //создание объекта

Но эти два деяния обычно объединяют в одно:

User user = new User();/*объявление ссылки и создание объекта*/

Оператор newвызывает конструктор, потому в круглых скобках могут стоять аргументы, передаваемые конструктору. Операция присваивания Java chapt01.FirstProgram для объектов значит, что две ссылки будут указывать на один и тот же участок памяти.

Сопоставление объектов

Операции сопоставления ссылок на объекты не имеют особенного смысла, потому что при всем этом сравниваются адреса. Для сопоставления значений объектов нужно использовать надлежащие способы, к примеру, equals(). Этот способ наследуется в каждый Java chapt01.FirstProgram класс из суперкласса Object, который лежит в корне дерева иерархии всех классов и переопределяется в случайном классе для определения эквивалентности содержимого 2-ух объектов этого класса.

/* пример # 7 : сопоставление строк и объектов : ComparingStrings.java */

package chapt01;

public class ComparingStrings {

public static void main(String[] args) {

String s1, s2;

s1 = "Java";

s2 = s1; // переменная ссылается Java chapt01.FirstProgram на ту же строчку

System.out.println("сопоставление ссылок "

+ (s1 == s2)); // итог true

// создание нового объекта добавлением знака

s1 += '2';

// s1-="a"; //ошибка, вычитать строчки нельзя

// создание нового объекта копированием

s2 = new String(s1);

System.out.println("сопоставление ссылок "

+ (s1 == s2)); // итог false

System.out.println("сопоставление значений "

+ s1.equals(s2)); // итог true

}

}

Консоль

Взаимодействие с консолью при Java chapt01.FirstProgram помощи потока System.in представляет собой один из простых методов передачи инфы в приложение. В последующем примере рассматривается ввод инфы в виде знака из потока ввода, связанного с консолью, и следующего вывода на консоль знака и его числового кода.

// пример # 8 : чтение знака из потока System.in : DemoSystemIn.java

package chapt01;

public class ReadCharRunner {

public Java chapt01.FirstProgram static void main(String[] args) {

int x;

try {

x = System.in.read();

char c = (char)x;

System.out.println("Код знака: " + c + " =" + x);

} catch (java.io.IOException e) {

e.printStackTrace();

}

}

}

Обработка исключительной ситуации IOException, которая появляется в операциях ввода/вывода и в всех других взаимодействиях с наружными устройствами, осуществляется в способе main() при помощи реализации Java chapt01.FirstProgram блока
try-catch.

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

// пример # 9 : чтение строчки из консоли : ReadCharRunner.java

package chapt01;

import java.io.*;//подключение пакета классов

public class ReadCharRunner {

public static void main(String[] args) {

/* байтовый поток ввода Java chapt01.FirstProgram System.in передается конструктору потока

чтения при разработке объекта класса InputStreamReader */

InputStreamReader is =

new InputStreamReader(System.in);

/* делается буферизация данных, исключающая необходимость

воззвания к источнику данных при выполнении операции чтения */

BufferedReader bis = new BufferedReader(is);

try {

System.out.println(

"Введите Ваше имя и нажмите :");

/* чтение строчки из буфера; способ readLine() просит обработки Java chapt01.FirstProgram

вероятной ошибки при вводе из консоли в блоке try */

String name = bis.readLine();

System.out.println("Привет, " + name);

} catch (IOException e) {

System.err.print("ошибка ввода " + e);

}

}

}

В итоге пуска приложения будет выведено, к примеру, последующее:

Введите Ваше имя и нажмите :

Остап

Привет, Остап

Позднее подвергнутся рассмотрению более комфортные методы извлечения инфы Java chapt01.FirstProgram из потока ввода, в качестве которого может фигурировать не только лишь консоль, да и дисковый файл, сокетное соединение и пр.

Не считая того, в 6-ой версии языка существует возможность поддержать государственный шрифт при помощи способа printf() определенного для класса Console.

/* пример # 10 : внедрение способа printf() класса Console: PrintDeutsch.java */

public class PrintDeutsch Java chapt01.FirstProgram {

public static void main(String[] args) {

String str = "über";

System.out.println(str);

Console con = System.console();

con.printf("%s", str);

}

}

В итоге будет выведено:

□ber

über

Обычный апплет

Одной из целей сотворения языка Java было создание апплетов - маленьких программ, запускаемых Web-браузером. Так как апплеты должны быть неопасными, они ограничены в собственных способностях Java chapt01.FirstProgram, хотя остаются массивным инвентарем поддержки Web-программирования на стороне клиента.

// пример # 11 : обычной апплет: FirstApplet.java

importjava.awt.Graphics;

importjava.util.Calendar;

public class FirstApplet extendsjavax.swing.JApplet {

private Calendar calendar;

public void init() {

calendar = Calendar.getInstance();

setSize(250,80);

}

public void paint(Graphics g) {

g.drawString("Апплет запущен:", 20, 15);

g.drawString(

calendar.getTime().toString(), 20, 35);

}

}

Для вывода текущего времени Java chapt01.FirstProgram и даты в этом примере был применен объект Calendar из пакета java.util. Способ toString() употребляется для преобразования инфы, содержащейся в объекте, в строчку для следующего вывода в апплет при помощи способа drawString(). Цифровые характеристики этого способа обозначают горизонтальную и вертикальную координаты начала рисования строчки, считая от левого верхнего угла апплета Java chapt01.FirstProgram.

Апплету не нужен способ main()- код его пуска помещается в способ init()либоpaint(). Для пуска апплета необходимо поместить ссылку на его класс в HTML-документ и просмотреть этот документ Web-браузером, поддерживающим Java. При всем этом возможно обойтись очень обычным куском (тегом) в HTML-документе view.html:

Сам файл Java chapt01.FirstProgram FirstApplet.class при таком к нему воззвании должен находиться в той же директории, что и HTML-документ. Исполнителем HTML-документа является браузер Microsoft Internet Explorer либо какой-нибудь другой, поддерживающий Java.

Итог выполнения документа view.html изображен на рис.1.4.

Рис. 1.4. Пуск и выполнение апплета

Для пуска апплетов можно использовать также входящую в Java chapt01.FirstProgram JDK программку

appletviewer.exe.

Задания к главе 1

Вариант A

1. Сделать класс Hello, который будет приветствовать хоть какого пользова­теля, используя командную строчку.

2. Сделать приложение, которое показывает в окне консоли аргументы командной строчки способа main() в оборотном порядке.

3. Сделать приложение, выводящее n строк с переходом и без перехода на новейшую строчку.

4. Сделать приложение для Java chapt01.FirstProgram ввода пароля из командной строчки и сравне­ния его со строкой-образцом.

5. Сделать программку ввода целых чисел как аргументов командной строчки, подсчета их суммы (произведения) и вывода результата на консоль.

6. Сделать приложение, выводящее фамилию разработчика, дату и время получения задания, также дату и время сдачи задания. Для получения последней даты и Java chapt01.FirstProgram времени использовать класс Calendar из пакета java.util.

7. Сделать апплет на базе предшествующего задания и запустить его при помощи HTML-документа.

Вариант B

Ввести с консоли n целых чисел и поместить их в массив. На консоль вывести:

1. Четные и нечетные числа.

2. Наибольшее и меньшее число.

3. Числа, которые делятся на 3 либо на 9.

4. Числа, которые делятся Java chapt01.FirstProgram на 5 и на 7.

5. Элементы, расположенные способом пузырька по убыванию модулей.

6. Все трехзначные числа, в десятичной записи которых нет схожих цифр.

7. Больший общий делитель и меньшее общее кратное этих чисел.

8. Обыкновенные числа.

9. Отсортированные числа в порядке возрастания и убывания.

10. Числа в порядке убывания частоты встречаемости чисел.

11. “Счастливые” числа.

12. Числа Java chapt01.FirstProgram Фибоначчи: f0 = f1 = 1, f (n) = f (n–1) + f (n–2).

13. Числа-палиндромы, значения которых в прямом и оборотном порядке совпадают.

14. Элементы, которые равны полусумме примыкающих эле­ментов.

15. Период десятичной дроби p = m/n для первых 2-ух целых положительных чисел n и m, расположенных попорядку.

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

Тестовые задания к Java chapt01.FirstProgram главе 1

Вопрос 1.1.

Дан код:

class Quest1 {

private static void main (String a) {

System.out.println("Java 2");

} }

Какие исправления нужно сделать, чтоб класс Quest1 стал запускаемым приложением? (изберите 2 правильных варианта)

1) объявить класс Quest1 как public;

2) поменять параметр способа main() на String[] a;

3) поменять модификатор доступа к способу main() наpublic;

4) убрать параметр из объявления Java chapt01.FirstProgram способа main().

Вопрос 1.2.

Изберите настоящие утверждения о способностях языка Java: (изберите 2)

1) может быть внедрение оператора goto;

2) может быть создание способа, не принадлежащего ни одному классу;

3) поддерживается множественное наследование классов;

4) запрещена перегрузка операторов;

5) поддерживается многопоточность.

Вопрос 1.3.

Дан код:

class Quest3 {

public static voidmain(String s[ ]) {

String args;

System.out.print(args + s);

}

}

Результатом Java chapt01.FirstProgram компиляции кода будет:

1) ошибка компиляции: способ main() содержит неверное имя параметра;

2) ошибка компиляции: переменная args употребляется до инициализации;

3) ошибка компиляции: несовпадение типов характеристик при вызове способа print();

4) компиляция без ошибок.

Вопрос 1.4.

Дан код:

public class Quest4 {

public static void main(String[] args) {

byteb[]=new byte[80];

for (int i=0;i

b[i]=(byte)System.in.read Java chapt01.FirstProgram();

System.out.print(“Ok”);

} }

Результатом компиляции и пуска будет:

1) вывод: Ok;

2) ошибка компиляции, потому что способ read() может порождать исключительную ситуацию типа IOException;

3) ошибка компиляции, потому что длина массива b может не совпадать
с длиной считываемых данных;

4) ошибка времени выполнения, потому что массив уже проинициализирован.

Вопрос 1.5.

Дан код:

public Java chapt01.FirstProgram class Quest5{

public static void main(){

System.out.print("А"); }

public static void main(String args){

System.out.print("Б"); }

public static void main(String[] args){

System.out.print("В"); } }

Что будет выведено в итоге компиляции и пуска:

1) ошибка компиляции;

2) Б;

3) ВБА;

4) В;

5) АБВ.

Глава 2

ТИПЫ ДАННЫХ И ОПЕРАТОРЫ

Неважно какая программка манипулирует Java chapt01.FirstProgram информацией (ординарными данными и объектами) при помощи операторов. Каждый оператор производит итог из значений собственных операндов либо изменяет конкретно значение операнда.

Базисные типы данных и литералы

В языке Java употребляются базисные типы данных, значения которых располагаются в стековой памяти (stack). Эти типы обеспечивают более высшую производительность вычислений по сопоставлению с объектами. Не считая Java chapt01.FirstProgram этого, для каждого базисного типа имеются классы-оболочки, которые инкапсулируют данные базисных типов в объекты, располагаемые в динамической памяти (heap).

Определено восемь базисных типов данных, размер каждого из которых остается постоянным независимо от платформы. Беззнаковых типов в Java не существует. Каждый тип данных определяет огромное количество Java chapt01.FirstProgram значений и их представление в памяти. Для каждого типа определен набор операций над его значениями.

Тип Размер (бит) По дефлоту Значения (спектр либо максимум)
boolean false true, false
byte –128..127
char '\u0000' 0..65535
short –32768..32767
int -2147483648..2147483647
long 922372036854775807L
float 0.0 3.40282347E+38
double 0.0 1.797693134486231570E+308

В Java употребляются целочисленные литералы, к примеру: 35– целое десятичное число, 071 – восьмеричное Java chapt01.FirstProgram значение, 0х51 – шестнадцатеричное значение. Целочисленные литералы по дефлоту относятся к типу int. Если нужно найти длиннющий литерал типа long, в конце указывается знак L (к примеру: 0xffffL). Если значение числа больше значения, помещающегося в int (2147483647), то Java автоматом подразумевает, что оно типа long. Литералы с плавающей точкой записываются в виде 1.618 либо в экспоненциальной форме 0.112E-05 и Java chapt01.FirstProgram относятся к типу double, таким макаром, действительные числа относятся к типу double. Если нужно найти литерал типа float, то в конце литерала следует добавить знак F. Символьные литералы определяются в апострофах ('a', '\n', '\141', '\u005a' ). Для размещения знаков употребляется формат Unicode, в согласовании с которым для каждого знака отводится два б. В Java chapt01.FirstProgram формате Unicode 1-ый б содержит код управляющего знака либо государственного алфавита, а 2-ой б соответствует стандартному ASCII коду, как в C++. Хоть какой знак можно представить в виде '\ucode', где code представляет двухбайтовый шестнадцатеричный код знака. Java поддерживает управляющие знаки, не имеющие графического изображения;

'\n'– новенькая строчка, '\r' – переход к началу, '\f Java chapt01.FirstProgram' – новенькая страничка, '\t'– табуляция, '\b' – возврат на один знак,'\uxxxx' – шестнадцатеричный знак Unicode, '\ddd'– восьмеричный знак и др. Начиная с J2SE 5.0 употребляется формат Unicode 4.0. Поддержку четырехбайтным символам обеспечивает наличие особых способов в классе Character.

К литералам относятся булевские значения true и false, также null – значение по дефлоту для ссылки Java chapt01.FirstProgram на объект. При инициализации строчки всегда создается объект класса String – это не массив знаков и не строчка. Строчки, заключенные в двойные апострофы, числятся литералами и располагаются в пуле литералов, но в то же время такие строчки представляют собой объекты.

В арифметических выражениях автоматом производятся расширяющие преобразования типа byte à short à int à long à float à
double
. Java Java chapt01.FirstProgram автоматом расширяет тип каждого byte либо short операнда до int в выражениях. Для сужающих преобразований нужно создавать очевидное преобразование вида (тип)значение. К примеру:

byte b = (byte)128; //преобразование int в byte

Обозначенное в данном примере преобразование необязательно, потому что в операциях присваивания литералов при инициализации преобразования производятся автоматом. При инициализации полей Java chapt01.FirstProgram класса и локальных переменных с внедрением арифметических операторов автоматом производится приведение литералов к объявленному типу без необходимости его очевидного указания, если только их значения находятся в допустимых границах, не считая инициализации объектов классов-оболочек. Java не позволяет присваивать переменной значение более длинноватого типа, в данном случае нужно очевидное преобразование типа. Исключение составляют Java chapt01.FirstProgram операторы инкремента (++), декремента (--) и сокращенные операторы (+=, /= и т.д.). При очевидном преобразовании (тип)значение может быть усечение значения.

Имена переменных не могут начинаться с числа, в именах не могут употребляться знаки арифметических и логических операторов, также знак ‘#’. Применение знаков ‘$’ и ‘_’ допустимо, в том числе и в первой позиции Java chapt01.FirstProgram имени.

/* пример # 1 : типы данных, литералы и операции над ними :TypeByte.java */

packagechapt02;

public class TypeByte {

public static void main(String[] args) {

byte b = 1, b1 = 1 + 2;

final byte B = 1 + 2;

//b = b1 + 1; //ошибка приведения типов

/* b1 – переменная, и на момент выполнения кода b = b1 + 1; может поменяться, и выражение b1 + 1 может превысить допустимый размер byte- типа */

b Java chapt01.FirstProgram = (byte)(b1 + 1);

b = B + 1; // работает

/* B - константа, ее значение определено, компилятор вычисляет значение выражения B + 1, и если его размер не превосходит допустимого для byte типа, то ошибка не появляется */

//b = -b; //ошибка приведения типов

b = (byte) -b;

//b = +b; //ошибка приведения типов

b = (byte) +b;

int i = 3;

//b = i; //ошибка приведения типов, int больше чем byte

b = (byte) i;

final Java chapt01.FirstProgram int I = 3;

b = I; // работает

/*I –константа. Компилятор инспектирует, не превосходит ли ее значение допустимый размер для типа byte, если не превосходит, то ошибка не появляется */

final int I2 = 129;

//b=I2; //ошибка приведения типов, т.к. 129 больше, чем 127

b = (byte) I2;

b += i++; // работает

b += 1000; // работает

b1 *= 2; // работает

float f = 1.1f;

b /= f; // работает

/* все Java chapt01.FirstProgram сокращенные операторы автоматом конвертируют итог выражения к типу переменной, которой присваивается это значение. К примеру, b /= f; равносильно b = (byte)(b / f); */

}

}

Переменная базисного типа, объявленная как член класса, хранит нулевое значение, соответственное собственному типу. Если переменная объявлена как локальная переменная в способе, то перед внедрением она непременно должна быть проинициализирована, потому Java chapt01.FirstProgram что она не инициализируется по дефлоту нулем. Область деяния и время жизни таковой переменной ограничена блоком {}, в каком она объявлена.

Документирование кода

В языке Java употребляются блочные и однострочные комменты /* */
и //, подобные комментариям, используемым в C++. Введен также новый вид комментария /** */, который может содержать дескрипторы вида:

@author – задает сведения об Java chapt01.FirstProgram создателе;

@version – задает номер версии класса;

@exception – задает имя класса исключения;

@param – обрисовывает характеристики, передаваемые способу;

@return – обрисовывает тип, возвращаемый способом;

@deprecated – показывает, что способ устаревший и у него есть более совершенный аналог;

@since – с какой версии способ (член класса) находится;

@throws – обрисовывает исключение, генерируемое способом;

@see – что следует поглядеть дополнительно.

Из java-файла, содержащего такие комменты, соответственная Java chapt01.FirstProgram утилита javadoc.exe может извлекать информацию для документирования классов
и сохранения ее в виде HTML-документа.

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

package chapt02;

public class User {

/**

* personal user's code

*/

private int numericCode;

/**

* user's password

*/

private String password;

/**

* see also chapter #3 "Classes"

*/

public User() {

password = "default Java chapt01.FirstProgram";

}

/**

* @return the numericCode

* return the numericCode

*/

public int getNumericCode() {

return numericCode;

}

/**

* @param numericCode the numericCode to set

* parameter numericCode to set

*/

public void setNumericCode(int numericCode) {

this.numericCode = numericCode;

}

/**

* @return the password

* return the password

*/

public String getPassword() {

return password;

}

/**

* @param password the password to set

* parameter password to set

*/

public void setPassword(String password) {

this.password = password;

}

}

Сгенерированный для этого класса HTML-документ будет иметь вид:

Рис. 2.1. Кусок документации Java chapt01.FirstProgram для класса User

Операторы

Операторы Java фактически совпадают с операторами C++ и имеют таковой же ценность. Так как указатели в Java отсутствуют, то отсутствуют операторы *, &, ->, delete для работы с ними. Операторы работают с базисными типами и объектами классов-оболочек над базисными типами. Операторы + и += создают также деяния с по конкатенации с операндами Java chapt01.FirstProgram типа String. Логические операторы ==, != и оператор присваивания = применимы к операндам хоть какого объектного и базисного типов, также литералам. Применение оператора присваивания
к объектным типам нередко приводит к ошибке несовместимости типов, потому такие операции нужно кропотливо держать под контролем.

Операции над числами: +,,*, %,/,++,–– также битовые операции &, |,^, ~ и операции сдвига подобны операциям C++. Деление Java chapt01.FirstProgram на ноль целочисленного типа вызывает исключительную ситуацию, переполнение не контролируется.

Операции над числами с плавающей запятой фактически те же, что и в других алгоритмических языках, но по эталону IEEE 754 введены понятие бесконечности +Infinity и –Infinity и значение NaN (Not a Number), которое может быть получено, к примеру, при извлечении квадратного корня Java chapt01.FirstProgram из отрицательного числа.

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

+ Сложение / Деление (либо деление нацело для целочисленных значений)
+= Сложение (с присваиванием) /= Деление (с присваиванием)
Бинарное вычитание и унарное изменение знака % Остаток от деления (деление по модулю)
–= Вычитание (с присваиванием) %= Остаток от деления (с присваиванием)
* Умножение ++ Инкремент (повышение значения на единицу)
*= Умножение (с присваиванием) –– Декремент (уменьшение значения Java chapt01.FirstProgram на единицу)

Битовые операторы над целочисленными типами

| Либо >> Сдвиг на право
|= Либо (с присваиванием) >>= Сдвиг на право (с присваиванием)
& И >>> Сдвиг на право с возникновением нулей
&= И (c присваиванием) >>>= Сдвиг на право с возникновением нулей и присваиванием
^ Исключающее либо << Сдвиг на лево
^= Исключающее либо (c присваиванием) <<= Сдвиг на лево Java chapt01.FirstProgram с присваиванием
~ Унарное отрицание

Операторы дела

< Меньше > Больше
<= Меньше или равно >= Больше или равно
== Равно != Не равно

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

Логические операторы

|| Либо && И
! Унарное отрицание

К логическим операторам относится также оператор определения принадлежности типу instanceof и тернарный Java chapt01.FirstProgram оператор ?: (if-then-else).

Логические операции производятся только над значениями типов booleanи Boolean (true либо false).

// пример # 2 : битовые операторы и %: DemoOperators.java

packagechapt02;

public class DemoOperators {

public static void main(String[] args) b2));

System.out.println(b1 + "&" + b2 + " = " + (b1&b2));

System.out.println(b1 + "^" + b2 + " = " + (b1^b2));

System.out.println( "~" + b2 + " = " + ~b Java chapt01.FirstProgram2);

System.out.println(b1 + ">>" + ++i + " = " + (b1>>i));

System.out.println(b1 + "<<" + i + " = " + (b1<

System.out.println(b1 + ">>>" + i +" = " + (b1>>>i));

}

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

5%1=0 5%2=1

14|9 = 15

14&9 = 8

14^9 = 7

~9 = -10

14>>1 = 7

14<<1 = 28

14>>>2 = 3

Тернарный оператор "?" употребляется в выражениях вида:


izvrashenie-fiziologicheskih-reakcij-k-i-platonov-slovo-kak-fiziologicheskij-i-lechebnij-faktor.html
izvrashyonnie-seksualnie-praktiki-aureliya-luiza-dzhouns-telos.html
izyashlosbergchelovek-snega-ilyavarshavskij-strannaya-istoriya.html