Статические вложенные классы

Экспертный уровень:

  • The Java Language Specification. James Gosling, Bill Joy, Guy L. Steele Jr., Gilad Bracha, Alex Buckley.

  • The Java Virtual Machine Specification. Tim Lindholm and Frank Yellin.

  • Oracle JRockit: The Definitive Guide. Marcus Hirt, Marcus Lagergren.

Java EE

  • Исчерпывающая официальная документация о работе и жизненном цикле сервлетов.

  • Beginning Java EE 7. Antonio Gonsalves.

    Русский перевод: Изучаем Java EE 7. Энтони Гонсалвес

  • Java EE 7. Основы Арун Гупта

  • Head First Servlets and JSP, 2nd Edition. Bryan Basham, Kathy Sierra, Bert Bates

  • Java Servlet and JSP Cookbook. Bruce W. Perry

    Русский перевод: Java сервлеты и JSP. Сборник рецептов. Брюс У. Перри

Spring

  • Официальная документация о каждом проекте Spring. Описано подробно, но довольно сложно и много, поэтому для первого обучения рекомендую начать с Spring Guides.

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

  • Spring в действии. Крейг Уоллс

    Несмотря на то, что в книге описана уже немолодая 3-я версия Spring, книга стоит ознакомления, так как очень просто и подробно знакомит читателя с фреймворком.

  • Spring 5 для профессионалов. Юлиана Козмина, Роб Харроп, Крис Шефер,
    Кларенс Хо

    Многолетний бестселлер, считающийся наиболее исчерпывающим и авторитетным руководством по Spring.

  • Pro Spring Integration. Dr. Mark Lui, Mario Gray, Andy Chan and Josh Long (англ.)

    Pro Spring Integration — это авторитетная книга от экспертов, которая проведет вас через обширный мир интеграции корпоративных приложений (EAI) и применения инфраструктуры Spring Integration для решения проблем интеграции.

  • Pro Spring 5, 5th Edition (2017) Iuliana Cosmina, Rob Harrop, Chris Schaefer, Clarence Ho (англ.)

    С помощью этой книги вы сможете изучить основы Spring, фреймворка для Java-платформы, а также EJB и Hibernate. Вы узнаете, как использовать Spring для создания различных частей Java-приложения: транзакций, веб и много другого. Пример приложения, описанного в книге, позволит применить на практике технологии и методы Spring и увидеть, как они работают вместе. Книга подойдет опытным разработчикам на Java.

  • Learn Microservices with Spring Boot: A Practical Approach to RESTful Services using RabbitMQ, Eureka, Ribbon, Zuul and Cucumber Moises Macero (англ.)

    Создайте архитектуру микросервисов с помощью Spring Boot, превратив приложение из небольшого монолита в управляемую событиями архитектуру, состоящую из нескольких служб. Эта книга следует поэтапному подходу к обучению микросервисной структуре, разработке через тестирование, Eureka, Ribbon, Zuul и сквозным тестам с Cucumber.

Hibernate

  • Beginning Hibernate. Joseph B. Ottinger, Dave Minter, Jeff Linwood

    Несмотря на то, что в названии книги стандарт JPA не упоминается, бóльшая часть книги посвящена именно его реализации в Hibernate.

  • Java Persistence with Hibernate. C. Bauer, G. King, G. Gregory

    Исчерпывающее описание Hibernate и Java Persistence.

  • High-Performance Java Persistence book. Vlad Mihalcea.

    Данная книга подробно рассказывает о работе с Hibernate ORM, а так же оптимизации кода для лучшей производительности. Данная книга была одобрена на официальном аккаунте Java, а так же автор книги является одним из разработчиков Hibernate. Также, автор книги активно отвечает на вопросы пользователей в https://stackoverflow.com

Swing

  • SWING: Эффективные пользовательские интерфейсы. Иван Портянкин.

  • Swing. A Beginner’s Guide. Sсhildt H.

    Русский перевод: Swing. Руководство для начинающих. Шилдт Г.

  • Swing Hacks. Tips and Tools for Killer GUIs. Joshua Marinacci, Chris Adamson.

