<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>QA</title>
		<link>http://qa.at.ua/</link>
		<description></description>
		<lastBuildDate>Wed, 01 Jul 2020 15:26:24 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://qa.at.ua/news/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>ЧТО ТАКОЕ AD-HOC ТЕСТИРОВАНИЕ?</title>
			<description>&lt;p&gt;Что же такое&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;b&gt;Ad-hoc testing&amp;raquo;&lt;/b&gt;, то есть&amp;nbsp;&lt;b&gt;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;Свободное или Интуитивное тестирование&amp;raquo;&lt;/b&gt;. Часто его путают с другим видом тестирования&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;b&gt;Exploratory testing&amp;raquo;&lt;/b&gt;&amp;nbsp;&amp;ndash;&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;strong&gt;Исследовательское тестирование&lt;b&gt;&amp;raquo;&lt;/b&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Давайте, рассмотрим разницу между ними.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Свободное тестирование&amp;nbsp;&lt;/i&gt;&lt;strong&gt;(ad-hoc testing)&lt;/strong&gt;&amp;nbsp;&amp;ndash; это&amp;nbsp;вид тестирования, который выполняется без подготовки к тестированию продукта, без определения ожидаемых результатов, проектирования тестовых сценариев. Это неформальное, импровизационное тестирование. Оно не требует никакой документации, планирования, процессов, которых следует придерживаться при выполнении тестирования. Такой способ тестирования в большинстве случаев дает большее количество заведенных отчётов об ошибке. &amp;nbsp;Это обусловлено тем, что тестировщик на пер...</description>
			<content:encoded>&lt;p&gt;Что же такое&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;b&gt;Ad-hoc testing&amp;raquo;&lt;/b&gt;, то есть&amp;nbsp;&lt;b&gt;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;Свободное или Интуитивное тестирование&amp;raquo;&lt;/b&gt;. Часто его путают с другим видом тестирования&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;b&gt;Exploratory testing&amp;raquo;&lt;/b&gt;&amp;nbsp;&amp;ndash;&amp;nbsp;&lt;strong&gt;&amp;laquo;&lt;/strong&gt;&lt;strong&gt;Исследовательское тестирование&lt;b&gt;&amp;raquo;&lt;/b&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Давайте, рассмотрим разницу между ними.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Свободное тестирование&amp;nbsp;&lt;/i&gt;&lt;strong&gt;(ad-hoc testing)&lt;/strong&gt;&amp;nbsp;&amp;ndash; это&amp;nbsp;вид тестирования, который выполняется без подготовки к тестированию продукта, без определения ожидаемых результатов, проектирования тестовых сценариев. Это неформальное, импровизационное тестирование. Оно не требует никакой документации, планирования, процессов, которых следует придерживаться при выполнении тестирования. Такой способ тестирования в большинстве случаев дает большее количество заведенных отчётов об ошибке. &amp;nbsp;Это обусловлено тем, что тестировщик на первых шагах приступает к тестированию основной функциональной части продукта и выполняет как позитивные, так и негативные варианты возможных сценариев.&lt;/p&gt;

&lt;p&gt;Чаще всего такое тестирование выполняется, когда владелец продукта не обладает конкретными целями, проектной документацией и ранее поставленными задачами. При этом тестировщик полагается на свое общее представление о продукте, сравнение с похожими продуктами, собственный опыт. Однако при тестировании ad-hoc имеет смысл владеть общей информацией о продукте, особенно если проект очень сложный и большой. Поэтому нужно хорошее представление о целях проекта, его назначении и основных функциях и возможностях. А дальше уже можно приступать к&amp;nbsp;&lt;b&gt;ad-hoc тестированию.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Виды свободного тестирования (ad-hoc testing):&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;b&gt;Buddy testing&lt;/b&gt;&amp;nbsp;&amp;ndash; процесс, когда 2 человека, как правило разработчик и тестировщик, работают параллельно и находят дефекты в одном и том же модуле тестируемого продукта. Такой вид тестирования помогает тестировщику выполнять необходимые проверки, а разработчику исправлять множество дефектов на ранних этапах.&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;Pair testing&lt;/b&gt;&amp;nbsp;&amp;ndash; процесс, когда 2 тестировщика проверяют один модуль и помогают друг другу. К примеру, один может искать дефекты, а второй их документировать. Таким образом, у одного тестера будет функция, скажем так, обнаружителя, у другого &amp;ndash; описателя.&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;Monkey testing&lt;/b&gt;&amp;nbsp;&amp;ndash; произвольное тестирование продукта с целью как можно быстрее, используя различные вариации входных данных, нарушить работу программы или вызвать ее остановку (простыми словами &amp;ndash; сломать).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Различия между Buddy testing и Pair testing:&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;&lt;b&gt;Buddy testing&amp;nbsp;&lt;/b&gt;(&lt;i&gt;Совместное тестирование)&lt;/i&gt;&amp;nbsp;&amp;ndash; это сочетание модульного тестирования и системного тестирования между разработчиком и тестировщиком.&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;Pair testing&amp;nbsp;&lt;/b&gt;(&lt;i&gt;Парное тестирование) &amp;ndash;&lt;/i&gt;&amp;nbsp;выполняется только тестировщиками с разным уровнем знаний и опыта (такое сочетание поможет поделиться взглядами и идеями).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Основные преимущества ad-hoc testing:&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;нет необходимости тратить время на подготовку документации;&lt;/li&gt;
 &lt;li&gt;самые важные дефекты зачастую обнаруживаются на ранних этапах;&lt;/li&gt;
 &lt;li&gt;часто применяется, когда берут нового сотрудника. С помощью этого метода, человек усваивает за 3 дня то, что, разбираясь с &amp;nbsp;тестовыми случаями, разбирал бы неделю &amp;ndash; это называется форсированное обучение новых сотрудников;&lt;/li&gt;
 &lt;li&gt;возможность найти трудновоспроизводимые и трудноуловимые дефекты, которые невозможно было бы найти, используя стандартные сценарии проверок.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Пример свободного тестирования (&lt;/b&gt;&lt;b&gt;Ad-hoc testing)&lt;/b&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Ad-hoc тестирование&lt;/b&gt;&amp;nbsp;мы часто используем в нашей жизни, возьмем, к примеру, обычный поход в супермаркет.&lt;/p&gt;

&lt;p&gt;После входа в супермаркет сразу на входе вы можете найти корзину/тележку для продуктов, но если её не окажется в привычном вам месте &amp;ndash; это можно будет считать багом. При выборе молока обратите внимание на срок годности и, если молоко окажется просроченным, опять же это будет баг. Так же и с другими продуктами. И, если в конечном итоге, при оплате покупок на кассе, бутылка вина, на которой был ценник 100, окажется ценой в 200, это также будет багом.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Если нам нужно провести ad-hoc тестирование интернет-магазина, то этот краткий список может помочь с тем, что нужно проверить:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;все возможности сайта доступны без регистрации;&lt;/li&gt;
 &lt;li&gt;корректность отображения анимаций и картинок;&lt;/li&gt;
 &lt;li&gt;все возможности сайта доступны после регистрации;&lt;/li&gt;
 &lt;li&gt;процесс регистрации;&lt;/li&gt;
 &lt;li&gt;процесс добавления/удаления из корзины;&lt;/li&gt;
 &lt;li&gt;процесс оплаты покупок;&lt;/li&gt;
 &lt;li&gt;удобство в пользовании для новичков, простота, подсказки, помощь.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Также стоит отметить, что&lt;b&gt;&amp;nbsp;ad-hoc тестирование&amp;nbsp;&lt;/b&gt;часто является любимым видом тестирования для тестировщиков, где можно проявить все свои знания и выполнить самые труднопредсказуемые сценарии, то есть предоставляется возможность чистой импровизации.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Способы повышения эффективности Ad-hoc тестирования&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;&lt;strong&gt;Приготовление.&lt;/strong&gt;&amp;nbsp;Проанализировать дефекты в похожих приложениях, таким образом повысив вероятность обнаружения подобных дефектов в тестируемом приложении.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Формирование черновика.&lt;/strong&gt;&amp;nbsp;Это не должен быть детальный план тестирования, а наброски, с чего начать и какие проблемы поискать.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Тестирование сессиями.&lt;/strong&gt;&amp;nbsp;Тестировать различный функционал продукта по очереди, т.е. не всё сразу. Это помогает лучше сфокусироваться и понять проблемы.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Уделять внимание целевым областям.&lt;/strong&gt;&amp;nbsp;В первую очередь проверить те области, которые не покрыты тест-дизайном и тестовой документацией.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Использование разных вспомогательных программ.&lt;/strong&gt;&amp;nbsp;Некоторые дефекты можно обнаружить, используя дебаггеры, профайлеры и мониторинги. Знание таких утилит помогает в тестировании.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Записывать результаты тестирования.&lt;/strong&gt;&amp;nbsp;Записи того, какие баги были найдены, в каких частях приложения их больше и т.п. Это может помочь как разработчикам, так и тестировщикам последующих версий приложения. Также можно записать то, что не работало, т.к. аналитикам может быть полезно увидеть, что работало хорошо.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Исследовательское тестирование (Exploratory testing)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Исследовательское тестирование&lt;/i&gt;&amp;nbsp;&lt;b&gt;(exploratory testing)&lt;/b&gt;&amp;nbsp;&amp;mdash; это одновременное изучение программного продукта, проектирование тестов и их выполнение. Это неформальный метод проектирования тестов, при котором тестировщик активно контролирует проектирование тестов в то время, как эти тесты выполняются, и использует полученную во время тестирования информацию для проектирования новых тестов.&lt;/p&gt;

&lt;p&gt;Если каждый следующий тест, который выполняет тестировщик, выбирается по результатам предыдущего теста, это означает, что мы используем исследовательское тестирование.&lt;/p&gt;

&lt;p&gt;Главное, что нужно помнить об&amp;nbsp;&lt;b&gt;исследовательском тестировании&lt;/b&gt;, это то, что само по себе оно&amp;nbsp;&lt;i&gt;не является методикой&lt;/i&gt;&amp;nbsp;тестирования.&amp;nbsp;Это, скорее,&amp;nbsp;подход&lt;b&gt;,&amp;nbsp;&lt;/b&gt;который можно применить к любому виду тестирования. Еще один важный момент заключается в том, что исследовательское тестирование &amp;ndash; это&amp;nbsp;не только выполнение тестов&lt;i&gt;.&lt;/i&gt;&amp;nbsp;Тестировщики могут применять исследовательский подход и при разработке новых тестов в начале итерации, и при анализе уже завершенных тестов. Также, исследовательское тестирование&amp;nbsp;&lt;strong&gt;не должно выполняться небрежно, в спешке и без подготовки&lt;/strong&gt;. Исследовательский подход может требовать очень тщательной и длительной подготовки к определенным тестам, а накопленные за многие годы знания и умения тестировщика, применяющего данный подход, &amp;ndash; это часто невидимая, но важная форма подготовки. Исследовательское тестирование может проводиться вручную, а может осуществляться с широким применением средств автоматизации, т.е. любых вспомогательных инструментов тестирования.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Когда следует применять исследовательское тестирование?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Самые распространенные случаи:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;когда нужно обеспечить быструю обратную связь для нового продукта или новой функциональности продукта;&lt;/li&gt;
 &lt;li&gt;когда нужно быстро ознакомиться с продуктом;&lt;/li&gt;
 &lt;li&gt;когда уже были проведены основные виды тестирования и время позволяет разнообразить методы тестирования;&lt;/li&gt;
 &lt;li&gt;когда нужно найти дефект, локализованный в определенном модуле в кратчайшие сроки;&lt;/li&gt;
 &lt;li&gt;когда проверяется работа другого специалиста по тестированию;&lt;/li&gt;
 &lt;li&gt;когда нужно изучить состояние конкретного риска для принятия решения о необходимости покрытия конкретной области &amp;nbsp;тестами.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Вывод&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Описанные выше методы тестирования имеют основательные сходства и различия, поэтому стоит разделять эти две популярные методики в рамках &amp;nbsp;тестирования. Разница между ad-hoc и exploratory testing в том, что теоретически, ad-hoc может провести кто угодно, а для проведения exploratory необходимо мастерство и владение определёнными техниками. При этом, определённые техники &amp;ndash; это не только техники тестирования.&lt;/p&gt;

&lt;p&gt;Оба метода часто используются в проектах, а также являются неотъемлемой частью знаний и опыта современного &amp;nbsp;тестировщика программного обеспечения.&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/chto_takoe_ad_hoc_testirovanie/2020-07-01-13</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/chto_takoe_ad_hoc_testirovanie/2020-07-01-13</guid>
			<pubDate>Wed, 01 Jul 2020 15:26:24 GMT</pubDate>
		</item>
		<item>
			<title>Как провести тестирование на безопасность: руководство для Manual QA</title>
			<description>&lt;p&gt;Эта статья нацелена на&amp;nbsp;подрастающее поколение&amp;nbsp;QA и&amp;nbsp;разработчиков, которым интересно узнать что-то об&amp;nbsp;уязвимостях: с&amp;nbsp;чего начать, какими инструментами можно пользоваться начинающему в&amp;nbsp;этом деле (практические советы). В&amp;nbsp;материале будет изложено&amp;nbsp;то, что я&amp;nbsp;хотел&amp;nbsp;бы прочесть в&amp;nbsp;начале своей карьеры Security QA.&lt;/p&gt;

&lt;h2&gt;Вступление&lt;/h2&gt;

&lt;p&gt;Когда я&amp;nbsp;был Manual&amp;nbsp;QA, мне всегда казалось, что искать уязвимости очень трудно, что этим могут заниматься только те&amp;nbsp;люди, которые умеют программировать. Поэтому я&amp;nbsp;выбрал сначала путь автоматизатора, так как зачастую&amp;nbsp;QA развиваются именно в&amp;nbsp;этом направлении. Но&amp;nbsp;после более чем полутора лет в&amp;nbsp;должности автомейшена мне стало скучно... Да-да, стало скучно, так как мне неинтересно было все время писать код и&amp;nbsp;не&amp;nbsp;общаться с&amp;nbsp;командой девелоперов, продактами и&amp;nbsp;другими членами команды, как я&amp;nbsp;делал это, когда был мануальщиком.&lt;/p&gt;

&lt;p&gt;Недолго дум...</description>
			<content:encoded>&lt;p&gt;Эта статья нацелена на&amp;nbsp;подрастающее поколение&amp;nbsp;QA и&amp;nbsp;разработчиков, которым интересно узнать что-то об&amp;nbsp;уязвимостях: с&amp;nbsp;чего начать, какими инструментами можно пользоваться начинающему в&amp;nbsp;этом деле (практические советы). В&amp;nbsp;материале будет изложено&amp;nbsp;то, что я&amp;nbsp;хотел&amp;nbsp;бы прочесть в&amp;nbsp;начале своей карьеры Security QA.&lt;/p&gt;

&lt;h2&gt;Вступление&lt;/h2&gt;