JavaFX

  • JavaFX 2.0 Разработка RIA-приложений. Тимур Машнин.

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

  • Learn JavaFX 8. Kishori Sharan.

    Учебник на английском, в нем подробно описываются все основные элементы JavaFX, особенности их поведения и взаимодействия, описываются наблюдаемые свойства и связывания (properties and bindings), и другие полезные возможности, как вывод на печать и подробное описание обработки событий.

  • Руководство по JavaFX на metainit.com

Справочники

Java 8 Pocket Guide. Robert Liguori.

Русский перевод: Java 8. Карманный справочник. Роберт Лигуори.

Отличный справочник, с помощью которого можно моментально найти ответы на вопросы по стандартной библиотеке Java, лямбда-выражениям и т. д.

Как все устроено

Весь обучающий курс разбит на 4 блока – квеста: Java Syntax, Java Core, Java Multithreading и Java Collections. Каждый квест состоит из 10 уровней, а каждый уровень содержит 10-15 лекций и 20-30 практических задач.

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

Задачи можешь решать, как тебе удобно: можешь прямо в лекциях, а можешь сначала читать лекции, пока их понимаешь, а отдельно решать задачи. Как тебе больше нравится.

Переход на следующий уровень и к следующей лекции

Чтобы перейти к следующей лекции или уровню, нужно собрать достаточное количество «чёрной материи» и «заплатить» ею за переход. Выглядит это примерно так:

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

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

Практические задания

На JavaRush вас ждет целый ворох разнообразных заданий. Сейчас я перечислю основные из них.

Ввод кода по образцу — это самое простое практическое задание. Для его выполнения, нужно в нижней части окна ввести Java-код, идентичный образцу (он в верхней части окна).

Написать программу — это самые важные задания курса. Они могут быть очень разного уровня, от простейших задачек до таких, над которыми придется изрядно помозговать. Ты можешь начать решать любую задачу со статусом «Доступна». Чтобы приняться за неё, жми на кнопку «Открыть» на карточке с описанием.

Перед тобой откроется окошко WebIDE. На первой вкладке можно изучить условие, на второй — окно для ввода кода, а то, что ты видишь слева — это дерево проекта (об этом чуть позднее).

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

Если же ты хочешь просто запустить программу на выполнение без проверки — жми кнопку «Запуск».

Если ты случайно стер весь код, который был в программе изначально, то можешь вернуть его в стартовое состояние, нажав кнопку «Сброс».

Создать мини-проект — это самые интересные и сложные задания! Условия мини-проектов разбиты на несколько последовательных связанных между собой подзадач. В результате ты создашь небольшой, но собственный проект. Какую-нибудь игру, например. Но до первых мини-проектов тебе ещё работать и работать, аж до 20 уровня.

Айтишный релакс — это самые-самые сложные задания! Шучу. Чаще всего задание «релакса» заключается в просмотре интересного видео на айтишную тему. И да, за это тебе тоже дадут чёрную материю!

P.S.: Начиная с третьего уровня, ты сможешь решать задачки в среде разработки IntelliJ IDEA. Из лекции ты узнаешь, как это сделать. Но об этом чуть позже.

Статусы лекций и задач

У задач могут быть такие статусы: «Доступна» — можно решать!

«Решена» — ты решил задачу правильно, получил чёрную материю и с этого момента ещё не прошло три дня. Это значит, что ты можешь попробовать решить её еще раз, чтобы улучшить решение.

«Закрыта» — ты решил задачу правильно, получил чёрную материю и с этого момента прошло три дня. Повторно сдать на проверку такую задачу уже нельзя.

«Недоступна» — думаю название говорит само за себя. Чтобы задача стала доступной, надо открыть лекцию, которая ее содержит. А для этого надо открыть и все лекции до нее.

У лекций есть два статуса: «Открыта» и «Недоступна».

Последняя «открытая» лекция перед чередой «недоступных» — это та, на которой ты остановился. Если ты кликнешь по первой «неоткрытой» лекции, тебе предложат заплатить черную материю за ее открытие.

Преподаватель

Андрей Сумин

О преподавателе курса

Android Middle Developer

«Мой путь в программирование не был прямым и простым, и даже немного тернистым. Свою карьеру я начал сразу после школы в магазине электроинструментов, через 3 года стал начальником отдела, но понимал, что не хочу заниматься этим делом, а уйти куда-то я не мог, так как не имел никакой специальности. В школе мне очень нравилась информатика и меня посетили мысли об изучении программирования.

Поступил в Санкт-Петербургский государственный университет (СПб ГУТ им. Бонч-Бруевича). В нем преподавались очень поверхностные знания в данной области, плюс сильно устаревшие. И я начал изучать программирование самостоятельно, и заметил одну неприятную вещь — фактически весь современный и лучший материал был на английском языке, так что перед тем как стать специалистом в создании приложений для Андройд мне пришлось выучить новый «человеческий» язык.
Пройдя несколько десятков курсов оффлайн и онлайн, проштудировав десятки книг на эту тему я, наконец, смог реализоваться в новой профессии.

Весь процесс занял приличное количество времени – отсюда мое желание помочь таким же людям как я — собрать, обобщить весь материал, структурировать, дополнить теорию практическими упражнениями. Провести вас через весь путь от самого начала до создания ваших первых программ всего лишь за один курс, вместо пары лет. Шаг за шагом вы достигнете поставленной цели.

Желаю вам успеха в освоении новой профессии, и до встречи на страницах курса.»

Инсталлируем Java.

Для того, чтобы установить Java на компьютер,  запустите скаченный файл, после чего начнется процесс установки (рисю1.2).

Рис. 1.2

Нажмите Next.

Установка по умолчанию будет происходить в директорию C:\Program Files\Java\jdk1.x.x_xx (вместо иксов номер версии), при желании директорию можно изменить, нажав на кнопку Change (рис  1.3).

Рис 1.3.

Следуйте инструкциям мастера установки, и через несколько минут установка будет завершена.

По окончанию установки, программа предложит перейти к технической документации и руководствам по Java, для чего нужно будет нажать кнопку Next Steps. После этого в вашем браузере откроется страница с документацией Java http://docs.oracle.com/javase/ , которая является очень полезной для изучения.

Базовый синтаксис Java

При программировании нужно соблюдать следующие правила синтаксиса языка Java:

  • Имя файла всегда идентично имени класса
  • Символы чувствительны к регистру (даже в Windows);
  • Обработка всегда начинается в main
  • public static void main (String[] args);
  • Обычно процедуры называются «методами», а не «функциями»;
  • Вывод осуществляется с помощью System.out
  • out.println, System.out.print;
  • Компиляция с помощью «javac»
  • Откройте окно DOS;
  • Задайте полное имя файла с учетом регистра (с расширением файла);
  • Оформление с помощью «java»
  • Задайте имя базовому классу (без расширения файла).

Синтаксис Java на примере простой программы

Файл: HelloWorld.java

public class HelloWorld HelloWorld {
  public static void main (String [] args) {
    System.out.println («Hello, world.»);
  }
}

Компиляция

DOS> javac HelloWorld.java

Исполнение

DOS> java HelloWorld

Результат: Hello, world.

Подробное рассмотрение базового синтаксиса Java

Идентификатор: это имя элемента в коде. В синтаксисе языка Java идентификатор может содержать:

  • Любой символ Unicode, который является буквой (включая числовые буквы, такие как римские цифры) или цифрой;
  • Знак валюты (например, $);
  • Соединение с помощью символа пунктуации (например, _).

Переменные: это идентификаторы, связанные со значениями.

int count;      // Объявление неинициализированной переменной с именем  'count', тип переменной 'int'
count = 35;     // Инициализация переменной
int count = 35; // Объявление и инициализация переменной
int a, b;         // Объявление нескольких переменных одного типа
int a = 2, b = 3; // Объявление и инициализация нескольких переменных одного типа

Блоки кода: в синтаксисе Java начинающих разделители {и} обозначают блок кода и новую область.

void doSomething () {
    int a;
    {
        int b;
        a = 1;
    }
    a = 2;
    b = 3; // Недопустимо, потому что переменная b объявлена во внутренней области.
}