&lt;p&gt;Когда я&amp;nbsp;был Manual&amp;nbsp;QA, мне всегда казалось, что искать уязвимости очень трудно, что этим могут заниматься только те&amp;nbsp;люди, которые умеют программировать. Поэтому я&amp;nbsp;выбрал сначала путь автоматизатора, так как зачастую&amp;nbsp;QA развиваются именно в&amp;nbsp;этом направлении. Но&amp;nbsp;после более чем полутора лет в&amp;nbsp;должности автомейшена мне стало скучно... Да-да, стало скучно, так как мне неинтересно было все время писать код и&amp;nbsp;не&amp;nbsp;общаться с&amp;nbsp;командой девелоперов, продактами и&amp;nbsp;другими членами команды, как я&amp;nbsp;делал это, когда был мануальщиком.&lt;/p&gt;

&lt;p&gt;Недолго думая, в&amp;nbsp;каком&amp;nbsp;же направлении мне развиваться... Точнее, на&amp;nbsp;это повлияло несколько атак ловцов уязвимостей на&amp;nbsp;наш проект. После атак они предоставили нам репорты, и&amp;nbsp;мне стало обидно: мы&amp;nbsp;же могли предусмотреть эти кейсы своими силами, вроде&amp;nbsp;же было не&amp;nbsp;очень тяжело найти&amp;nbsp;их. Так вот, после ознакомления с&amp;nbsp;репортами, предоставленными этими ловцами, и&amp;nbsp;прослушивания докладов по&amp;nbsp;безопасности я&amp;nbsp;решил двигаться в&amp;nbsp;этом направлении.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Немного о&amp;nbsp;себе:&lt;/em&gt;&amp;nbsp;в&amp;nbsp;тестировании я&amp;nbsp;уже больше 7&amp;nbsp;лет, занимаюсь поиском уязвимостей больше 4&amp;nbsp;лет. Веду тренинги по&amp;nbsp;&lt;a href=&quot;https://svyat.tech/OWASP-TOP-10-Training/&quot; target=&quot;_blank&quot;&gt;тестированию безопасности&lt;/a&gt;. Помимо основной работы провожу аудиты по&amp;nbsp;QA. Веду&amp;nbsp;&lt;a href=&quot;https://svyat.tech/&quot; target=&quot;_blank&quot;&gt;блог&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Начнем с&amp;nbsp;того, с&amp;nbsp;какими трудностями я&amp;nbsp;сталкивался, когда начал изучать тестирование на&amp;nbsp;безопасность. Наверное, с&amp;nbsp;такими&amp;nbsp;же столкнетесь и&amp;nbsp;вы:&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;&lt;strong&gt;Проблема с&amp;nbsp;тем, где без регистрации и&amp;nbsp;СМС найти и&amp;nbsp;бесплатно почитать нужную литературу.&lt;/strong&gt;&amp;nbsp;Чтобы вот просто было написано понятным языком без заумных фраз, как любят описывать, чтобы все было структурировано и&amp;nbsp;были примеры, где можно было&amp;nbsp;бы попрактиковаться с&amp;nbsp;прочитанным. При гуглении я&amp;nbsp;получал огромный вброс инфы без разбору, что&amp;nbsp;же надо для начала.&lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;Проблема с&amp;nbsp;нехваткой времени.&lt;/strong&gt;&amp;nbsp;Согласитесь, трудно найти время на&amp;nbsp;то, чтобы заставить себя учить что-то новое без надобности срочно применять эти навыки :-)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;А&amp;nbsp;вот и&amp;nbsp;решения:&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;С&amp;nbsp;первой проблемой мне помогли... даже не&amp;nbsp;поверите кто&amp;nbsp;&amp;mdash; те&amp;nbsp;же самые ловцы уязвимостей, которые атаковали нас и&amp;nbsp;писали нам репорты о&amp;nbsp;наших уязвимостях. Читая эти репорты, я&amp;nbsp;параллельно гуглил и&amp;nbsp;искал в&amp;nbsp;статьях информацию о&amp;nbsp;причинах возникновения и&amp;nbsp;критичности данных уязвимостей. В&amp;nbsp;итоге я&amp;nbsp;составил для себя чек-лист массовости (насколько распространен этот вид уязвимости среди продуктов) и&amp;nbsp;критичности (насколько опасно иметь такую уязвимость в&amp;nbsp;зависимости от&amp;nbsp;того, сколько бед, которые могут привести к&amp;nbsp;потере доверия к&amp;nbsp;бренду, можно натворить с&amp;nbsp;ней на&amp;nbsp;проекте).&lt;/li&gt;
 &lt;li&gt;Также решением первой и&amp;nbsp;второй проблем стали мои выступления перед публикой на&amp;nbsp;тему уязвимостей. За&amp;nbsp;время подготовки к&amp;nbsp;тому, чтобы учить кого-то чему-то, вы&amp;nbsp;изучите материал настолько хорошо и&amp;nbsp;настолько быстро, что сами удивитесь :-) У&amp;nbsp;вас сразу появляется:
 &lt;ul&gt;
 &lt;li&gt;дедлайн, к&amp;nbsp;которому вы&amp;nbsp;должны успеть подготовиться и&amp;nbsp;хорошо изучить тему;&lt;/li&gt;
 &lt;li&gt;стимул учить новое, так как перед вами стоит задача выступить перед публикой, а&amp;nbsp;опозориться не&amp;nbsp;сильно хочется, чтобы не&amp;nbsp;показать, что вы&amp;nbsp;чего-то не&amp;nbsp;знаете в&amp;nbsp;этой области, но&amp;nbsp;что-то там вещаете;&lt;/li&gt;
 &lt;li&gt;время. Скажете откуда? Да&amp;nbsp;вы&amp;nbsp;просто под психологическим воздействием, что нужно подготовиться к&amp;nbsp;выступлению, меньше бездействуете (меньше времени уделяете просмотру видосов с&amp;nbsp;котиками и&amp;nbsp;остальными приколясами). Да&amp;nbsp;и&amp;nbsp;после работы вместо просиживания штанишек перед сериальчиком вы&amp;nbsp;готовитесь к&amp;nbsp;своему дебюту на&amp;nbsp;сцене. Нормальный такой лайфхак? :-)&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;И&amp;nbsp;самое главное: после того как вы&amp;nbsp;ознакомились с&amp;nbsp;какой-либо теорией о&amp;nbsp;уязвимости, немедленно идите применять ее&amp;nbsp;на&amp;nbsp;практике, так как теория в&amp;nbsp;голове без практики имеет способность пропадать, не&amp;nbsp;подавая виду, быстро и&amp;nbsp;бесследно. И&amp;nbsp;это будет реально напрасно потраченное время. Попрактиковаться можно у&amp;nbsp;себя на&amp;nbsp;проекте с&amp;nbsp;разрешения руководства&amp;nbsp;&amp;mdash; а&amp;nbsp;я&amp;nbsp;думаю, оно по-любому разрешит вам, так как хорошо, когда есть человек, который может проверить хоть на&amp;nbsp;какую-то безопасность. Либо можно прогуглить Broken Web Application и&amp;nbsp;по&amp;nbsp;первой ссылке скачать себе приложение, запустить его на&amp;nbsp;VirtualBox и&amp;nbsp;применять там свои наработанные навыки.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image21_Df8AKDU.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;В&amp;nbsp;этом приложении много разных лабораторий с&amp;nbsp;самыми распространенными уязвимостями, так что вам должно хватить этого, чтобы хорошенько набраться опыта пенетрации.&lt;/p&gt;

&lt;p&gt;А&amp;nbsp;теперь давайте поговорим о&amp;nbsp;самых распространенных уязвимостях, которые могут встретиться вам на&amp;nbsp;пути, и&amp;nbsp;о&amp;nbsp;том, как их&amp;nbsp;искать...&lt;/p&gt;

&lt;h2&gt;XSS&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image10_8fnumuE.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Это один из&amp;nbsp;типов уязвимости web application, который дает скрипту возможность отрабатывать на&amp;nbsp;страницу, написанную на&amp;nbsp;JS. Такая уязвимость дает возможность злоумышленнику внедрить свой сценарий в&amp;nbsp;работу вашего приложения.&amp;nbsp;&lt;a href=&quot;https://www.immuniweb.com/blog/OWASP-cross-site-scripting-xss.html&quot; target=&quot;_blank&quot;&gt;По&amp;nbsp;статистике&lt;/a&gt;, 40% компаний, прошедших через сканеры, имеют эту уязвимость.&amp;nbsp;&lt;a href=&quot;https://www.owasp.org/index.php/Top_10-2017_Top_10&quot; target=&quot;_blank&quot;&gt;В&amp;nbsp;рейтинге OWASP Top 10&lt;/a&gt;&amp;nbsp;она на&amp;nbsp;7-м&amp;nbsp;месте. Причина появления этой уязвимости&amp;nbsp;&amp;mdash; это доверие со&amp;nbsp;стороны разработчика, что пользователь не&amp;nbsp;будет вносить разнообразные куски кода на&amp;nbsp;сайт.&lt;/p&gt;