Public static void main (String args[]): обработка Java-программ начинается с метода main(), он является обязательной частью каждой программы.

Модификаторы. Используя их, можно изменять классы, методы и т. д. Существует два типа модификаторов:

Модификаторы доступа — default, public, protected, private.

Прочие модификаторы — final, abstract, strictfp.

Тема синтаксиса Java намного шире, чем мы раскрыли в этой статье.

Данная публикация представляет собой перевод статьи «Basic Java Syntax for Beginners – Tutorial Chat!» , подготовленной дружной командой проекта Интернет-технологии.ру

Виды классов в Java

  1. Вложенные внутренние классы – нестатические классы внутри внешнего класса.

  2. Вложенные статические классы – статические классы внутри внешнего класса.

  3. Локальные классы Java – классы внутри методов.

  4. Анонимные Java классы – классы, которые создаются на ходу.

Нестатические классы внутри внешнего класса

Особенности нестатических вложенных классов Java:

  1. Они существуют только у объектов, потому для их создания нужен объект. Другими словами: мы укомплектовали наше крыло так, чтобы оно было частью самолета, потому, чтобы создать крыло, нам нужен самолет, иначе оно нам не нужно.
  2. Внутри Java класса не может быть статических переменных. Если вам нужны какие-то константы или что-либо еще статическое, выносить их нужно во внешний класс. Это связано с тесной связью нестатического вложенного класса с внешним классом.
  3. У класса полный доступ ко всем приватным полям внешнего класса. Данная особенность работает в две стороны.
  4. Можно получить ссылку на экземпляр внешнего класса. Пример: Airplane.this – ссылка на самолет, this – ссылка на крыло.

Статические классы внутри внешнего класса

Плюсы такого подхода:

  1. Количество классов уменьшилось.
  2. Все классы внутри их класса-родителя. Мы способны прослеживать всю иерархию без открытия каждого класса отдельно.
  3. Мы можем обратиться к классу Building, а IDE уже будет подсказывать весь список всех подклассов данного класса. Это будет упрощать поиск нужных классов и показывать всю картину более цело.

Пример создания экземпляра вложенного статического класса:

Локальные классы

Но, свои особенности у них есть:

  1. Локальные классы способны работать только с final переменными метода. Все дело в том, что экземпляры локальных классов способны сохраняться в «куче» после завершения работы метода, а переменная может быть стёрта. Если же переменная объявлена final, то компилятор может сохранить копию переменной для дальнейшего использования объектом. И еще: с 8+ версий Java можно использовать не final переменные в локальных классах, но только при условии, что они не будут изменяться.
  2. Локальные классы нельзя объявлять с модификаторами доступа.
  3. Локальные классы обладают доступом к переменным метода.

Анонимные классы

Использование анонимных классов оправдано во многих случаях, в частности когда:

тело класса является очень коротким;
нужен только один экземпляр класса;
класс используется в месте его создания или сразу после него;
имя класса не важно и не облегчает понимание кода.

Например для создания кнопки и реакции на её нажатие:

Аналог с лямбдами:

Конец статьи«внимание к деталям»

Функции языка программирования Java

Java — межплатформенный язык

Код Java, написанный на одной платформе (то есть операционной системе), можно запустить без изменений на других платформах.

Для запуска Java используется виртуальная машина Java (Java Virtual Machine, JVM). JVM обрабатывает байтовый код, после чего процессор обрабатывает код, полученный от JVM. Все виртуальные машины работают аналогично, поэтому один и тот же код работает одинаково во всех операционных системах, что и делает Java межплатформенным языком программирования.

Объектно-ориентированный язык программирования

Существуют различные стили программирования, и один из самых популярных — объектно-ориентированное программирование. При таком подходе сложная проблема разбивается на более мелкие путём создания объектов. Благодаря чему код можно использовать повторно.

Объектно-ориентированные функции есть во многих языках программирования, включая Java, Python и C++. Если вы серьёзно настроены освоить программирование, объектно-ориентированный подход стоит включить в план своего обучения.

Java работает быстро

Ранние версии языка программирования Java часто критиковали за медленную работу. Но сегодня ситуация кардинально поменялась. Новые версии JVM работают значительно быстрее, а интерпретирующие их процессоры становятся всё шустрее.

Сегодня Java — один из самых быстрых языков программирования. Хорошо оптимизированный Java-код работает почти так же быстро как низкоуровневые языки программирования, такие как C/C++ и намного быстрее, чем Python, PHP и т.д.

Java — безопасная платформа

Java представляет собой:

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

Обширная базовая библиотека

Одна из причин широкого распространения Java — огромная стандартная библиотека. В ней можно найти сотни классов и методов из различных пакетов, облегчающих жизнь разработчикам. К примеру,

java.lang – это продвинутые функции для строк, массивов и т.д.

java.util – библиотека для работы со структурами данных, регулярными выражениями, датой и временем и т.д.

kava.io — библиотека для ввода/вывода файлов, обработки исключений и т.д.

Для начинающих

  • Отличная статья, в которой описано, как стоит подходить к изучению Java. После прочтения стоит заглянуть и в другие разделы сайта Skipy.ru, это уже будет полезно не только начинающим.
  • Study-Java — сайт, полностью состоящий из туториалов по Java, которые подскажут вам, в каком направлении стоит идти и какие навыки нужно вырабатывать в первую очередь.
  • Курс по основам языка Java.
  • Обширное руководство по многим темам с примерами кода.
  • Базовый курс по Java на ресурсе Stepik.
  • Более 350 вопросов с ответами для подготовки к интервью на позицию Junior Java Developer.
  • Наша подборка материалов для изучения языка Java.
  • Подборка полезных советов от Наньянского технологического университета — там есть аналогичные материалы и по другим темам.

Форумы, на которых вы можете задать возникшие вопросы:

  • JavaTalks;
  • VPF:Java;
  • Раздел Java на SQL.ru;
  • Раздел Java на CyberForum
  • Группа ru-java в ЖЖ;
  • И, конечно же, обсуждение в нашей группе. Не забывайте про него.

Средний уровень:

Thinking in Java (4th Edition). Bruce Eckel.

Русский перевод: Философия Java. Брюс Эккель.

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

Java 8: The Complete Reference. Herbert Schildt.

Русский перевод: Java 8. Полное руководство. Герберт Шилдт.

Effective Java (2nd Edition). Joshua Bloch.

Русский перевод: Java. Эффективное программирование. Джошуа Блох.

Джошуа Блох в некотором смысле продолжает идею книги Thinking in Java: еще сильнее углубляясь в особенности языка и стандартных библиотек, учит писать красивый код.

The Well-Grounded Java Developer: Vital techniques of Java 7 and polyglot programming. Benjamin J Evans, Martijn Verburg.

Русский перевод: Java. Новое поколение разработки. Бенджамин Эванс, Мартин Вербург.

Java Puzzlers: Traps, Pitfalls, and Corner Cases. Joshua Bloch, Neal Gafter.

Java Puzzlers дает возможность тем, кто уже «выучил язык» проверить себя. В книге собраны 95 задачек с подвохом: очевидные на первый взгляд фрагменты кода, таящие каверзный баг. Какие-то из рассматриваемых примеров могут показаться надуманными и нежизненными, однако они в полной мере раскрывают тонкие нюансы программирования на Java.

Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea.

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

Немаловажно, что один из соавторов (Doug Lea) является автором стандартной библиотеки concurrent-примитивов (). Java Performance

Charlie Hunt, Binu John.

Must read по оптимизации java Программ, тюнингу JVM и сборщика мусора, бенчмаркингу и профилированию.

Core Java for the Impatient. Cay Horstmann.

Книга для нетерпеливых, как следует из названия. Позволяет погрузиться в мир языка Java, рассказывается всё, что на самом деле может пригодиться Java-разработчику
Отдельное внимание уделено новшествам восьмой версии языка. В конце каждой главы есть задания для более плотного усвоения материала
(Хорстманн не очень любит язык , иногда шутит по этому поводу, вроде того: , от этого читать становится не так скучно).

Java SE 8 for the Really Impatient. Cay Horstmann.