&lt;p&gt;Что&amp;nbsp;же может сделать в&amp;nbsp;своих целях ловец уязвимостей?&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Изменить настройки (например, заменить бэкграунд сайта, всунуть, допустим, на&amp;nbsp;задний фон скрин Joycasino, размещать рекламу через всплывающие попапы).&lt;/li&gt;
 &lt;li&gt;Стырить куки пользователя.&lt;/li&gt;
 &lt;li&gt;Фишинг (хакер может вставить поддельную форму для входа на&amp;nbsp;страницу, которую вы&amp;nbsp;посещаете, используя DOM, установив в&amp;nbsp;атрибуты&amp;nbsp;&lt;code&gt;action&lt;/code&gt;&amp;nbsp;этой формы отправку данных на&amp;nbsp;свои собственные серваки).&lt;/li&gt;
 &lt;li&gt;Кейлогер (хакер может внедрить что-то типа отслеживания действий, выполняемых на&amp;nbsp;клавиатуре пользователем, используя&amp;nbsp;&lt;code&gt;addEventListener&lt;/code&gt;, а&amp;nbsp;потом отправить все эти нажатия клавиш на&amp;nbsp;свой серверок, записав конфиденциальную информацию пользователя. Например, это могут быть пароли и&amp;nbsp;номера кредитных карт. Стремно, согласитесь.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Бывает три типа XSS:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Непостоянные (отраженные) XSS.&lt;/li&gt;
 &lt;li&gt;Постоянные (хранимые) XSS.&lt;/li&gt;
 &lt;li&gt;XSS DOM-модели.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Рассмотрим каждую из&amp;nbsp;них.&lt;/p&gt;

&lt;h3&gt;Непостоянные (отраженные) XSS&lt;/h3&gt;

&lt;p&gt;Этот класс XSS является самым распространенным на&amp;nbsp;сайтах. Давайте смоделируем вектор атаки с&amp;nbsp;помощью этого класса. Рассмотри это на&amp;nbsp;примере специально подготовленной лаборатории по&amp;nbsp;уязвимостям DVWA. У&amp;nbsp;нас есть форма с&amp;nbsp;инпутом, при этом инпут, как мы&amp;nbsp;видим по&amp;nbsp;исходному коду этой формы, не&amp;nbsp;фильтруется никаким фильтратором. То&amp;nbsp;есть переменная&amp;nbsp;&lt;code&gt;$_GET[&apos;name&apos;]&lt;/code&gt;принимает без перебора все, что в&amp;nbsp;нее впишут. Соответственно, вписанный в&amp;nbsp;этот инпут скрипт&amp;nbsp;&lt;code&gt;&lt;script&amp;gt;alert(1);&lt;/script&amp;gt;&lt;/code&gt;&amp;nbsp;вызовет попап на&amp;nbsp;этой странице со&amp;nbsp;значением в&amp;nbsp;нем цифры&amp;nbsp;1, после того как мы&amp;nbsp;отправим на&amp;nbsp;сервер запрос с&amp;nbsp;этим скриптом. В&amp;nbsp;итоге&amp;nbsp;то, что мы&amp;nbsp;отправили через этот инпут на&amp;nbsp;сервер, передается GET-параметром в&amp;nbsp;урле, так как эта форма общается с&amp;nbsp;сервером по&amp;nbsp;GET.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image2_1OFIaqX.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;На&amp;nbsp;следующей картинке мы&amp;nbsp;можем увидеть результат:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image1_EWymF37.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Как мы&amp;nbsp;видим, в&amp;nbsp;урле наш JS-код, вызывающий тот самый попап, в&amp;nbsp;который мы&amp;nbsp;можем вписать любую информацию на&amp;nbsp;текущей странице, где есть такая уязвимость. Каковы методы применения такой уязвимости, спросите&amp;nbsp;вы? Приведу их&amp;nbsp;ниже...&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image24_CVVBmIO.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Допустим, SEO-менеджер изучил новый способ распространения рекламы&amp;nbsp;&amp;mdash; через попапы этой уязвимости. Он&amp;nbsp;находит сайт, где эта уязвимость срабатывает, в&amp;nbsp;нашем случае это&amp;nbsp;&lt;a href=&quot;http://bank.ua/&quot; target=&quot;_blank&quot;&gt;bank.ua&lt;/a&gt;. Он&amp;nbsp;дописывает в&amp;nbsp;аргумент поиска после названия скрипт&amp;nbsp;&lt;code&gt;&apos;)%3Balert(&apos;XSS&apos;)%3Bvar b=(&apos;&lt;/code&gt;, при этом браузером будет экранироваться попап, отображающий&amp;nbsp;то, что в&amp;nbsp;него напишет наш менеджер, так как данные не&amp;nbsp;подвергаются обработке. Затем паренек просто распространяет весь этот урл через разные социальные сети. Если пользователь, который получит этот скрипт, внимательный, он&amp;nbsp;просто может удалить добавленный в&amp;nbsp;урл скрипт, и&amp;nbsp;попап не&amp;nbsp;выпрыгнет при открытии страницы банка, но&amp;nbsp;если не&amp;nbsp;заметил, то&amp;nbsp;он, помимо открытия страницы сайта, получит вывод попапа, в&amp;nbsp;котором будет информация, которую написал туда наш менеджер.&lt;/p&gt;

&lt;h3&gt;Хранимые (постоянные) XSS&lt;/h3&gt;

&lt;p&gt;Этот вид XSS уже считается более разрушительным типом атаки, чем предыдущий. Он&amp;nbsp;возможен, когда ловцу уязвимостей удается закинуть на&amp;nbsp;сервак скрипт&amp;nbsp;JS, который будет выполняться в&amp;nbsp;браузере каждый раз при заходе на&amp;nbsp;запрашиваемую вами страницу. Самым простым примером этой уязвимости являются форумы, на&amp;nbsp;которых разрешено оставлять комментарии в&amp;nbsp;HTML-формате без ограничений. Другими словами, хранимый XSS возникает, когда разработчики осуществляют некорректную фильтрацию при сохранении входных данных в&amp;nbsp;БД на&amp;nbsp;сервере, а&amp;nbsp;затем выводят эти&amp;nbsp;же данные в&amp;nbsp;браузер пользователя.&lt;/p&gt;

&lt;p&gt;Примерчик на&amp;nbsp;том&amp;nbsp;же ресурсе DVWA:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image18_2ts6HFA.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;В&amp;nbsp;этот раз мы&amp;nbsp;внедряем JS-скрипт (&lt;code&gt;&lt;script&amp;gt;prompt(111)&lt;/script&amp;gt;&lt;/code&gt;) в&amp;nbsp;поле Message, которое, как мы&amp;nbsp;видим в&amp;nbsp;коде, тоже не&amp;nbsp;фильтруется нормальным образом от&amp;nbsp;пользовательского ввода. После отправки этого скрипта на&amp;nbsp;сервер он&amp;nbsp;положится в&amp;nbsp;базу на&amp;nbsp;сервер и&amp;nbsp;каждый раз будет вызываться при посещении этой страницы. Ах&amp;nbsp;да... в&amp;nbsp;этом случае будет не&amp;nbsp;просто попап с&amp;nbsp;выводом текста &amp;laquo;111&amp;raquo;, а&amp;nbsp;будет задействован еще и&amp;nbsp;инпут, в&amp;nbsp;которой можно что-то вписывать. А&amp;nbsp;если хорошенько подумать над реализацией этого скрипта, то&amp;nbsp;можно так подхачить его, что как будто выпрыгивает форма авторизации, в&amp;nbsp;которую пользователь введет свои данные, а&amp;nbsp;они будут отправлены на&amp;nbsp;сервер злоумышленника. Как вам такой исход этой уязвимости?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image22_ia2vC1b.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;И&amp;nbsp;этот попап будет воспроизводиться до&amp;nbsp;тех пор, пока кто-то не&amp;nbsp;почистит значение в&amp;nbsp;базе на&amp;nbsp;сервере, куда отправили храниться этот скрипт, либо не&amp;nbsp;пофиксит саму экранизацию XSS на&amp;nbsp;веб-странице.&lt;/p&gt;

&lt;h3&gt;DOM-модели XSS&lt;/h3&gt;

&lt;p&gt;А&amp;nbsp;вот этот вид XSS самый опасный из&amp;nbsp;всех. XSS в&amp;nbsp;DOM-модели появляются на&amp;nbsp;стороне клиента во&amp;nbsp;время обработки данных внутри самого JavaScript. Этот тип XSS получил такое название, потому что нам нужна Document Object Model, чтобы сделать его. Как вы&amp;nbsp;поняли, DOM&amp;nbsp;&amp;mdash; это сокращение. Через него можно получать доступ к&amp;nbsp;содержимому HTML- и&amp;nbsp;XML-документов,&amp;nbsp;даже изменять содержимое: либо структуру документа, либо его оформление.&lt;/p&gt;

&lt;p&gt;Что можно сделать с&amp;nbsp;помощью этой уязвимости:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Изменить страницу сайта (можно добавлять/заменять картинки, добавлять куски нового функционала и&amp;nbsp;так далее).&lt;/li&gt;
 &lt;li&gt;Можно воровать сессии, куки пользователя (своровав эти данные, злоумышленник может воспользоваться ими в&amp;nbsp;своих целях: например, можно авторизоваться под этими данными и&amp;nbsp;быть как будто тем пользователем).&lt;/li&gt;
 &lt;li&gt;Кейлогер (заюзав скрипт на&amp;nbsp;странице с&amp;nbsp;уязвимостью, злоумышленник будет получать все данные, которые вводит пользователь на&amp;nbsp;клавиатуре, находясь на&amp;nbsp;зараженной странице).&lt;/li&gt;
 &lt;li&gt;Мало того что можно сделать&amp;nbsp;то, что описано выше, так еще можно и&amp;nbsp;залезть в&amp;nbsp;операционную систему с&amp;nbsp;помощью уязвимости ms10_002_aurora, которая доступна для старых браузеров Safari и&amp;nbsp;Internet Explorer&amp;nbsp;7. Вы&amp;nbsp;скажете: &amp;laquo;Да&amp;nbsp;это&amp;nbsp;же древние браузеры, кто ими будет пользоваться?&amp;raquo; Но&amp;nbsp;нет, давайте вспомним банковские конторы, которые заключили десятилетние контракты на&amp;nbsp;использование этой версии браузера,&amp;nbsp;&amp;mdash; вот тут такие пользователи и&amp;nbsp;попадутся на&amp;nbsp;эту уязвимость.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Приведу пример, как можно своровать куки пользователя, а&amp;nbsp;потом применить их&amp;nbsp;у&amp;nbsp;себя в&amp;nbsp;браузере и&amp;nbsp;стать этим пользователем, используя при этом инструмент BeEF:&lt;/p&gt;

&lt;p&gt;&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/t1cQKoVQhgc&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;h2&gt;Injection&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image20_FrQodfS.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;А&amp;nbsp;теперь перейдем к&amp;nbsp;первой уязвимости из&amp;nbsp;рейтинга OWASP Top 10&amp;nbsp;&amp;mdash; к&amp;nbsp;Injection.&amp;nbsp;&lt;a href=&quot;https://www.immuniweb.com/vulnerability/sql-injection.html&quot; target=&quot;_blank&quot;&gt;По&amp;nbsp;статистике&lt;/a&gt;, ею&amp;nbsp;заражено&amp;nbsp;28% компаний... Я&amp;nbsp;рассматриваю ее&amp;nbsp;позднее, так как эта уязвимость с&amp;nbsp;каждым годом становится все менее распространенной, но&amp;nbsp;остается наиболее критичной из&amp;nbsp;всех, потому что с&amp;nbsp;ее&amp;nbsp;помощью можно увести всю вашу базу данных. Эта уязвимость делится на&amp;nbsp;такие векторы для атаки:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;инъекции через запросы SQL, LDAP, XPath;&lt;/li&gt;
 &lt;li&gt;инъекции через команды&amp;nbsp;OS command;&lt;/li&gt;
 &lt;li&gt;инъекции через синтаксический анализ XML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;С&amp;nbsp;помощью этих векторов атакующий может получить доступ как к&amp;nbsp;одной учетной записи, так и&amp;nbsp;ко&amp;nbsp;всей базе данных клиентов этого ресурса. Для применения атаки используются всего лишь специальные символы и&amp;nbsp;дополнительные операторы в&amp;nbsp;зависимости от&amp;nbsp;типа базы SQL.&lt;/p&gt;

&lt;p&gt;Давайте рассмотрим один из&amp;nbsp;векторов Injection&amp;nbsp;&amp;mdash; с&amp;nbsp;использованием запроса для страницы авторизации. Если у&amp;nbsp;вас в&amp;nbsp;приложении такая есть, проверьте&amp;nbsp;ее, чтобы с&amp;nbsp;ней не&amp;nbsp;было таких проблем, которые я&amp;nbsp;вам покажу. При входе в&amp;nbsp;систему через эту страницу мы&amp;nbsp;будем искать запись пользователя в&amp;nbsp;нашей базе данных SQL&amp;nbsp;на основе введенного имени и&amp;nbsp;пароля пользователя. Если мы&amp;nbsp;получим какой-то результат, то&amp;nbsp;он&amp;nbsp;авторизует этого человека. Все довольно просто, на&amp;nbsp;самом деле существуют такие страницы входа, которые работают таким&amp;nbsp;же образом, имея такую&amp;nbsp;же уязвимость.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image23_Ot5rxye.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Итак, тут мы&amp;nbsp;видим форму, при заполнении которой введенные данные будут отправлены в&amp;nbsp;SQL-запрос, и&amp;nbsp;он&amp;nbsp;вытянет нам ответ из&amp;nbsp;базы данных. Если такой юзер есть в&amp;nbsp;базе данных, то&amp;nbsp;нас авторизует. Если нет, то&amp;nbsp;нам скажет: сорян, зарегайся. То, что мы&amp;nbsp;будем вводить в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;User&lt;/code&gt;, передается в&amp;nbsp;переменную&amp;nbsp;&lt;code&gt;$username&lt;/code&gt;, а&amp;nbsp;то, что введут в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;Pass&lt;/code&gt;, передается в&amp;nbsp;переменную&amp;nbsp;&lt;code&gt;$password&lt;/code&gt;&amp;nbsp;нашего SQL-запроса. А&amp;nbsp;теперь рассмотрим&amp;nbsp;то, что будет происходить при вводе значений в&amp;nbsp;эти поля.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image16_05Dkqse.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Давайте введем такие данные:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;User&lt;/code&gt;&amp;nbsp;&amp;mdash; значение Svyat, которое, как мы&amp;nbsp;видим (отмечено красной стрелкой), станет на&amp;nbsp;место переменной&amp;nbsp;&lt;code&gt;$username&lt;/code&gt;;&lt;/li&gt;
 &lt;li&gt;в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;Pass&lt;/code&gt;&amp;nbsp;&amp;mdash; значение 1234, которое, как мы&amp;nbsp;видим (отмечено синей стрелкой), станет на&amp;nbsp;место переменной&amp;nbsp;&lt;code&gt;$password&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;После запуска этого SQL-запроса будет выполнен поиск в&amp;nbsp;базе данных, где будет найден этот пользователь со&amp;nbsp;всей его информацией, соответственно, мы&amp;nbsp;получим положительный ответ на&amp;nbsp;странице авторизации и&amp;nbsp;успешно авторизуемся.&lt;/p&gt;

&lt;p&gt;Давайте теперь рассмотрим, что может сделать злоумышленник в&amp;nbsp;нашем случае...&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image25_XO8HZqb.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Тут злоумышленник совершает ход конем и&amp;nbsp;целится в&amp;nbsp;юзера admin. Давайте разберем подробнее, что он&amp;nbsp;ввел:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;User&lt;/code&gt;&amp;nbsp;&amp;mdash; значение&amp;nbsp;&lt;code&gt;admin&lt;/code&gt;, которое, как мы&amp;nbsp;видим, станет на&amp;nbsp;место переменной&amp;nbsp;&lt;code&gt;$username&lt;/code&gt;;&lt;/li&gt;
 &lt;li&gt;в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;Pass&lt;/code&gt;&amp;nbsp;&amp;mdash; значение&amp;nbsp;&lt;code&gt;&apos; OR 100=100 --&lt;/code&gt;, которое, как мы&amp;nbsp;видим, станет на&amp;nbsp;место переменной&amp;nbsp;&lt;code&gt;$password&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;А&amp;nbsp;теперь давайте разберем, что происходит с&amp;nbsp;переменной&amp;nbsp;&lt;code&gt;$password&lt;/code&gt;, когда в&amp;nbsp;нее попадают данные такого рода, и&amp;nbsp;как сервер обработает&amp;nbsp;их.&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Символом кавычки&amp;nbsp;&lt;code&gt;&apos;&lt;/code&gt;&amp;nbsp;из&amp;nbsp;заданного значения &amp;rsquo; OR&amp;nbsp;100=100&amp;nbsp;&amp;mdash; мы&amp;nbsp;закрываем дефолтную кавычку данной переменной, оставив пароль незаполненным. Это видно на&amp;nbsp;картинке выше.&lt;/li&gt;
 &lt;li&gt;Затем переходим к&amp;nbsp;слову&amp;nbsp;&lt;code&gt;OR&lt;/code&gt;&amp;nbsp;из&amp;nbsp;нашего значения&amp;nbsp;&lt;code&gt;&apos; OR 100=100 --&lt;/code&gt;&amp;nbsp;&amp;mdash; оно говорит о&amp;nbsp;том, что мы&amp;nbsp;вызываем оператор&amp;nbsp;&lt;code&gt;OR&lt;/code&gt;, который будет выполнять свою функцию в&amp;nbsp;SQL-запросе, так как предыдущей кавычкой мы&amp;nbsp;закрыли нашу переменную.&lt;/li&gt;
 &lt;li&gt;А&amp;nbsp;выражение&amp;nbsp;&lt;code&gt;100=100&lt;/code&gt;&amp;nbsp;из&amp;nbsp;нашего значения&amp;nbsp;&lt;code&gt;&apos; OR 100=100 --&lt;/code&gt;&amp;nbsp;говорит серверу: даже если пароль не&amp;nbsp;подошел, все равно прими за&amp;nbsp;&lt;code&gt;true&lt;/code&gt;, как будто он&amp;nbsp;подошел для тебя, так как&amp;nbsp;&lt;code&gt;100=100&lt;/code&gt;&amp;nbsp;является&amp;nbsp;&lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;И&amp;nbsp;напоследок символы&amp;nbsp;&lt;code&gt;--&lt;/code&gt;&amp;nbsp;из&amp;nbsp;нашего значения&amp;nbsp;&lt;code&gt;&apos; OR 100=100 --&lt;/code&gt;&amp;nbsp;закомментируют дефолтную кавычку. То&amp;nbsp;есть весь код, который находится после символов&amp;nbsp;&lt;code&gt;--&lt;/code&gt;, становится нерабочим. У&amp;nbsp;каждой базы данных вызов операции, чтобы закомментировать код, происходит по-разному: бывает #, бывает &amp;mdash;, бывает */.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Исходя из&amp;nbsp;изложенного выше, SQL-запрос получил дополнительное условие, которое диктует серверу новые правила игры, заставляющие его авторизовать нас как пользователя системы, несмотря на&amp;nbsp;то&amp;nbsp;что мы&amp;nbsp;не&amp;nbsp;ввели правильный пароль. А&amp;nbsp;так как это еще и&amp;nbsp;пользователь-админ, мы&amp;nbsp;имеем все привилегии управления приложением. В&amp;nbsp;запрос добавлено значение&amp;nbsp;&lt;code&gt;OR 100=100&lt;/code&gt;, которое всегда будет оцениваться как&amp;nbsp;&lt;code&gt;true&lt;/code&gt;&amp;nbsp;(так как 100 всегда равно 100, чтобы получить true, необязательно писать именно 100=100, можно взять любое значение, которое равно такому&amp;nbsp;же значению). Теперь этот пользователь будет авторизован как администратор, даже если он&amp;nbsp;не&amp;nbsp;знает пароля. Это не&amp;nbsp;прикольно, согласитесь. Но&amp;nbsp;если есть такая уязвимость, то&amp;nbsp;это может дойти и&amp;nbsp;до&amp;nbsp;такого случая, как на&amp;nbsp;картинке ниже...&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image8_EEZg467.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Если в&amp;nbsp;поле&amp;nbsp;&lt;code&gt;Pass&lt;/code&gt;&amp;nbsp;ввести значение&amp;nbsp;&lt;code&gt;&apos;; DROP TABLE users --&lt;/code&gt;, а&amp;nbsp;затем отправить на&amp;nbsp;сервер, то&amp;nbsp;можно вообще лишиться данных юзера в&amp;nbsp;нашей базе, но&amp;nbsp;опять&amp;nbsp;же это если мы&amp;nbsp;не&amp;nbsp;фильтруем в&amp;nbsp;нашем приложении&amp;nbsp;то, что вводит пользователь.&lt;/p&gt;

&lt;p&gt;Если подытожить, эта уязвимость нацелена на&amp;nbsp;применение дополнительных команд и&amp;nbsp;операторов в&amp;nbsp;запросах на&amp;nbsp;сервер. И&amp;nbsp;если в&amp;nbsp;ней, как в&amp;nbsp;XSS, нет фильтрации на&amp;nbsp;это дело, то&amp;nbsp;такая дыра будет присутствовать у&amp;nbsp;вас в&amp;nbsp;приложении.&lt;/p&gt;

&lt;h2&gt;Инструменты&lt;/h2&gt;

&lt;p&gt;Эту и&amp;nbsp;другие уязвимости с&amp;nbsp;OWASP Top 10&amp;nbsp;можно искать с&amp;nbsp;помощью автоматизированного инструмента. С&amp;nbsp;ним может справиться и&amp;nbsp;Manual&amp;nbsp;QA, достаточно знать, какие есть самые критические уязвимости, и&amp;nbsp;уметь пользоваться инструментами для их&amp;nbsp;поиска.&lt;/p&gt;

&lt;p&gt;К&amp;nbsp;инструментарию Penetration Tester можно отнести такие:&lt;/p&gt;

&lt;p&gt;Бесплатные:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;OWASP ZAP;&lt;/li&gt;
 &lt;li&gt;Nmap;&lt;/li&gt;
 &lt;li&gt;Metasploit;&lt;/li&gt;
 &lt;li&gt;SQLmap;&lt;/li&gt;
 &lt;li&gt;Wireshark;&lt;/li&gt;
 &lt;li&gt;Ettercap;&lt;/li&gt;
 &lt;li&gt;BeEF.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Платные:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;Burp Suite;&lt;/li&gt;
 &lt;li&gt;Acunetix;&lt;/li&gt;
 &lt;li&gt;Charles;&lt;/li&gt;
 &lt;li&gt;Veracode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Так как по&amp;nbsp;каждому из&amp;nbsp;них можно рассказывать много чего, я&amp;nbsp;уделил внимание лишь одному. Это будет бесплатный инструмент OWASP ZAP, чтобы вы&amp;nbsp;могли поюзать его и&amp;nbsp;понять всю суть поиска уязвимостей.&lt;/p&gt;

&lt;h2&gt;Что такое OWASP ZAP&lt;/h2&gt;

&lt;p&gt;Начнем с&amp;nbsp;того, что OWASP ZAP&amp;nbsp;&amp;mdash; это в&amp;nbsp;первую очередь инструмент, который достаточно прост в&amp;nbsp;использовании для тестирования на&amp;nbsp;проникновение в&amp;nbsp;ваше приложение, а&amp;nbsp;также для поиска уязвимостей в&amp;nbsp;веб-приложениях. Программа предназначена как для пользователей, имеющих опыт работы в&amp;nbsp;сфере информационной безопасности, таких как разработчики и&amp;nbsp;мануальные&amp;nbsp;QA, так и&amp;nbsp;для начинающих.&lt;/p&gt;

&lt;h4&gt;Режимы OWASP ZAP&lt;/h4&gt;

&lt;p&gt;В&amp;nbsp;ZAP есть несколько режимов работы, при которых он&amp;nbsp;будет проводить сканирование:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1) Безопасный режим&lt;/em&gt;&amp;nbsp;&amp;mdash; в&amp;nbsp;этом режиме нельзя совершить что-либо потенциально опасное для приложения.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2) Защищенный режим&lt;/em&gt;&amp;nbsp;&amp;mdash; в&amp;nbsp;этом режиме пользователь (бот) может выполнять только вредоносные действия по&amp;nbsp;URL-адресам, указанным в&amp;nbsp;области браузера.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3) Стандартный режим&lt;/em&gt;&amp;nbsp;&amp;mdash; в&amp;nbsp;этом режиме пользователь (бот) может делать все, что имеет значение для приложения.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4) Режим Attack&lt;/em&gt;&amp;nbsp;&amp;mdash; при нахождении новых узлов в&amp;nbsp;области действия шпиона они активно сканируются, как только обнаруживаются.&lt;/p&gt;