Русский перевод: Java SE 8. Вводный курс Кей С. Хорстманна

Является продолжением книги Core Java for the Impatient, однако здесь всё внимание уделяется новшествам восьмой версии языка, покрывает очень многие аспекты, будь то лямбда-выражения, работа со или многопоточность. После каждой главы также присутствуют задания для усвоения материала.

Head First Design Patterns.Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra.

Русский перевод: Паттерны проектирования. Эрик Фримен, Элизабет Фримен

Отличная книга от издательства O’Reilly, в веселой форме обучит вас основным шаблонам проектирования на языке Java.

Java 8 Lambdas. Richard Warburton.

Русский перевод: Лямбда-выражения в Java 8. Ричард Уорбэртон

Обычно в учебниках по Java мало внимания уделяют или не уделяют вовсе теме использования лямбд и стримов. Учебник Уорбэртона восполняет этот недостаток.

Урок J-13. Арифметические операторы и математика в Java.

6 сентября 2014 Мария (admin)

В уроке 8 мы затронули логические операторы, они нам были необходимы для формирования логического выражения в условиях if. Этот урок будет посвящен математике в Java, и поэтому мы рассмотрим подробнее и  частично .

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

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

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

Примечание: при операции деления, если оба аргумента являются целыми числами, то в результате получим целое число. Дробная часть, если такая имеется, отбросится. Если хотим получить число с дробной частью, то нужно, чтобы один из аргументов был типа double. Это можно указать в самом выражении при помощи добавления после числа .0 или .d. Пример:

В Java также имеется специальный оператор %, обозначающий остаток от делния.

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

Операции с присваиванием

Рассмотрим задачу вывода на экран 10 первых четных чисел чисел

строку

мы можем записать сокращенно

+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше

Пример использования: Найти факториал числа 7.

Инкрементирование и декрементирование

Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.

Инкремент  и декремент бывают двух форм

Префиксная форма:

Постфиксная форма

Различие префиксной и постфиксной формы проявляется только  тогда, когда эти операции присутствуют в выражениях. Если форма префиксная, то сначала произойдет увеличение (или уменьшение) переменной на единицу, а потом с новым значением будет произведены дальнейшие вычисления. Если форма постфиксная, то расчет выражения будет происходить со старым значением переменной, а переменная увеличится (или уменьшится) на единицу после вычисления выражения. Пример

В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.

Если вы поняли принцип работы постфиксного и префиксного инкремента/декремента, то предлагаю решить в уме такую задачу:

Вопрос: чему в итоге равны x и y? После того, как вы сделали предположение, проверьте его в java.

Задача со зведочкой.  Дан код:

Какие числа будут выведены на экран? Почему? Разобраться самостоятельно.

Примечание: инкремент и декремент применяются только к переменной.  Выражение вида 7++  считается недопустимым.

Математические функции и константы (класс Math)

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

Часто используемые математические функции

  • sqrt(a) — извлекает квадратный корень из числа а.
  • pow(a, n) —  a возводится в степень n.
  • sin(a), cos(a), tan(a) — тригонометрические функции sin, cos и tg угла a указанного в радианах.
  •  asin(n), acos(n), atan(n) — обратные тригонометрические функции, возвращают угол в радианах.
  • exp(a) — возвращает значение экспоненты, возведенной в степень a.
  • log(a) — возвращает значение натурального логарифма числа a.
  • log10(a) — возвращает значение десятичного логарифма числа a.
  • abs(a) — возвращает модуль числа a.
  • round(a) — округляет вещественное число до ближайшего целого.

Константы

  • PI — число «пи», с точностью в 15 десятичных знаков.
  • E — число «e»(основание экспоненциальной функции), с точностью в 15 десятичных знаков.

Примеры

Упражнения 

  1. Дан массив целых чисел, найти среди элементов массива числа, которые делятся на 3 и на 6
  2. Посчитать среднее арифметическое чисел в массиве
  3. Известны катеты прямоугольного треугольника, найти его площадь и периметр
  4. Даны два целых числа, найти их наибольший общий делитель и наименьшее общее кратное
  5. Даны радиус вращения и высота конуса, вычислить объем конуса.