&lt;h4&gt;Оповещение&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image6_ZCdKWsm.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;После того как вы&amp;nbsp;запустите сканер, все найденные ошибки OWASP ZAP будут отсортированы по&amp;nbsp;степени серьезности уязвимостей и&amp;nbsp;будут находиться на&amp;nbsp;вкладке &amp;laquo;Оповещение&amp;raquo;. Красным флажком будут отмечены самые серьезные, такие как XSS, SQL Injection и&amp;nbsp;так далее, оранжевым&amp;nbsp;&amp;mdash; менее серьезные уязвимости типа CSRF и&amp;nbsp;остальные малозначимые.&lt;/p&gt;

&lt;p&gt;Чтобы более подробно посмотреть найденные сканером уязвимости, достаточно несколько раз кликнуть по&amp;nbsp;какой-то из&amp;nbsp;них.&lt;/p&gt;

&lt;p&gt;При этом откроется попап, в&amp;nbsp;котором будет расписано:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;что это за&amp;nbsp;уязвимость и&amp;nbsp;на&amp;nbsp;что она влияет;&lt;/li&gt;
 &lt;li&gt;ее&amp;nbsp;критичность;&lt;/li&gt;
 &lt;li&gt;скрипт, с&amp;nbsp;которым она воспроизводится;&lt;/li&gt;
 &lt;li&gt;литература о&amp;nbsp;том, как можно починить&amp;nbsp;ее.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image11_hUhgc5p.jpg&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Авторизация&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image26_GvhWa6T.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Если в&amp;nbsp;вашем проекте присутствует авторизация, то&amp;nbsp;те&amp;nbsp;ссылки, которые доступны для авторизированного пользователя, не&amp;nbsp;будут доступны для OWASP ZAP без выполненной настройки юзера (бота), под которым наш сканер сможет зайти для выполнения поиска уязвимостей на&amp;nbsp;тех страницах, которые доступны для авторизованного юзера. Для того чтобы быстро настроить этого юзера, кликаем по&amp;nbsp;иконке встроенного браузера. При этом откроется сам браузер, в&amp;nbsp;котором введены настройки прокси для обмена данными (request и&amp;nbsp;response). То&amp;nbsp;есть OWASP ZAP становится посредником, запросы, которые вы&amp;nbsp;посылаете в&amp;nbsp;браузере на&amp;nbsp;сервер, сначала идут на&amp;nbsp;OWASP ZAP, а&amp;nbsp;с&amp;nbsp;него&amp;nbsp;&amp;mdash; на&amp;nbsp;сервер.&lt;/p&gt;

&lt;p&gt;Так&amp;nbsp;же происходит и&amp;nbsp;в&amp;nbsp;обратном порядке: ответ от&amp;nbsp;сервера будет тоже сначала идти на&amp;nbsp;OWASP ZAP, а&amp;nbsp;уже с&amp;nbsp;него&amp;nbsp;&amp;mdash; в&amp;nbsp;браузер. Таким образом, вы&amp;nbsp;сможете мониторить весь трафик. Затем выполните авторизацию на&amp;nbsp;сайте, который собираетесь тестировать, через этот браузер.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image27_FYRWQD0.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Все данные, которые вы&amp;nbsp;ввели, будут перехвачены нашим приложением OWASP ZAP. Это мы&amp;nbsp;сможем увидеть в&amp;nbsp;приложении ZAP, с&amp;nbsp;левой стороны. Там появится папочка с&amp;nbsp;названием нашего хоста (сайта), который мы&amp;nbsp;прогнали через браузер с&amp;nbsp;прокси.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image7_AkgNoet.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Когда мы&amp;nbsp;расхлопнем эту папку, мы&amp;nbsp;увидим иерархию нашего приложения. Здесь мы&amp;nbsp;и&amp;nbsp;увидим наш запрос POST, с&amp;nbsp;которым авторизовались. И&amp;nbsp;если мы&amp;nbsp;будем видеть, что, помимо нужного нам хоста, загрузились еще и&amp;nbsp;другие ресурсы, которые интегрированы в&amp;nbsp;наше веб-приложение, типа разных соцсетей, чтобы не&amp;nbsp;тратить время на&amp;nbsp;сканирование и&amp;nbsp;их&amp;nbsp;&amp;mdash; так как нужно&amp;nbsp;же проверять наш проект, а&amp;nbsp;не&amp;nbsp;другие :) &amp;mdash; нам нужно задать &amp;laquo;контекст&amp;raquo; только для одной папки, которую мы&amp;nbsp;хотим проверить. Для этого выбираем нужную папку и&amp;nbsp;включаем ее&amp;nbsp;в&amp;nbsp;контекст.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image5_DjerSBO.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;После того как мы&amp;nbsp;задали папке контекст, мы&amp;nbsp;должны найти в&amp;nbsp;ней запрос, который выполнялся на&amp;nbsp;авторизацию, а&amp;nbsp;затем создать юзера для этого метода, выбрав пункт &amp;laquo;Использовать как контекст&amp;raquo;, а&amp;nbsp;там&amp;nbsp;&amp;mdash; пункт Form-based.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image15_Jk2Zh32.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;img src=&quot;https://s.dou.ua/storage-files/image17_0xgsQo9.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;После выбора этого пункта отобразится попап с&amp;nbsp;настройками локаторов для заполнения. Нам надо определить, где локатор логина и&amp;nbsp;где локатор пароля, дабы ZAP мог понимать, где какое поле ввода, чтобы он&amp;nbsp;мог вписывать туда данные для авторизации. Тут нам надо выбрать из&amp;nbsp;выпадающего списка, что будет применяться в&amp;nbsp;качестве значения в&amp;nbsp;локаторе.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image12_8gZ6zLR.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;В&amp;nbsp;этом случае нам надо выбрать в&amp;nbsp;первом&amp;nbsp;ДД username, во&amp;nbsp;втором&amp;nbsp;&amp;mdash; password. Нажимаем OK. На&amp;nbsp;POST-запросе у&amp;nbsp;вас появится иконка двери.&lt;/p&gt;

&lt;p&gt;Затем надо создать самого бота (юзера), задать ему креденшелы, которые он&amp;nbsp;будет вводить в&amp;nbsp;те&amp;nbsp;инпуты, настроенные нами ранее. Для этого заходим в&amp;nbsp;раздел Users и&amp;nbsp;в&amp;nbsp;этом разделе добавляем нашего пользователя, который сможет авторизоваться.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image3_Zx12CWK.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;В&amp;nbsp;открывшемся попапе задаем этому юзеру имя (какое&amp;nbsp;&amp;mdash; не&amp;nbsp;имеет значения, это делается для вашего понимания, что это за&amp;nbsp;юзер), пароль и&amp;nbsp;логин (email), который подходит для авторизации в&amp;nbsp;нашей системе.&lt;/p&gt;

&lt;p&gt;Теперь нам надо показать OWASP ZAP какой-то локатор (XPath) на&amp;nbsp;странице авторизованного юзера, чтобы сканер понимал, что авторизация прошла успешно. Для этого нам надо зайти на&amp;nbsp;ответ, полученный от&amp;nbsp;сервера, с&amp;nbsp;HTML-разметкой, которую получает авторизованный юзер. Затем находим какой-то локатор, к&amp;nbsp;которому привяжем наш сканер. Этот локатор OWASP будет искать после выполнения авторизации и&amp;nbsp;понимать, успешно&amp;nbsp;ли он&amp;nbsp;прошел авторизацию на&amp;nbsp;сайте.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image14_xSOJhTR.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Этот локатор вставляем в&amp;nbsp;раздел аутентификации, в&amp;nbsp;котором мы&amp;nbsp;задавали параметры входа,&amp;nbsp;&amp;mdash; в&amp;nbsp;инпут Regex pattern identified in&amp;nbsp;Logged.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image9_Z2wxp03.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Как только мы&amp;nbsp;выполнили все, что написано выше, можем начинать атаку и&amp;nbsp;проверку того, на&amp;nbsp;что способно наше приложение. Для этого кликаем по&amp;nbsp;нашей папке, которой задали контекст, и&amp;nbsp;жмем на&amp;nbsp;скан либо атаку.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image4_i0I5Ftz.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;После этого в&amp;nbsp;выпадающем списке находим нашего пользователя, под которым зайдет сканер.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s.dou.ua/storage-files/image13_9cWclRE.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;И&amp;nbsp;вуаля! Пошло сканирование вашего проекта на&amp;nbsp;всевозможные уязвимости.&lt;/p&gt;

&lt;p&gt;Но&amp;nbsp;помните: никакая из&amp;nbsp;программ не&amp;nbsp;может гарантировать, что будут найдены все уязвимости. Найденные уязвимости могут быть и&amp;nbsp;false-positive, то, что найдет сканер, по-любому надо проверять руками.&lt;/p&gt;

&lt;h2&gt;Подытожим&lt;/h2&gt;

&lt;p&gt;Теперь вы&amp;nbsp;знаете:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;о&amp;nbsp;двух уязвимостях;&lt;/li&gt;
 &lt;li&gt;с&amp;nbsp;помощью какого инструмента можно искать уязвимости;&lt;/li&gt;
 &lt;li&gt;где можно практиковаться в&amp;nbsp;поиске уязвимостей.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Теперь ваша задача состоит в&amp;nbsp;том, чтобы, когда сканер найдет новый вид уязвимости, ознакомиться с&amp;nbsp;ним, узнать, как он&amp;nbsp;воспроизводится и&amp;nbsp;какую серьезность несет в&amp;nbsp;себе. Таким образом, встречая все новую и&amp;nbsp;новую уязвимость, обнаруженную сканером или найденную в&amp;nbsp;какой-то статье, вы&amp;nbsp;накопите опыт, с&amp;nbsp;которым можете потом искать эти&amp;nbsp;же дыры в&amp;nbsp;других ваших проектах, дабы сделать продукт безопасным. А&amp;nbsp;также со&amp;nbsp;стороны менеджеров вас заметят и&amp;nbsp;по-любому накинут бабосов за&amp;nbsp;то, что вы&amp;nbsp;такой крутой специалист.&lt;/p&gt;

&lt;p&gt;И&amp;nbsp;помните: все показанное выше сделано в&amp;nbsp;целях обучения! Применять на&amp;nbsp;своих проектах можно только с&amp;nbsp;разрешения.&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/kak_provesti_testirovanie_na_bezopasnost_rukovodstvo_dlja_manual_qa/2019-10-08-12</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/kak_provesti_testirovanie_na_bezopasnost_rukovodstvo_dlja_manual_qa/2019-10-08-12</guid>
			<pubDate>Tue, 08 Oct 2019 20:08:46 GMT</pubDate>
		</item>
		<item>
			<title>Связь с владельцем</title>
			<description>&lt;p&gt;sysanin@ukr.net&lt;/p&gt;</description>
			<content:encoded>&lt;p&gt;sysanin@ukr.net&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/svjaz_s_vladelcem/2019-05-20-11</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/svjaz_s_vladelcem/2019-05-20-11</guid>
			<pubDate>Mon, 20 May 2019 15:18:55 GMT</pubDate>
		</item>
		<item>
			<title>Web Push Changes to Chrome on Android</title>
			<description>&lt;p&gt;https://onesignal.com/blog/web-push-changes-to-chrome-on-android/&lt;/p&gt;

&lt;p&gt;On Dec 5th, the permission prompt for notifications in Chrome on Android devices will change from a the current slide-up browser prompt (left) to a full screen browser popup (right) --&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://onesignal-blog.s3.amazonaws.com/2017/Nov/AndroidChromeChange-1511303218672.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google is making this change to discourage websites from showing the browser notification permission prompt when users first visit a website.&lt;/p&gt;

&lt;h3 id=&quot;whatonesignalischanginginresponse&quot;&gt;What OneSignal is changing in response&lt;/h3&gt;

&lt;p&gt;For OneSignal clients that are currently showing the browser&amp;rsquo;s notification permission prompt when a user first loads a website, we will be introducing a OneSignal slide-up permission box. The browser&amp;rsquo;s new full-screen permission prompt will be shown only&amp;nbsp;&lt;em&gt;after&lt;/em&gt;&amp;nbsp;a user clicks &quot;Allow&quot; on the OneSignal permission box.&lt;/p&gt;

&lt;p&gt;This doubl...</description>
			<content:encoded>&lt;p&gt;https://onesignal.com/blog/web-push-changes-to-chrome-on-android/&lt;/p&gt;

&lt;p&gt;On Dec 5th, the permission prompt for notifications in Chrome on Android devices will change from a the current slide-up browser prompt (left) to a full screen browser popup (right) --&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://onesignal-blog.s3.amazonaws.com/2017/Nov/AndroidChromeChange-1511303218672.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google is making this change to discourage websites from showing the browser notification permission prompt when users first visit a website.&lt;/p&gt;

&lt;h3 id=&quot;whatonesignalischanginginresponse&quot;&gt;What OneSignal is changing in response&lt;/h3&gt;

&lt;p&gt;For OneSignal clients that are currently showing the browser&amp;rsquo;s notification permission prompt when a user first loads a website, we will be introducing a OneSignal slide-up permission box. The browser&amp;rsquo;s new full-screen permission prompt will be shown only&amp;nbsp;&lt;em&gt;after&lt;/em&gt;&amp;nbsp;a user clicks &quot;Allow&quot; on the OneSignal permission box.&lt;/p&gt;

&lt;p&gt;This double opt-in can be seen in the following video:&lt;/p&gt;

&lt;p&gt;&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;480&quot; src=&quot;https://giphy.com/embed/3o6fJ6MRNBltPxEXg4&quot; width=&quot;272&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;This only affects users with devices running Chrome on Android. No changes are being made to other browsers or platforms at this time.&lt;/p&gt;

&lt;p&gt;This change is intended to improve upon the initial user experience for users when they are prompted to grant or deny push permission to a website.&lt;/p&gt;

&lt;p&gt;OneSignal supports customizing this slide-up prompt text and language - just&amp;nbsp;&lt;a href=&quot;https://documentation.onesignal.com/docs/customize-permission-messages#section-slidedown-permission-message&quot;&gt;follow these instructions&lt;/a&gt;&amp;nbsp;to get started. Or, if you&amp;rsquo;d like to learn about other ways users can opt-in to notifications you can read more in our&amp;nbsp;&lt;a href=&quot;https://documentation.onesignal.com/docs/customize-permission-messages&quot;&gt;customizing permission prompts&lt;/a&gt;&amp;nbsp;documentation.&lt;/p&gt;

&lt;p&gt;For Wordpress users, all customization options are available in the OneSignal settings page in your Wordpress dashboard without needing to modify any code.&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/web_push_changes_to_chrome_on_android/2017-11-22-10</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/web_push_changes_to_chrome_on_android/2017-11-22-10</guid>
			<pubDate>Wed, 22 Nov 2017 10:27:41 GMT</pubDate>
		</item>
		<item>
			<title>Первый тест-кейс с использованием TestNG</title>
			<description>&lt;h2&gt;http://autoqa.org/testng-framework/pervyj-test-kejs-s-ispolzovaniem-testng.html&lt;/h2&gt;

&lt;h2&gt;Проделайте следующие шаги:&lt;/h2&gt;

&lt;p&gt;1) В контекстном меню созданного пакета выберите&amp;nbsp;&lt;strong&gt;TestNG&amp;nbsp;&lt;/strong&gt;и выберите&amp;nbsp;&lt;strong&gt;&amp;ldquo;&lt;strong&gt;TestNG Class&amp;rdquo;&lt;/strong&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Install-TestNG-8&quot; height=&quot;783&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/Install-TestNG-81.png&quot; width=&quot;706&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;2) Назовите класс&amp;nbsp;&amp;ldquo;&lt;strong&gt;TestNG&amp;rdquo;&lt;/strong&gt;. Выберите следующие аннотации &amp;ndash;&amp;nbsp;&amp;ldquo;&lt;strong&gt;@BeforeMethod&lt;/strong&gt;&amp;ldquo;, &amp;ldquo;&lt;strong&gt;@AfterMethod&lt;/strong&gt;&amp;rdquo; и нажмите&amp;nbsp;&lt;strong&gt;Finish&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;TestNG-FTC-2&quot; height=&quot;557&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-22.png&quot; width=&quot;701&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;3) Новосозданный класс должен выглядить следующим образом.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;TestNG-FTC-3&quot; height=&quot;387&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FT...</description>
			<content:encoded>&lt;h2&gt;http://autoqa.org/testng-framework/pervyj-test-kejs-s-ispolzovaniem-testng.html&lt;/h2&gt;

&lt;h2&gt;Проделайте следующие шаги:&lt;/h2&gt;

&lt;p&gt;1) В контекстном меню созданного пакета выберите&amp;nbsp;&lt;strong&gt;TestNG&amp;nbsp;&lt;/strong&gt;и выберите&amp;nbsp;&lt;strong&gt;&amp;ldquo;&lt;strong&gt;TestNG Class&amp;rdquo;&lt;/strong&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Install-TestNG-8&quot; height=&quot;783&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/Install-TestNG-81.png&quot; width=&quot;706&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;2) Назовите класс&amp;nbsp;&amp;ldquo;&lt;strong&gt;TestNG&amp;rdquo;&lt;/strong&gt;. Выберите следующие аннотации &amp;ndash;&amp;nbsp;&amp;ldquo;&lt;strong&gt;@BeforeMethod&lt;/strong&gt;&amp;ldquo;, &amp;ldquo;&lt;strong&gt;@AfterMethod&lt;/strong&gt;&amp;rdquo; и нажмите&amp;nbsp;&lt;strong&gt;Finish&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;TestNG-FTC-2&quot; height=&quot;557&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-22.png&quot; width=&quot;701&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;3) Новосозданный класс должен выглядить следующим образом.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;TestNG-FTC-3&quot; height=&quot;387&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-32.png&quot; width=&quot;427&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Время написать первый&amp;nbsp;тест-кейс с помощью TestNG.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;5) Воспользуемся&amp;nbsp;&lt;a href=&quot;http://autoqa.org/set-up-webdriver-eclipse/napisanie-pervogo-test-kejsa.html&quot;&gt;тест-кейсом&lt;/a&gt;&amp;nbsp;и разделим его на три части.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@BeforeMethod&lt;/strong&gt;&amp;nbsp;: Запуск Firefox и переход по&amp;nbsp;URL&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@Test&lt;/strong&gt;&amp;nbsp;: Ввод&amp;nbsp;имени пользователя и пароля, отображение информации в консоле и Log out&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@AfterMethod&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;Закрытие браузера&lt;/p&gt;

&lt;p&gt;&lt;textarea data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; wrap=&quot;soft&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;

&lt;table&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td data-settings=&quot;show&quot;&gt;
 &lt;p&gt;1&lt;/p&gt;

 &lt;p&gt;2&lt;/p&gt;

 &lt;p&gt;3&lt;/p&gt;

 &lt;p&gt;4&lt;/p&gt;

 &lt;p&gt;5&lt;/p&gt;

 &lt;p&gt;6&lt;/p&gt;

 &lt;p&gt;7&lt;/p&gt;

 &lt;p&gt;8&lt;/p&gt;

 &lt;p&gt;9&lt;/p&gt;

 &lt;p&gt;10&lt;/p&gt;

 &lt;p&gt;11&lt;/p&gt;

 &lt;p&gt;12&lt;/p&gt;

 &lt;p&gt;13&lt;/p&gt;

 &lt;p&gt;14&lt;/p&gt;

 &lt;p&gt;15&lt;/p&gt;

 &lt;p&gt;16&lt;/p&gt;

 &lt;p&gt;17&lt;/p&gt;

 &lt;p&gt;18&lt;/p&gt;

 &lt;p&gt;19&lt;/p&gt;

 &lt;p&gt;20&lt;/p&gt;

 &lt;p&gt;21&lt;/p&gt;

 &lt;p&gt;22&lt;/p&gt;

 &lt;p&gt;23&lt;/p&gt;

 &lt;p&gt;24&lt;/p&gt;

 &lt;p&gt;25&lt;/p&gt;

 &lt;p&gt;26&lt;/p&gt;

 &lt;p&gt;27&lt;/p&gt;

 &lt;p&gt;28&lt;/p&gt;

 &lt;p&gt;29&lt;/p&gt;

 &lt;p&gt;30&lt;/p&gt;

 &lt;p&gt;31&lt;/p&gt;

 &lt;p&gt;32&lt;/p&gt;

 &lt;p&gt;33&lt;/p&gt;

 &lt;p&gt;34&lt;/p&gt;

 &lt;p&gt;35&lt;/p&gt;

 &lt;p&gt;36&lt;/p&gt;

 &lt;p&gt;37&lt;/p&gt;

 &lt;p&gt;38&lt;/p&gt;

 &lt;p&gt;39&lt;/p&gt;

 &lt;p&gt;40&lt;/p&gt;

 &lt;p&gt;41&lt;/p&gt;

 &lt;p&gt;42&lt;/p&gt;

 &lt;p&gt;43&lt;/p&gt;

 &lt;p&gt;44&lt;/p&gt;

 &lt;p&gt;45&lt;/p&gt;

 &lt;p&gt;46&lt;/p&gt;

 &lt;p&gt;47&lt;/p&gt;

 &lt;p&gt;48&lt;/p&gt;

 &lt;p&gt;49&lt;/p&gt;

 &lt;p&gt;50&lt;/p&gt;

 &lt;p&gt;51&lt;/p&gt;

 &lt;p&gt;52&lt;/p&gt;

 &lt;p&gt;53&lt;/p&gt;

 &lt;p&gt;54&lt;/p&gt;

 &lt;p&gt;55&lt;/p&gt;

 &lt;p&gt;56&lt;/p&gt;

 &lt;p&gt;57&lt;/p&gt;

 &lt;p&gt;58&lt;/p&gt;

 &lt;p&gt;59&lt;/p&gt;

 &lt;p&gt;60&lt;/p&gt;

 &lt;p&gt;61&lt;/p&gt;

 &lt;p&gt;62&lt;/p&gt;

 &lt;p&gt;63&lt;/p&gt;

 &lt;p&gt;64&lt;/p&gt;

 &lt;p&gt;65&lt;/p&gt;

 &lt;p&gt;66&lt;/p&gt;

 &lt;p&gt;67&lt;/p&gt;
 &lt;/td&gt;
 &lt;td&gt;
 &lt;p&gt;package automationFramework;&lt;/p&gt;

 &lt;p&gt;&amp;nbsp;&lt;/p&gt;

 &lt;p&gt;import java.util.concurrent.TimeUnit;&lt;/p&gt;

 &lt;p&gt;&amp;nbsp;&lt;/p&gt;

 &lt;p&gt;import org.openqa.selenium.By;&lt;/p&gt;

 &lt;p&gt;import org.openqa.selenium.WebDriver;&lt;/p&gt;

 &lt;p&gt;import org.openqa.selenium.firefox.FirefoxDriver;&lt;/p&gt;

 &lt;p&gt;import org.testng.annotations.Test;&lt;/p&gt;

 &lt;p&gt;import org.testng.annotations.BeforeMethod;&lt;/p&gt;

 &lt;p&gt;import org.testng.annotations.AfterMethod;&lt;/p&gt;

 &lt;p&gt;&amp;nbsp;&lt;/p&gt;

 &lt;p&gt;public class TestNG {&lt;/p&gt;

 &lt;p&gt;public WebDriver driver;&lt;/p&gt;

 &lt;p&gt;@Test&lt;/p&gt;

 &lt;p&gt;public void main() {&lt;/p&gt;

 &lt;p&gt;// Find the element that&apos;s ID attribute is &apos;user_login&apos; (Username)&lt;/p&gt;

 &lt;p&gt;// Enter Username on the element found by above desc.&lt;/p&gt;

 &lt;p&gt;driver.findElement(By.id(&quot;user_login&quot;)).sendKeys(&quot;subscriber&quot;);&lt;/p&gt;

 &lt;p&gt;// Find the element that&apos;s ID attribute is &apos;user_pass&apos; (Password)&lt;/p&gt;

 &lt;p&gt;// Enter Password on the element found by the above desc.&lt;/p&gt;

 &lt;p&gt;driver.findElement(By.id(&quot;user_pass&quot;)).sendKeys(&quot;2016subscriberpasssword2016ok&quot;);&lt;/p&gt;

 &lt;p&gt;// Now submit the form. WebDriver will find the form for us from the element&lt;/p&gt;

 &lt;p&gt;driver.findElement(By.id(&quot;wp-submit&quot;)).click();&lt;/p&gt;

 &lt;p&gt;if (driver.findElement(By.id(&quot;profile-page&quot;)).isDisplayed())&lt;/p&gt;

 &lt;p&gt;{&lt;/p&gt;

 &lt;p&gt;// Print a Log In message to the screen&lt;/p&gt;

 &lt;p&gt;System.out.println(&quot;Login successfully.&quot;);&lt;/p&gt;

 &lt;p&gt;}&lt;/p&gt;

 &lt;p&gt;}&lt;/p&gt;

 &lt;p&gt;@BeforeMethod&lt;/p&gt;

 &lt;p&gt;public void beforeMethod() {&lt;/p&gt;

 &lt;p&gt;// Create a new instance of the Firefox driver&lt;/p&gt;

 &lt;p&gt;driver = new FirefoxDriver();&lt;/p&gt;

 &lt;p&gt;//Put a Implicit wait, this means that any search for elements on the page could take the time the implicit wait is set for before throwing exception&lt;/p&gt;

 &lt;p&gt;driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);&lt;/p&gt;

 &lt;p&gt;//Launch the Wordpress Admin site&lt;/p&gt;

 &lt;p&gt;driver.get(&quot;&lt;a href=&quot;http://autoqa.pp.ua/wp-admin&quot; rel=&quot;nofollow&quot;&gt;http://autoqa.pp.ua/wp-admin&lt;/a&gt;&quot;);&lt;/p&gt;

 &lt;p&gt;}&lt;/p&gt;

 &lt;p&gt;@AfterMethod&lt;/p&gt;

 &lt;p&gt;public void afterMethod() {&lt;/p&gt;

 &lt;p&gt;// Close the driver&lt;/p&gt;

 &lt;p&gt;driver.quit();&lt;/p&gt;

 &lt;p&gt;}&lt;/p&gt;

 &lt;p&gt;}&lt;/p&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
6) Запустите тест-кейс с помощью команды&amp;nbsp;&lt;strong&gt;Run As&lt;/strong&gt;&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;strong&gt;TestNG Test&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;TestNG-FTC-5&quot; height=&quot;791&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-51.png&quot; width=&quot;850&quot; /&gt;&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;Результаты&amp;nbsp;запуска Testng&amp;nbsp;тест-кейса&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;7) После завершения выполнения тест-кейса перейдите в окно результата запуска&amp;nbsp;&lt;strong&gt;TestNg Result&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-6.png&quot;&gt;&lt;img alt=&quot;TestNG-FTC-6&quot; height=&quot;364&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-6.png&quot; width=&quot;1029&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Он отображает&amp;nbsp;&amp;ldquo;passed : 1&amp;Prime;. Это означает, что тест-кейс выполнилcя успешно&amp;nbsp;и&amp;nbsp;Passed.&lt;/p&gt;