Категория: Уроки Java

Welcome and Project Overview: Visualizing Data

Welcome to the first week of our course. In this week, we’ll get started by introducing ourselves and the Google engineers who will be making appearances throughout the course. We’ll also give you of the unique video series we provide and help you understand how to navigate the course to get the most out of it given your background and learning speed. Finally, we’ll jump right into objects and designing classes. This might be a bit of review for some of you who might have learned this in your first programming course. If that’s the case, feel free to jump ahead to the Practice Quiz at the end of the week. Let’s get started!

Hours to complete
3 hours to complete

Reading
13 videos (Total 47 min), 8 readings, 3 quizzes

See All

Неувядающая классика

Effective Java, Джошуа Блох

Достоинства

  • Блестящее изложение материала по теме ООП.
  • Приведены лучшие практики программирования.
  • Автор очень хорошо знает Java изнутри.

Недостатки

Пока что отсутствует перевод самого нового издания книги (третьего).

Философия Java, Брюс Эккель

Достоинства

  • Глубокое изложение принципов Java от профессионала;
  • Хорошо зайдет тем, кто переходит с других языков — много сравнений с С++, например.
  • Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля — чуть позднее.

Недостатки

  • Очень неудачные русские переводы;
  • Отсутствие нового издания книги на русском.

Краткие выводы

  1. Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает — Head First Java;
  2. Лучший справочник-учебник по Java и настольная книга — «Библиотека профессионала». И, конечно, документация Oracle.
  3. Лучший сборник задач по программированию на Java — JavaRush. Ну а среди книг — «Java. Методы программирования».
  4. Лучшая неувядающая классика — «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
  5. Дополнительный вывод: есть возможность — читайте на английском. Русские переводы в основном очень слабые.

Java books for beginners

Что еще почитать:

Программистом может стать каждый: нужен только правильный подход к обучению. И мы его нашли 🙂

О проекте

Привет! Рады видеть вас на JavaRush — онлайн-курсе по изучению Java-программирования с нуля. Вам наверняка интересно, кто мы и чем можем быть вам полезны. Что же, с удовольствием об этом расскажем 🙂

Идея проекта возникла летом 2012 года. Все началось с публикации этого поста о личном опыте переучивания на Java-девелоперов людей из разных сфер. У некоторых учеников был технический опыт, некоторые учились с чистого листа.

На занятия уходило примерно 3 месяца. Из них большая часть уроков состояла из практики написания кода. Все ученики успешно находили любимую работу в Java-программировании, независимо от стартового уровня.

Когда желающих стало слишком много для частного преподавания, появилсь мысль: а что если сделать курс, который поможет научиться программировать на Java так же эффективно, как и с ментором, но при этом — в онлайн-формате? Чтобы обучению можно было посвящать столько времени, сколько нужно, и заниматься по удобному для себя графику.

Так появился JavaRush.

Наша цель — ваше трудоустройство

Чтобы наработать навык программирования и сформировать «правильное» мышление, понадобится около 500-1000 часов практики. Курс JavaRush разработан так, чтобы вы получили необходимое количество опыта.

Курс обучения — это инструмент для достижения главной цели — работы Java-разработчиком. Он поможет вам:

  1. Освоить основы Java и почувствовать себя уверенно в программировании, даже если вы в этой сфере новичок.
  2. Оставаться мотивированным до конца обучения, ведь иногда так сложно заниматься систематически и не остановиться на полпути.
  3. Учиться интересно, если вы уже поняли, что объемные книги и длинные видеокурсы не сделают из вас программиста.

JavaRush — это не только обучающий курс, но и крупнейшее Java-сообщество

Сегодня на JavaRush зарегистрировано более 1.25 миллиона пользователей из 106 стран.

В нашей группе Вконтакте — 450 тысяч подписчиков, на Facebook — более 40 тысяч.

Здесь вы найдете единомышленников:

  • Форум для любых обсуждений об обучении и карьере
  • Чат для живого общения с другими пользователями
  • Группы по интересам для чтения и постинга статей о программировании, поиске работы, специализации, личном опыте
Ссылка на основную публикацию