&lt;p&gt;Еще есть три вкладки:&amp;nbsp;&amp;ldquo;All Tests&amp;rdquo;, &amp;ldquo;Failed Tests&amp;rdquo;&amp;nbsp;и&amp;nbsp;&amp;ldquo;Summary&amp;rdquo;. Нажмите&amp;nbsp;&amp;ldquo;All Tests&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-7.png&quot;&gt;&lt;img alt=&quot;TestNG-FTC-7&quot; height=&quot;364&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-7.png&quot; width=&quot;1029&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Здесь присутствует информация о том, какой метод запускался и время выполнения.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;8) TestNG также генерирует&amp;nbsp;HTML отчет. Чтобы его просмотреть, перейдите в&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;директорию проекта и в папку&amp;nbsp;&lt;strong&gt;test-output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;9) Откройте&amp;nbsp;&amp;ldquo;&lt;strong&gt;emailable-report.html&amp;rdquo;&amp;nbsp;&lt;/strong&gt;в браузере.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-9.png&quot;&gt;&lt;img alt=&quot;TestNG-FTC-9&quot; height=&quot;338&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-9.png&quot; width=&quot;849&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;10) TestNG также создает&amp;nbsp;&amp;ldquo;&lt;strong&gt;index.html&amp;rdquo;,&amp;nbsp;&lt;/strong&gt;размещенный в папке&amp;nbsp;&lt;strong&gt;test-output&lt;/strong&gt;. Этот репорт позволяет перейти по ссылкам&amp;nbsp;&lt;strong&gt;Groups&lt;/strong&gt;&amp;nbsp;и&amp;nbsp;&lt;strong&gt;Reporter Output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-10.png&quot;&gt;&lt;img alt=&quot;TestNG-FTC-10&quot; height=&quot;378&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-10.png&quot; width=&quot;585&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-11.png&quot;&gt;&lt;img alt=&quot;TestNG-FTC-11&quot; height=&quot;403&quot; src=&quot;http://autoqa.org/wp-content/uploads/2014/10/TestNG-FTC-11.png&quot; width=&quot;1058&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/pervyj_test_kejs_s_ispolzovaniem_testng/2017-09-08-9</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/pervyj_test_kejs_s_ispolzovaniem_testng/2017-09-08-9</guid>
			<pubDate>Fri, 08 Sep 2017 10:41:27 GMT</pubDate>
		</item>
		<item>
			<title>Установка sikuli</title>
			<description>&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;Sikuli &amp;mdash; это API позволяющая писать на Jython сценарии автоматизации опираясь на визуальную составляющую любой программы/сайта и т.д. Особенно приятна для автоматизации Flash.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Почитать можно тут&amp;nbsp;&lt;a href=&quot;http://www.sikuli.org/downloadrc3.html&quot;&gt;http://www.sikuli.org/downloadrc3.html&lt;/a&gt;&amp;nbsp;, но лучше сразу вот по этой инструкции:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;
&lt;table style=&quot;margin: 0px; padding: 0px; border: 0px; border-collapse: collapse; border-spacing: 0px; color: rgb(34, 36, 38); font-family: Arial, &apos;Helvetica Neue&apos;, Helvetica, sans-serif; line-height: 16.9px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px;&quot;&gt;
 &lt;td class=&quot;votecell&quot; style=&quot;margin: 0px; padding: 0px 15px 0px 0px; border: 0px; vertical-align: top;&quot;&gt;
 &lt;div class=&quot;vote&quot; style=&quot;margin: 0px; paddin...</description>
			<content:encoded>&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;Sikuli &amp;mdash; это API позволяющая писать на Jython сценарии автоматизации опираясь на визуальную составляющую любой программы/сайта и т.д. Особенно приятна для автоматизации Flash.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Почитать можно тут&amp;nbsp;&lt;a href=&quot;http://www.sikuli.org/downloadrc3.html&quot;&gt;http://www.sikuli.org/downloadrc3.html&lt;/a&gt;&amp;nbsp;, но лучше сразу вот по этой инструкции:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;
&lt;table style=&quot;margin: 0px; padding: 0px; border: 0px; border-collapse: collapse; border-spacing: 0px; color: rgb(34, 36, 38); font-family: Arial, &apos;Helvetica Neue&apos;, Helvetica, sans-serif; line-height: 16.9px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px;&quot;&gt;
 &lt;td class=&quot;votecell&quot; style=&quot;margin: 0px; padding: 0px 15px 0px 0px; border: 0px; vertical-align: top;&quot;&gt;
 &lt;div class=&quot;vote&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; text-align: center; min-width: 46px;&quot;&gt;&lt;br /&gt;
 &lt;a class=&quot;vote-down-off&quot; style=&quot;margin: 0px auto 10px; padding: 0px; border: 0px; font-size: 1px; cursor: pointer; color: rgb(0, 119, 204); overflow: hidden; display: block; text-indent: -9999em; width: 40px; height: 30px; background-image: url(&quot;img/sprites.svg?v=a7723f5f7e59&quot;), none; background-size: initial; background-position: 0px -220px; background-repeat: no-repeat;&quot; title=&quot;This answer is not useful&quot;&gt;down vote&lt;/a&gt;&lt;/div&gt;
 &lt;/td&gt;
 &lt;td class=&quot;answercell&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: top;&quot;&gt;
 &lt;div class=&quot;post-text&quot; itemprop=&quot;text&quot; style=&quot;margin: 0px 0px 5px; padding: 0px; border: 0px; font-size: 15px; width: 660px; word-wrap: break-word; line-height: 1.3;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Finally got this working, here is what I did,&lt;/p&gt;

 &lt;ul style=&quot;margin: 0px 0px 1em 30px; padding-right: 0px; padding-left: 0px; border: 0px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Download the sikuli set-up Jar from&lt;br /&gt;
 &quot;&lt;a href=&quot;https://launchpad.net/sikuli/sikulix/1.0.1/+download/sikuli-setup.jar&quot; rel=&quot;nofollow&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; text-decoration: none; cursor: pointer; color: rgb(0, 89, 153);&quot;&gt;https://launchpad.net/sikuli/sikulix/1.0.1/+download/sikuli-setup.jar&lt;/a&gt;&quot;&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Save this jar in a folder &apos;SikuliSetup&apos;,now create a sub directory&lt;br /&gt;
 &apos;Downloads&apos; which will come into picture later.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Run the above Jar, this will generate two files under the above directory.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Now run the &apos;runSetup.bat&apos; file generated from above setup. This will start the setup, now select the 4th and 6th option in the &apos;sikulisetup&apos; pop-up and click on &apos;setup Now&apos;.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;The above step will fail for most people due to default security issues.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;If the above step fails then you need to download an offline version of this jar from this URL&lt;br /&gt;
 &quot;&lt;a href=&quot;https://launchpadlibrarian.net/156273987/Sukuli-1.0.1-Offline-Setup-Java-option3-option4.zip&quot; rel=&quot;nofollow&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; text-decoration: none; cursor: pointer; color: rgb(0, 89, 153);&quot;&gt;https://launchpadlibrarian.net/156273987/Sukuli-1.0.1-Offline-Setup-Java-option3-option4.zip&lt;/a&gt;&quot;.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;UnZip the above file and copy the &apos;1.0.1-3.jar&apos; file to &apos;Downloads&apos;&lt;br /&gt;
 directory created under the &apos;SikuliSetup&apos; directory previously.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Now run the &apos;runSetup.bat&apos; file again, this will generate a new jar file &apos;sikuli-java&apos; and its dependent libraries under &apos;lib&apos; folder.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;That&apos;s it, now copy this jar &apos;sikuli-java.jar&apos; to your java build path in eclipse.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Now Java will use this sikuli libraries without any issues.&lt;/p&gt;
 &lt;/li&gt;
 &lt;li style=&quot;margin: 0px; padding: 0px; border: 0px; word-wrap: break-word;&quot;&gt;
 &lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; border: 0px; clear: both;&quot;&gt;Once after you setup the jar file under build path, restart the&lt;br /&gt;
 system and login again.&lt;/p&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://stackoverflow.com/questions/29409094/how-to-generate-64-bit-version-of-sikuli-jar&quot;&gt;http://stackoverflow.com/questions/29409094/how-to-generate-64-bit-version-of-sikuli-jar&lt;/a&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/ustanovka_sikuli/2015-12-14-8</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/ustanovka_sikuli/2015-12-14-8</guid>
			<pubDate>Mon, 14 Dec 2015 14:14:21 GMT</pubDate>
		</item>
		<item>
			<title>Операции в Java</title>
			<description>&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Операции&lt;/h3&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Над целочисленными типами&lt;/h4&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;операторы сравнения (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;g...</description>
			<content:encoded>&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Операции&lt;/h3&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Над целочисленными типами&lt;/h4&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;операторы сравнения (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;gt;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&lt;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;gt;=&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&lt;=&lt;/b&gt;) и равенства (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;==&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;!=&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;унарные операторы (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;+&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;-&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;мультипликативные (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;*&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;/&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;%&lt;/b&gt;) и аддитивные (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;+&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;-&lt;/b&gt;) операторы&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;инкремент (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;++&lt;/b&gt;) и декремент (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;--&lt;/b&gt;) в префиксной и постфиксной формах&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;знаковые (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;gt;&amp;gt;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&lt;&lt;&lt;/b&gt;) и без знаковые (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/b&gt;) операторы сдвига&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;побитовые операторы (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;~&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;amp;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;^&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;|&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;условный оператор (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;?&lt;/b&gt;&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;:&amp;nbsp;&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;оператор приведения типов&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Над&amp;nbsp;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px;&quot;&gt;Floating-Point&lt;/i&gt;&amp;nbsp;типами&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Над числами с плавающей точкой можно проводить все те же операции, что и с целыми числами, за исключением побитовых операторов и операторов сдвига.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Над логическим типом&lt;/h4&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;операторы равенства (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;==&lt;/b&gt;&amp;nbsp;и&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;!=&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;логические операторы (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;!&lt;/b&gt;,&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;amp;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;|&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;^&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;условные логические операторы (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;&amp;amp;&amp;amp;&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;||&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;условный оператор (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;?&lt;/b&gt;&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;:&lt;/b&gt;&amp;nbsp;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Преобразование&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Существует три типа преобразований:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;расширяющее преобразование (&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;widening&lt;/i&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;суживающее преобразование (&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;narrowing&lt;/i&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;widening + narrowing (преобразование&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;byte&lt;/b&gt;&amp;nbsp;к&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;char&lt;/b&gt;, сначала&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;byte&lt;/b&gt;&amp;nbsp;преобразовываем в&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;int&lt;/b&gt;, а потом&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;int&lt;/b&gt;&amp;nbsp;&amp;mdash; в&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;char&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Расширяющее преобразование&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Если оба типа совместимы и длина целевого типа больше длины исходного типа выполняется расширяющее преобразование (например&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;byte&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;преобразуется в&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;). Следующая таблица демонстрирует все возможные расширяющее преобразования. Курсовом помечены типы, преобразования в которые, возможно, приведут к потери данных.&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;short, int, long, float, double&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;short&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int, long, float, double&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;char&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int, long, float, double&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long,&amp;nbsp;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;float&lt;/i&gt;, double&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;float&lt;/i&gt;,&amp;nbsp;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;double&lt;/i&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;double&lt;/i&gt;&amp;nbsp;(если использовать strictfp потери данных не будет)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Суживающее преобразование&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;При суживающем преобразовании возможна потеря информации об общей величине числового значения, также можно потерять точность и диапазон. Все возможные суживающее преобразования показаны в таблице:&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;short&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte, char&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;char&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte, short&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte, short, char&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int, byte, short, char&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long, int, byte, short, char&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;double&lt;/th&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float, long, int, byte, short, char&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Чтобы выполнить преобразование двух несовместимых типов необходимо воспользоваться приведением (&lt;/span&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;casting&lt;/i&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;). Если значения исходного целочисленного типа больше допустимого диапазона значений целевого типа, то оно будет сведено к результату деления по модулю на диапазон целевого типа. Если же значения типа с плавающей точкой приводится к значению целочисленного типа, то происходит усечение (отбрасывается дробная часть).&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt; a = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt;)&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;128&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// - 128&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt; b = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt;)&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;42&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// привидение возможно, но, в данном случаи, в нем нет необходимости&lt;/span&gt;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; i1 = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt;)&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;1e20&lt;/span&gt;f; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 2147483647&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; i2 = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt;)Float.NaN; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 0&lt;/span&gt;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt; f1 = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt;)-&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;1e100&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// -Infinity&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt; f2 = (&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt;)&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;1e-50&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 0.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Продвижение&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Когда требуемая точность промежуточного значения выходит за пределы допустимого диапазона значений любого с операндов в выражении используется автоматическое продвижение типов.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; a = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;100&lt;/span&gt;;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt; b = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;50.0&lt;/span&gt;f;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; c = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;50.0&lt;/span&gt;;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; result = a - b + c; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 100.0&lt;/span&gt;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// на самом деле: result = (double)((float)a - b) + c;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Правила продвижения хорошо демонстрирует следующая диаграмма:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;div style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px; text-align: center;&quot;&gt;&lt;img src=&quot;https://habrastorage.org/files/9c9/294/fb3/9c9294fb3b6a425481278043eea27aa2.png&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: middle; outline: 0px; max-width: 100%;&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Классы-обертки&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Для представления примитивных типов как объектов было сделаны классы-обертки (&lt;/span&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;wrapper classes&lt;/i&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;). Какие преимущества дают нам классы-обертки?&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;возможность использования объектов классов-оберток в качестве параметров к методам или как generic-параметры&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;возможность использования констант, которые отвечают за границы соответствующего типа данных (&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;MIN_VALUE&lt;/b&gt;&amp;nbsp;и&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;MAX_VALUE&lt;/b&gt;)&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;возможность использования методов для преобразования в другие примитивные типы, конвертации между системами счисления&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Wrapper-классов восемь, по одному на каждый примитивный тип:&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Примитивный тип&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Класс-обертка&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;boolean&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Boolean&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Byte&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;char&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Character&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Float&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Integer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Long&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;short&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Short&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;double&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Double&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Почти все классы (кроме&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Boolean&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;и&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Character&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;) унаследованы от абстрактного класса&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Number&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;и являются сравнимыми (реализуют интерфейс&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Comparable&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;). Иерархия, примерно, такая:&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px; text-align: center;&quot;&gt;&lt;img src=&quot;https://habrastorage.org/files/409/262/9d9/4092629d910d4128a7220ed8e5ddd689.png&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: middle; outline: 0px; max-width: 100%;&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// существует несколько способов создания&lt;/span&gt;
Integer i1 = &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;new&lt;/span&gt; Integer(&lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&quot;10&quot;&lt;/span&gt;);
Integer i2 = &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;new&lt;/span&gt; Integer(&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;);
Integer i3 = Integer.valueOf(&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;);
Integer i4 = Integer.valueOf(&lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&quot;10&quot;&lt;/span&gt;, &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// можно указать систему счисления, только для оберток целочисленных примитивных типов&lt;/span&gt;

Character c1 = &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;new&lt;/span&gt; Character(&lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&apos;c&apos;&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// тут только один способ&lt;/span&gt;

&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// получаем значения примитивных типов&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; i5 = i1.intValue();
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; c2 = c1.charValue();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Автоупаковка и распаковка&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;В версии JDK 5 были введены два важных средства:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 0px 20px; padding-right: 0px; padding-left: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; list-style-position: outside; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;Автоупаковка (&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;autoboxing&lt;/i&gt;) &amp;mdash; процесс автоматического инкапсулирования примитивного типа в соответствующий класс-обертку. Отпадает необходимость явно создавать объект.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 0px 20px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; list-style: disc outside;&quot;&gt;Распаковка (&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;unboxing&lt;/i&gt;) &amp;mdash; процесс автоматического извлечения примитивного типа с соответствующего класса-обертки. Отпадает необходимость явного вызова метода для получения примитивного типа.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Эти средства облегчают создания объектов, получения примитивных типов, упрощают работу с коллекциями.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;void&lt;/span&gt; main(String... s) {
 Integer i1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// автоупаковка - Integer.valueOf(10)&lt;/span&gt;
 &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; i2 = i1; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// распаковка - i1.intValue()&lt;/span&gt;

 method(&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// автоупаковка в объект класса Integer - Integer.valueOf(10)&lt;/span&gt;

 ++i1; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// распаковка - i1.intValue(), автоупаковка - Integer.valueOf(i1.intValue() + 1)&lt;/span&gt;
}

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; method(Integer i) {
 &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;return&lt;/span&gt; i; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// распаковка объекта, принятого как параметр - i.intValue()&lt;/span&gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Некоторые полезные методы&lt;/h4&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;Integer i1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;128&lt;/span&gt;;
i1.compareTo(&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;5&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 1, то есть i.intValue() &amp;gt; Integer.valueOf(5)&lt;/span&gt;

Integer.decode(&lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&quot;0xabc&quot;&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// не работает с двоичными литералами&lt;/span&gt;
Integer.parseInt(&lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&quot;10&quot;&lt;/span&gt;, &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;3&lt;/span&gt;); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// работает с любой системой счисления [2, 36]&lt;/span&gt;

&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// метод преобразования&lt;/span&gt;
i1.byteValue(); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// (byte)i.intValue()&lt;/span&gt;

&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// методы проверки&lt;/span&gt;
Float f = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;20.5&lt;/span&gt;f;
Boolean badFloat = f.isInfinite() || f.isNaN(); &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// false, автоупаковка boolean&lt;/span&gt;

&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// преобразование в строку&lt;/span&gt;
f.toString();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Спасибо за внимание. Все дополнения, уточнения и критика приветствуются.&lt;/span&gt;&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/operacii_v_java/2015-07-16-7</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/operacii_v_java/2015-07-16-7</guid>
			<pubDate>Thu, 16 Jul 2015 13:30:57 GMT</pubDate>
		</item>
		<item>
			<title>Литералы</title>
			<description>&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Литералы&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Значения примитивных типов данных в большинстве случаев инициализируются с помощью литералов. Рассмотрим их.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Целочисленные литералы&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana,...</description>
			<content:encoded>&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Литералы&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Значения примитивных типов данных в большинстве случаев инициализируются с помощью литералов. Рассмотрим их.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Целочисленные литералы&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Наиболее часто используемые литералы. Любое целочисленное значение является числовым литералом (например,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;-10&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;10&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;&amp;mdash; десятичные значения). Можно использовать восьмеричные, шестнадцатеричные и двоичные литералы:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// десятичный литерал, числа [0, 9], не начинается с 0&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; decimal = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 10&lt;/span&gt;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// восьмеричный литерал начинается с 0, далее числа [0, 7]&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; octal = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;010&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 8&lt;/span&gt;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// шестнадцатеричный литерал начинается с 0x или 0Х, далее числа [0, 9] и символы [a-f]&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; hexadecimal = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0x10&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 16&lt;/span&gt;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// двоичный литерал начинается с Оb или 0B, далее числа [0, 1]&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; binary = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0&lt;/span&gt;b10; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Все целочисленные литералы представляют значения&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Если значение литерала лежит в диапазоне&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;byte&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;short&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;или&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;char&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, то его можно присвоить переменной этого типа без приведения типов. Для создания литерала типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;long&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, необходимо явно указать компилятору, дополнив литерал буквой &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;l&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos; или &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;L&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos;:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt; b1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;127&lt;/span&gt;;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;byte&lt;/span&gt; b2 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;128&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// ошибка&lt;/span&gt;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;short&lt;/span&gt; s1 = -&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;32768&lt;/span&gt;;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;short&lt;/span&gt; s2 = -&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;32769&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// ошибка&lt;/span&gt;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; c1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0&lt;/span&gt;;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; c2 = -&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;1&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// ошибка&lt;/span&gt;

&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;long&lt;/span&gt; l1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;10&lt;/span&gt;l;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;long&lt;/span&gt; l2 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0x7fffffffffffffff&lt;/span&gt;L; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// максимальное значение типа long&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Литералы с плавающей точкой&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Существует две формы записи литеров с плавающей точкой: стандартная и экспоненциальная:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// стандартная форма&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0.&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// эквивалентно .0 или 0.0;&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d2 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0.125&lt;/span&gt;;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// экспоненциальная форма - используется символ &apos;e&apos; или &apos;E&apos;&lt;/span&gt;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// после него степень числа 10, на которую следует умножить данное число&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d3 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;125E+10&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// если степень положительная, &apos;+&apos; можно упустить&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d4 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;1.25e-10&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Всех литералам с плавающей точкой по-умолчанию присваивается тип&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;double&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Поэтому чтобы создать литерал типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;float&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, нужно после литерала указать букву &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;f&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos; или &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;F&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos;. К литералам также можно добавлять букву &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;d&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos; или &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;D&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos;, сообщая, что это литерал типа double, но зачем?&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d1 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0.125&lt;/span&gt;;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt; f2 = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0.125&lt;/span&gt;f;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Можно использовать шестнадцатеричные литералы с плавающей точкой, например:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// P - двоичный порядок, что обозначает степень числа 2, на которое следует умножить данное число&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; d = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0x10&lt;/span&gt;.P10d; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// конечно, можно и без &apos;d&apos; &lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;float&lt;/span&gt; f = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0x20&lt;/span&gt;.P10f;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Для удобности чтения длинных литералов в 7 версии языка была добавлена возможность использовать символ &apos;_&apos; внутри литерала:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// можно делать любые комбинации с использованием любого количества символов &apos;_&apos;&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; phone = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;111&lt;/span&gt;__111__111;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;int&lt;/span&gt; bin = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;0&lt;/span&gt;b1000_1000_1000;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;double&lt;/span&gt; dollars = &lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;23&lt;/span&gt;_000&lt;span class=&quot;number&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(47, 152, 255);&quot;&gt;.450&lt;/span&gt;__500;
&lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// не допускается использовать символ &apos;_&apos; в конце или начале литерала, также не можно разрывать &apos;0x&apos; и &apos;0b&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Символьные литералы&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Символьные литералы заключаются в одинарные кавычки. Все отображаемые символы можно задавать таким способом. Если символ нельзя ввести непосредственно, используют управляющее последовательности начинающиеся с символа &apos;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;&amp;#92;&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&apos;. Хотя все эти последовательности можно заменить соответствующим&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Unicode&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;кодом. Также символьный литерал можно создать используя восьмеричную (&apos;&amp;#92;xxx&apos;) и шестнадцатеричную форму (&apos;&amp;#92;uxxxx&apos;).&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; h = &lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&apos;a&apos;&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// стандартная форма&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; a = &lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&apos;&amp;#92;001&apos;&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// восьмеричная форма&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;char&lt;/span&gt; c = &lt;span class=&quot;string&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(51, 153, 0);&quot;&gt;&apos;&amp;#92;u0001&apos;&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// шестнадцатеричная форма &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Существуют также строковые литералы. Информацию о них можно получить&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://habrahabr.ru/post/260767/&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(153, 0, 153); text-decoration: none; font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;тут&lt;/a&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Логические литералы&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;С логическими операторами все просто. Существует только два логических литерала:&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; word-break: break-all; overflow-y: hidden; overflow-x: auto; color: rgb(0, 0, 0); line-height: 22.3999996185303px;&quot;&gt;
&lt;code class=&quot;java&quot; style=&quot;margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; font-family: Menlo, Monaco, &apos;Courier New&apos;, monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);&quot;&gt;&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;boolean&lt;/span&gt; yes = &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;true&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// истина&lt;/span&gt;
&lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;boolean&lt;/span&gt; no = &lt;span class=&quot;keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(77, 115, 134);&quot;&gt;false&lt;/span&gt;; &lt;span class=&quot;comment&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: gray;&quot;&gt;// ложь&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Логические литералы можно присваивать только переменным типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;boolean&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Также важно понимать, что&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;false&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;не равен&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;0&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, а&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;true&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;не равен&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;1&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Преобразовать переменную типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;boolean&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;в другие примитивные типы не выйдет.&lt;/span&gt;&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/literaly/2015-07-16-6</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/literaly/2015-07-16-6</guid>
			<pubDate>Thu, 16 Jul 2015 13:30:05 GMT</pubDate>
		</item>
		<item>
			<title>Примитивные типы в Java</title>
			<description>&lt;p&gt;&lt;a href=&quot;http://habrahabr.ru/post/261315/&quot;&gt;http://habrahabr.ru/post/261315/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Примитивные типы в Java &amp;mdash; важная, часто используемая часть языка, которая требует особого обращения. В этой публикации попробуем ответить на все вопросы связанные с примитивными типами, механизмом их работы, обработкой. Статья предназначена как для новичков, которые только стали на тернистый путь изучения Java (к ним отношусь и я), так и для людей, достаточно знакомым с языком, которые смогут освежить знания и, надеюсь, найдут что-то интересное для себя.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;a name=&quot;habracut&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(109, 163, 189); font-family: Verdana, sans-serif; line-height: 22...</description>
			<content:encoded>&lt;p&gt;&lt;a href=&quot;http://habrahabr.ru/post/261315/&quot;&gt;http://habrahabr.ru/post/261315/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Примитивные типы в Java &amp;mdash; важная, часто используемая часть языка, которая требует особого обращения. В этой публикации попробуем ответить на все вопросы связанные с примитивными типами, механизмом их работы, обработкой. Статья предназначена как для новичков, которые только стали на тернистый путь изучения Java (к ним отношусь и я), так и для людей, достаточно знакомым с языком, которые смогут освежить знания и, надеюсь, найдут что-то интересное для себя.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;a name=&quot;habracut&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(109, 163, 189); font-family: Verdana, sans-serif; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Примитивные типы&lt;/h3&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Примитивные типы немного нарушают объектную ориентированность языка Java, так так представляют одиночные (простые) значения. Эта особенность объясняется желанием обеспечить максимальную эффективность. Создавать объект простой переменной с помощью new недостаточно эффективно, так как new перемещает объект в кучу. Вместо этого создается &amp;laquo;автоматическая&amp;raquo; переменная, которая не является ссылкой на объект. Переменная хранит единственное значение и располагается в стеке. Стек &amp;mdash; это область хранения данных, расположена в RAM. Процессор имеет прямой доступ до этой области через указатель на стек, поэтому стек &amp;mdash; очень быстрый и эффективный способ хранения данных. По скорости стек уступает только регистрам (логично, так как регистры расположены внутри процессора).&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Все размеры примитивных типов строго фиксированы и не зависят от машинной архитектуры. Это одна с причин улучшенной переносимости Java-программ.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;В Java определено восемь примитивных типов, которые можно разбить на четыре группы:&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Целые числа&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Числа с плавающей точкой&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Символы&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Логические значения&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte, short, int, long&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float, double&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;char&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;boolean&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Целые числа&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Для целых чисел определены четыре примитивных типа:&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;byte&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;short&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;long&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Все эти типы представляют целочисленные значения со знаком: положительные или отрицательные. В Java нет положительных целочисленных значений без знака (&lt;/span&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;unsigned&lt;/i&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;). Как было сказано раньше, все размеры примитивных типов фиксированы:&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Тип&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в байтах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в битах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Диапазон&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;byte&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;1&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;8&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[-128, 127] или [-2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;7&lt;/sup&gt;, 2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;7&lt;/sup&gt;-1]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;short&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;2&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;16&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[-32768, 32767] или [-2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;15&lt;/sup&gt;, 2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;15&lt;/sup&gt;-1]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;int&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;4&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;32&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[-2147483648, 2147483647] или [-2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;31&lt;/sup&gt;, 2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;31&lt;/sup&gt;-1]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;long&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;8&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;64&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[-9223372036854775808, 9223372036854775807] или [-2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;63&lt;/sup&gt;, 2&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;63&lt;/sup&gt;-1]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Наименьшим целочисленным типом является&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;byte&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Переменные этого типа очень удобны для работы с потоками ввода-вывода и при манипулировании двоичными данными. Далее идет тип&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;short&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, который применяется реже всех остальных типов. Наиболее часто употребляемым типом является&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Его постоянно используют в циклах, для индексации массивов. Может показаться, что использование типов&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;byte&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;и&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;short&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;в местах, где не требуется широкий диапазон значений, будет более эффективным чем использование&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Но это не так, потому что при вычислении выражений значения типа byte или short будут преобразованы в&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;(мы еще вернемся к этому вопросу). Когда длины типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;int&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;недостаточно для хранения значения, нужно использовать&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;long&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Его диапазон значений достаточно велик, что делает&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;long&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;удобным при работе с большими целыми числами.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Числа с плавающей точкой&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Числа с плавающей точкой (или действительные числа) представлены типами&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;float&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;и&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;double&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Используются для хранения значений с точностью до определенного знака после десятичной точки.&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Тип&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в байтах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в битах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Диапазон&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;float&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;4&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;32&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[1.4e&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;-45&lt;/sup&gt;, 3.4028235e&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;38&lt;/sup&gt;]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;double&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;8&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;64&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[4.9e&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;-324&lt;/sup&gt;, 1.7976931348623157&lt;sup style=&quot;margin: 0px; padding: 0px; border: 0px; outline: 0px;&quot;&gt;308&lt;/sup&gt;]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Тип&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;float&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;определяет числовое значение с плавающей точкой одинарной точности. Этот тип используется, когда нужно числовое значение с дробной частью, но без особой точности. Тип&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;double&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;используется для хранений значений с плавающей точкой двойной точности. Обработка значений двойной точности выполняется быстрее, чем обработка значений одинарной точности. Поэтому большинство математических функций класса&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;java.lang.Math&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;возвращают значения типа&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;double&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Эффективнее всего использовать&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;double&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;, когда требуется сохранить точность многократно повторяющихся вычислений или манипулировать большими числами.&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Символы&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;В спецификации примитивный тип char принадлежит к целочисленным типам (или&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;integral types&lt;/i&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;), но поскольку он играет немного другую роль, можно выделить для него собственную категорию. Его роль &amp;mdash; представлять символы&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Unicode&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;. Для хранения символов требуется 16 бит. Странно, ведь для представления символов основных языков (например, английского, французского, испанского) достаточно 8 бит. Но такая цена интернационализации.&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 14px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Unicode&lt;/b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;использует полный набор международных символов на всех известных языках мира.&lt;/span&gt;&lt;/p&gt;

&lt;table style=&quot;margin: 1.5em 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); font-size: 14px; vertical-align: baseline; outline: 0px; border-collapse: collapse; border-spacing: 0px; clear: both; width: 999px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;
 &lt;tbody style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Тип&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в байтах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Длина в битах&lt;/th&gt;
 &lt;th style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;Диапазон&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px;&quot;&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;char&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;2&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;16&lt;/td&gt;
 &lt;td style=&quot;margin: 0px; padding: 0.3em; border: 1px solid rgb(204, 204, 204); vertical-align: baseline; outline: 0px; word-break: break-word;&quot;&gt;[&apos;&amp;#92;u0000&apos;, &apos;&amp;#92;uffff&apos;] или [0, 65535]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 16.7999992370605px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;Логические азначения&lt;/h4&gt;

&lt;p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot;&gt;Примитивный тип boolean предназначен для хранения логических значений. Данный тип может принимать одно из двух возможных значений: true (истина) или false (ложь). Значения boolean возвращаются со всех логических операций (например, операции сравнения). Является обязательным при построении циклов, операторов (например, for, if).&lt;/span&gt;&lt;br style=&quot;color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.3999996185303px;&quot; /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; border: 0px; font-size: 19.25px; vertical-align: baseline; outline: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; line-height: 22.3999996185303px;&quot;&gt;&amp;nbsp;&lt;/h3&gt;</content:encoded>
			<link>https://qa.at.ua/news/primitivnye_tipy_v_java/2015-07-16-5</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/primitivnye_tipy_v_java/2015-07-16-5</guid>
			<pubDate>Thu, 16 Jul 2015 13:29:11 GMT</pubDate>
		</item>
		<item>
			<title>12 Tools That I Use for Writing Unit and Integration Tests</title>
			<description>&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/testing/12-tools-that-i-use-for-writing-unit-and-integration-tests/&quot;&gt;http://www.petrikainulainen.net/programming/testing/12-tools-that-i-use-for-writing-unit-and-integration-tests/&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;I think that software development is more than just a job. I see myself as an artisan who is trying to get better every day. The &amp;ldquo;easiest way&amp;rdquo; to do this is to find a few good tools and find the answers to these questions:&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap:...</description>
			<content:encoded>&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/testing/12-tools-that-i-use-for-writing-unit-and-integration-tests/&quot;&gt;http://www.petrikainulainen.net/programming/testing/12-tools-that-i-use-for-writing-unit-and-integration-tests/&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;I think that software development is more than just a job. I see myself as an artisan who is trying to get better every day. The &amp;ldquo;easiest way&amp;rdquo; to do this is to find a few good tools and find the answers to these questions:&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;When should I use the tool X?&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;How should I use the tool X?&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;Automated testing is a very important part of software development, but I haven&amp;rsquo;t seen a lot of blog posts that let you to take a peek into the toolbox of another developers.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;This blog post lets you to take a peek into my toolbox. I will reveal 12 tools that I use for writing unit and integration tests. I will also provide links to other interesting webpages that help you to understand how you can use them.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;Let&amp;rsquo;s get started.&lt;/p&gt;

&lt;h2 style=&quot;margin: 42px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 26px; line-height: 41px; color: rgb(17, 17, 17);&quot;&gt;Taking a Peek Into My Toolbox&lt;/h2&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;Before we can use the tools that are described in this blog post, we have to create a build that can run both unit and integration tests. I have written two blog posts that describe how we can do this:&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/maven/integration-testing-with-maven/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Integration Testing with Maven&lt;/a&gt;&amp;nbsp;describes how we can create a Maven build that has different directories for unit and integration tests.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-integration-testing-with-the-testsets-plugin/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Getting Started With Gradle: Integration Testing With the TestSets Plugin&lt;/a&gt;&amp;nbsp;describes how we can create a Gradle build that has different directories for unit and integration tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;We are now ready to take closer look at my toolbox. I have divided my tools into different categories that makes this blog post easier to read.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;I give you 12 tools that I use for writing unit and integration tests:&lt;/p&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 20px; line-height: 33px; color: rgb(17, 17, 17);&quot;&gt;Running Tests&lt;/h3&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://junit.org/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;JUnit&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a framework that I use for writing both unit and integration tests. I like JUnit because it is the most popular testing framework for Java programming language. In other words, it has a lot extensions and it is easy to find solutions to your problems.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;https://github.com/NitorCreations/CoreComponents/tree/master/junit-runners&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;NestedRunner&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a JUnit runner that allows us to run test methods placed in nested inner classes. I like NestedRunner because of the following reasons:&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;We can replace long method names with BDD style class hierarchy.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;We can remove duplicate code by moving that code to setup methods and putting these methods to the correct inner classes.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;We can link the constants with the test cases that use them by declaring the constants in the correct inner class.&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;https://github.com/TNG/junit-dataprovider&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;junit-dataprovider&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a JUnit runner that allows us to write parametrized tests by using a&amp;nbsp;&lt;a href=&quot;http://testng.org/doc/documentation-main.html#parameters-dataproviders&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;TestNG like data provider&lt;/a&gt;. This is a huge improvement over the&amp;nbsp;&lt;a href=&quot;https://github.com/junit-team/junit/wiki/Parameterized-tests&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_Blank&quot;&gt;default way of writing parametrized tests&lt;/a&gt;&amp;nbsp;that pretty much sucks.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.vogella.com/tutorials/JUnit/article.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Unit Testing with JUnit&lt;/a&gt;&amp;nbsp;describes how we can write unit tests with JUnit 4.X.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/testing/writing-clean-tests-small-is-beautiful/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Writing Clean Tests: Small Is Beautiful&lt;/a&gt;&amp;nbsp;describes how we can solve the problems found from &amp;ldquo;clean&amp;rdquo; unit tests.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;https://github.com/TNG/junit-dataprovider/wiki/Getting-started&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;junit-dataprovider: Getting Started&lt;/a&gt;&amp;nbsp;describes how we can start using junit-dataprovider.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;https://github.com/TNG/junit-dataprovider/wiki/Features&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;junit-dataprovider: Features&lt;/a&gt;&amp;nbsp;describes the features of the junit-dataprovider.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://java.dzone.com/articles/alternative-junit&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Alternative to JUnit Parametrized Classes: junit-dataprovider&lt;/a&gt;&amp;nbsp;describes how we can replace the standard parametrized tests with tests that use the junit-dataprovider.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 20px; line-height: 33px; color: rgb(17, 17, 17);&quot;&gt;Mocking, Stubbing, and Faking Stuff&lt;/h3&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://mockito.org/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Mockito&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is the most popular mocking framework for writing unit tests. I like it because it has a simple API,&amp;nbsp;&lt;a href=&quot;https://code.google.com/p/mockito/wiki/FeaturesAndMotivations&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;a lot of useful features&lt;/a&gt;, and&amp;nbsp;&lt;a href=&quot;http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;excellent documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;https://github.com/greenmail-mail-test/greenmail&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Greenmail&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is an in-memory email server that supports SMTP, POP3, and IMAP with SSL socket support. I like it because it is really easy to use. When I was looking for a &amp;ldquo;fake&amp;rdquo; email server, I tried several alternatives and Greenmail was the only one that worked as I wanted.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://mockftpserver.sourceforge.net/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;MockFtpServer&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a library that provides two different FTP server implementations (fake/stub) that are&lt;a href=&quot;http://mockftpserver.sourceforge.net/fakeftpserver-versus-stubftpserver.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;useful for testing different scenarios&lt;/a&gt;. If we need test code that interacts with a FTP server, MockFtpServer is our weapon of choice.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Mockito Reference Manual&lt;/a&gt;&amp;nbsp;is an excellent example of a reference documentation that actually helps you to get the job done.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.hascode.com/2012/07/integration-testing-imap-smtp-and-pop3-with-greenmail/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Integration Testing IMAP, SMTP and POP3 with Greenmail&lt;/a&gt;&amp;nbsp;describes how you can write integration tests for code that sends email messages.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://mockftpserver.sourceforge.net/fakeftpserver-getting-started.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;FakeFtpServer &amp;ndash; Getting Started&lt;/a&gt;&amp;nbsp;describes how you can use the FakeFtpServer.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://mockftpserver.sourceforge.net/stubftpserver-getting-started.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;StubFtpServer &amp;ndash; Getting Started&lt;/a&gt;&amp;nbsp;describes how you can use the StubFtpServer.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://mockftpserver.sourceforge.net/fakeftpserver-versus-stubftpserver.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;FakeFtpServer or StubFtpServer?&lt;/a&gt;&amp;nbsp;helps you to decide which FTP server implementation you should use in your tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 20px; line-height: 33px; color: rgb(17, 17, 17);&quot;&gt;Writing Assertions&lt;/h3&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://hamcrest.org/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Hamcrest&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;provides matchers that we can use to write assertions for our unit and integration tests. I use it when I need to write assertions for unit or integration tests that use the&amp;nbsp;&lt;a href=&quot;http://www.petrikainulainen.net/spring-mvc-test-tutorial/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Spring MVC Test framework&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://joel-costigliola.github.io/assertj/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;AssertJ&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;provides a fluent API for writing assertions that have helpful error messages. It improves the readability of our test code and helps us to transform our test cases into executable specifications that speak the correct domain-specific language.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;https://code.google.com/p/hamcrest/wiki/Tutorial&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;The Hamcrest Tutorial&lt;/a&gt;&amp;nbsp;describes how you can get started with Hamcrest.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.vogella.com/tutorials/Hamcrest/article.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Using Hamcrest for testing&lt;/a&gt;&amp;nbsp;describes how you can use regular Hamcrest matchers in your unit tests and extend its capabilities by creating custom matchers.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://joel-costigliola.github.io/assertj/assertj-core.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;AssertJ Core Overview&lt;/a&gt;&amp;nbsp;provides an overview to AssertJ Core.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/unit-testing/turning-assertions-into-a-domain-specific-language/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Turning Assertions Into a Domain-Specific Language&lt;/a&gt;&amp;nbsp;describes how we can create custom AssertJ assertions.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/testing/writing-clean-tests-replace-assertions-with-a-domain-specific-language/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Writing Clean Tests: Replace Assertions With a Domain-Specific Language&lt;/a&gt;&amp;nbsp;describes why we should replace regular JUnit assertions with custom assertions that use the correct domain-specific language.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 20px; line-height: 33px; color: rgb(17, 17, 17);&quot;&gt;Testing Data Access Code&lt;/h3&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://www.h2database.com/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;H2&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a very fast in-memory database that is useful for writing integration tests that are run in the local development environment.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://dbunit.sourceforge.net/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;DbUnit&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is a JUnit extension that can be used to initialize the database into a known state before each integration test and ensure that the database contains the correct data. DbUnit has its warts, but it is a very useful tool because it helps us to separate the test data creation from the tested code.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://dbunit.sourceforge.net/components.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;DbUnit Core Components&lt;/a&gt;&amp;nbsp;describes the core components of DbUnit. If we want to write tests that use DbUnit, we should know what these components are.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://dbunit.sourceforge.net/bestpractices.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;DbUnit Best Practices&lt;/a&gt;&amp;nbsp;provides five rules that help us to write better tests for our data access code.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/writing-tests-for-data-access-code/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Writing Tests for Data Access Code&lt;/a&gt;&amp;nbsp;helps us to write deterministic data access tests which test the right thing, are easy to read, and easy to maintain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 20px; line-height: 33px; color: rgb(17, 17, 17);&quot;&gt;Testing Spring Applications&lt;/h3&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Spring Test&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;is the Swiss army knife of writing automated tests to Spring applications. It provides a first class support for writing unit and integration tests to Spring powered applications.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;a href=&quot;http://springtestdbunit.github.io/spring-test-dbunit/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Spring Test DbUnit&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;integrates DbUnit with the Spring Test Framework. If we need to write data access tests for a Spring application that uses relational database, Spring Test DbUnit helps us to do it.&lt;/p&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box;&quot;&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;The Spring Framework Reference Manual: 11. Testing&lt;/a&gt;&amp;nbsp;describes every feature of the Spring Test framework.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/spring-mvc-test-tutorial/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Spring MVC Test Tutorial&lt;/a&gt;&amp;nbsp;describes how we can write unit and integration tests for Spring MVC controllers.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-integration-testing/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Spring Data JPA Tutorial: Integration Testing&lt;/a&gt;&amp;nbsp;describes we you can write data access tests for our Spring powered repositories.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-using-null-values-in-dbunit-datasets/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Spring From the Trenches: Using Null Values in DbUnit Datasets&lt;/a&gt;&amp;nbsp;describes how we can use null values in our DbUnit datasets when we are writing data access tests for a Spring application.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;&lt;a href=&quot;http://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-resetting-auto-increment-columns-before-each-test-method/&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot;&gt;Spring From the Trenches: Resetting Auto Increment Columns Before Each Test Method&lt;/a&gt;&amp;nbsp;describes how we can reset the auto increment columns before each test method when we are writing data access tests for a Spring application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 style=&quot;margin: 42px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; font-weight: 900; font-family: proxima-nova-alt-condensed, serif; font-size: 26px; line-height: 41px; color: rgb(17, 17, 17);&quot;&gt;What Testing Tools Do You Use?&lt;/h2&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;I have now revealed the tools that I use for writing unit and integration tests. I challenge you to do the same. You can participate in this challenge by following these simple steps:&lt;/p&gt;

&lt;ul style=&quot;margin: 0px 0px 28px 28px; padding-right: 0px; padding-left: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;If you have a blog, you can write a blog post and leave a comment to this blog post.&lt;/li&gt;
 &lt;li style=&quot;margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; box-sizing: border-box; list-style: square;&quot;&gt;If you don&amp;rsquo;t have a blog, you can leave a comment to this blog post.&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;margin: 0px 0px 28px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;Why should you do this?&lt;/p&gt;

&lt;p style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(17, 17, 17); font-family: &apos;Helvetica Neue&apos;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 28px;&quot;&gt;Well, if helping other people isn&amp;rsquo;t enough for you, I promise to help you to get more readers by linking to your blog post, tweeting it, and sharing it with the&amp;nbsp;&lt;a href=&quot;https://plus.google.com/communities/101403828435690841021&quot; style=&quot;margin: 0px; padding: 0px; word-wrap: break-word; box-sizing: border-box; color: rgb(221, 0, 0);&quot; target=&quot;_blank&quot;&gt;Java Testing Society&lt;/a&gt;.&lt;/p&gt;</content:encoded>
			<link>https://qa.at.ua/news/12_tools_that_i_use_for_writing_unit_and_integration_tests/2015-07-16-4</link>
			<dc:creator>admin</dc:creator>
			<guid>https://qa.at.ua/news/12_tools_that_i_use_for_writing_unit_and_integration_tests/2015-07-16-4</guid>
			<pubDate>Thu, 16 Jul 2015 12:09:08 GMT</pubDate>
		</item>
	</channel>
</rss>