В этой серии руководств вы познакомитесь с Java, языком программирования, используемым для разработки приложений для Android. Наша цель — подготовить тех, кто уже знаком с одним языком программирования, таким как PHP или Objective-C, чтобы освоиться с языком программирования Java и погрузиться в разработку приложений для Android. В этом конкретном руководстве вы познакомитесь с основами синтаксиса Java, в том числе с тем, как создавать комментарии, определять переменные, создавать условные операторы и выполнять итерации с помощью циклов. Если вы новичок в Java или просто хотите освежить в деталях, то эта серия учебников для вас!
Начиная
Что касается предварительных условий, мы не собираемся делать много предположений о вашем опыте программирования. Мы предполагаем, что вы понимаете, как программировать (возможно, на PHP, Visual Basic или C ++), но вы не знакомы со спецификой программирования на языке Java. Мы не будем вдаваться в подробности того, почему вы хотите сделать цикл for вместо цикла while, но мы покажем вам в Java синтаксис обоих типов циклов. Сказал иначе, мы не собираемся учить вас программировать; мы предоставим вам наглядные примеры часто используемых конструкций и принципов языка Java, а также приведем некоторые советы и рекомендации для Android.
Что вам нужно
Технически, вам не нужны никакие инструменты для завершения этого урока, но вам, безусловно, они понадобятся для разработки приложений для Android.
Для разработки приложений Android (или любых других приложений Java) вам необходима среда разработки для написания и создания приложений. Eclipse — это очень популярная среда разработки (IDE) для Java и предпочтительная IDE для разработки под Android. Он свободно доступен для операционных систем Windows, Mac и Linux.
Полные инструкции по установке Eclipse (включая поддерживаемые версии) и Android SDK см. На веб-сайте разработчиков Android .
Теперь давайте рассмотрим более полезный синтаксис Java.
Комментарии
Большинство языков программирования допускают комментарии, и Java ничем не отличается. Вы можете инкапсулировать любое количество строк текста, начиная свой комментарий с / * и заканчивая свой комментарий * /. Например:
/ * MULTILINE КОММЕНТАРИЙ * /
Вы также можете предоставить комментарии после кода одного, используя //. Например:
int x = 7; // Первая переменная с именем x равна семи int y = 8; // Вторая переменная с именем y равна восьми int result = x + y; // Значение переменной результата должно равняться 15
Java также имеет стандартный тип комментариев, называемый Javadoc, который можно использовать не только для комментирования кода, но и для простого создания документации кода. Эта тема довольно большая сама по себе, но вот пример того, как выглядят комментарии Javadoc:
/ ** Этот метод делает что-то интересное * * @param someValue обработано и возвращено * Параметр @param изменяет тип выполняемой обработки на someValue * @return Результат обработки someValue * / public int sampleMethod (int someValue, логическая опция) { // ... }
переменные
Переменная — это просто часть данных. Переменные Java обычно делятся на две категории:
- Примитивные типы данных, такие как int, float, double, char и т. Д.
- Объекты Java (как определено определением класса)
Переменные используются для разных целей. Иногда переменные используются для хранения значений, которые могут изменяться или изменяться с течением времени. Например, переменная с именем counter может иногда увеличиваться. Другие переменные, особенно переменные класса, которые остаются одинаковыми для всех экземпляров данного класса, должны быть определены с использованием ключевого слова static. В других случаях переменные могут представлять константы — эти переменные должны использовать ключевое слово final, чтобы показать, что они не изменяются со временем.
Переменная действительна только в пределах своей территории или области действия . Область действия переменной часто контролируется фигурными скобками {}. Когда переменная определена, она действует в этих скобках. Если вы попытаетесь получить доступ к переменной вне фигурных скобок, она будет неопределенной. Переменные-члены класса в объектно-ориентированных языках часто называют атрибутами . Их также можно назвать полями или свойствами.
Как и другие распространенные языки программирования, у вас есть оператор присваивания, знак равенства:
int i = 5;
У вас также есть арифметические операторы, такие как +, -, *, /. Не забудьте использовать круглые скобки, чтобы принудительно упорядочить порядок операций:
int result = (a + b) / c;
Наконец, у вас есть типичные унарные операторы, которые позволяют вам изменять одну переменную с помощью простого оператора:
iPositive ++; // увеличиваем на единицу; эквивалентно iPositive = iPositive + 1; iPositive -; // уменьшаем на единицу; эквивалентно iPositive = iPositive - 1;
Обратите внимание, что операторы инкремента (++) и декремента (-) могут быть префиксными или постфиксными, что означает, что приращение может быть выполнено до или после определения каких-либо условий, если элемент используется в цикле. Как правило, нам нравится придерживаться постфиксных операторов, чтобы код был более читабельным.
Примитивные типы данных
Давайте посмотрим на некоторые из примитивных типов данных, доступных в языке программирования Java:
- байт
- Переменная байта представляет собой 8-разрядное целое число со знаком от -128 до 127. Часто используется для массивов.
- короткая
- Короткая переменная представляет собой 16-разрядное целое число со знаком от -32 768 до 32 767. Опять же, часто используется для массивов.
- ИНТ
- Переменная int представляет собой 32-разрядное целое число со знаком от -2 147 483 648 до 2 147 483 647. Это наиболее часто используемая переменная «число».
- длинная
- Длинная переменная представляет собой 64-разрядное целое число со знаком от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. Используется, когда тип данных int недостаточно велик.
- поплавок
- Переменная с плавающей запятой — это 32-разрядное число с плавающей запятой одинарной точности.
- двойной
- Двойная переменная — это 64-битное число с плавающей запятой двойной точности. Используйте этот тип данных для десятичных значений.
- логический
- Булева переменная имеет только два возможных значения: true и false. Используйте этот тип данных для условных операторов.
- голец
- Переменная char — это один 16-битный символ Unicode.
Переменные примитивных типов можно определить, указав тип данных, затем имя переменной, затем знак равенства и начальное значение. Все операторы Java заканчиваются точкой с запятой. Например, следующий оператор Java определяет переменную с именем iVal с начальным значением 1:
int iVal = 1;
Как и во многих других языках, вы можете определить нулевой массив определенного типа данных. Например, следующее определяет массив из трех целочисленных значений (первые четыре степени по 2):
int [] aiPowersOfTwo; aiPowersOfTwo = new int [4]; aiPowersOfTwo [0] = 1; // 2 ^ 0 = 1 aiPowersOfTwo [1] = 2; // 2 ^ 1 = 2 aiPowersOfTwo [2] = 4; // 2 ^ 2 = 4 aiPowersOfTwo [3] = 8; // 2 ^ 3 = 8
Обычно используемые объекты Java
Библиотеки Java предоставляют ряд полезных объектов для использования с общими структурами данных. Все объекты являются производными от класса Object. Есть классные аналоги для всех примитивных типов данных. Например, класс Integer инкапсулирует значение int и предоставляет ряд полезных методов для манипулирования значениями целочисленных данных. Например, следующий Java-код создает целочисленную переменную с именем iVal, затем создает объект Integer, используя конструктор, который принимает целое число, а затем использует метод handle, доступный в классе Integer, для извлечения эквивалента переменной с плавающей точкой.
int iVal = 1; Integer inte1 = новый Integer (iVal); float f = inte1.floatValue ();
Возможно, самый распространенный объект, который вы будете использовать в приложениях для Android, это String. Класс String используется для инкапсуляции читаемых человеком текстовых символов, которые часто отображаются на экране. Если вы модифицируете или строите строки из небольших частей, вам также нужно проверить классы StringBuffer и StringBuilder.
String strHello = new String ("Hello World");
Список распространенных типов данных Java приведен в справочнике Android по документации для пакета java.lang . Вы также можете найти общие объекты ввода / вывода в пакете java.io.
Для более сложных структур данных, таких как списки, очереди, стеки, даты и время, соответствующие классы находятся в пакете java.util .
Наконец, приложения Android полагаются на ряд полезных классов, которые определяют часто используемые компоненты приложения, такие как Activity, Application, Dialog и Service. Эти классы можно найти в пакете android.app .
Разрешения класса и доступ
Вы можете управлять видимостью класса, а также его переменных и методов, указав уровень доступа элемента. Уровни доступа: публичный, защищенный и частный. Вообще говоря, если вы хотите, чтобы что-то было доступно извне класса, используйте public. Если метод или переменная должны быть доступны только из самого класса, используйте private. Используйте защищенный, когда класс или любой из его подклассов нуждаются в доступе.
Например, следующее определение класса SillySensor определяет несколько переменных и методов с разными уровнями доступа:
- Переменная класса под названием sensorData, которая видна только внутри класса
- Открытый конструктор, который можно вызывать вне класса
- Закрытый метод calibrate (), который можно вызывать только из самого класса
- Защищенный метод seedCalibration (), который можно вызывать из самого класса или из подкласса
- Открытый метод getSensorData (), который можно вызывать из любого места, предоставляя доступ «только для чтения» к переменной sensorData
открытый класс SillySensor { приватный int sensorData; public SillySensor () { sensorData = 0; } частная калибровка пустоты (int iSeed) { // Выполните калибровку здесь } Калибровка защищенных пустых семян (int iSeed) { калибрирует (iSeed); } public int getSensorData () { // Проверьте датчик здесь возвращение sensorData; } }
Conditionals
Java включает в себя условные операторы, которые можно использовать для выполнения фрагментов кода, если и только если выполняются определенные условия. Как правило, условное утверждение включает две стороны. Если обе стороны эквивалентны, утверждение верно, иначе оно ложно.
Java имеет все типичные условные операторы, такие как:
- == равно, как в (a == b)
- ! = не равно, как в (x! = y)
- > больше, чем в (z> y)
- > = больше или равно, как в (q> = z)
- < меньше чем, как в (б <а)
- <= меньше или равно, как в (a <= z)
И когда вам нужно объединить несколько условных операторов в один больший условный тест, вы можете использовать AND (&&) и OR (||):
- ((a == b) && (a == c)) // истина, только если A равно B и равно C
- ((a == b) || (a == c)) // истина, только если A равно B или равно C
В Java также есть побитовые операторы (&, |, ^), сдвиги (>>, <<) и дополнения (~), если они вам понадобятся. Смотрите документацию Java для более подробной информации.
Теперь, когда вы знаете, как создать условный оператор, вы можете создавать условные сегменты кода. Простейшей формой условного кода является оператор if ():
логическое условие = true; если (условие == верно) { // Выполнить этот код, только если переменная условия равна true }
Если вы хотите предоставить альтернативный код для запуска, если условие не выполняется, используйте предложение else с оператором if ():
логическое условие = true; если (условие == верно) { // Выполнить этот код, только если значение переменной условия равно true } еще { // Выполнить этот код, только если значение переменной условия равно false }
Если вы хотите обработать более двух случаев, вы можете использовать каскадные операторы if-else-if-else, например:
if (iVar == 0) { // переменная равна нулю } else if (iVar> 0) { // переменная является положительным числом } еще { // переменная - отрицательное число }
Переключить регистр
Если у вас есть несколько возможных путей кода, которые ветвятся из одного значения переменной, вы можете использовать оператор switch (). С помощью оператора switch вы предоставляете переменную для проверки и предоставляете множество опций для выполнения в определенных случаях. Вы также можете указать опцию по умолчанию для выполнения, если не применяются другие случаи. Каждый случай может быть завершен с помощью оператора break. Если оператор break не указан, код продолжит выполнение до следующего оператора case.
char singleChar = 'z'; switch (singleChar) { дело «а»: дело 'е': дело 'я': case 'o': case 'u': // singleChar является гласным! Выполните этот код! перемена; дефолт: // singleChar - согласная! Выполните этот код вместо этого! перемена; }
Loops
Если вы хотите выполнить код повторно или использовать рекурсию (хе, посмотрите этот, если вы не знаете, о чем мы говорим), Java поддерживает несколько различных типов циклов.
Для непрерывного цикла при условии, что оператор является истинным, используйте цикл while ():
int numItemsToProcess = 3; while (numItemsToProcess> 0) { // обрабатываем элемент numItemsToProcess--; }
Если вы хотите вычислить выражение условного цикла ПОСЛЕ первой итерации, вы можете использовать цикл do-while:
делать { // проверяем элементы для обработки, обновляем numItemsToProcess по мере необходимости // обработать элемент, обновил numItemsToProcess } while (numItemsToProcess> 0);
Наконец, если вы хотите выполнить цикл для определенного числа итераций, вы можете использовать цикл for (). Цикл for () имеет три параметра: начальное значение, конечное значение и возрастающее значение. Например, чтобы выполнить цикл 100 раз, печатая числа от 1 до 100, вы можете использовать следующий цикл for ():
для (int i = 1; i <= 100; i ++) { // распечатать }
Примечание: Вы также можете использовать оператор break, чтобы выйти из цикла while (), do-while () или for (), когда это необходимо. Вы также можете использовать оператор continue, чтобы пропустить оставшуюся часть текущей итерации цикла и перейти к следующей итерации (конечно, переоценке условного выражения).
Передача по значению против ссылки
В Java нет указателей. Хорошо, хорошо, иди вздохни с облегчением. Жизнь достаточно сложна без указателей, которые все портят, верно?
Хорошо, теперь пришло время снова обратить внимание. В Java параметры метода передаются по значению. Однако, когда параметром метода является объект (то есть что угодно, кроме примитивного типа), в метод передается только ссылка на этот объект [очень похоже на указатели, извините!]. Поэтому, чтобы изменить объект, переданный в данный метод, вы обычно передаете ссылку на объект, а затем воздействуете на нее, которая изменяет базовые данные объекта, который вы передали. Однако вы не можете поменять сам объект … Вот быстрый пример:
Здесь у нас есть класс с именем Cat:
публичный класс Cat { private String mCatName; Cat (String name) { mCatName = имя; } public String getName () { return mCatName; }; public void setName (String strName) { mCatName = strName; }; }
Теперь давайте попробуем использовать этот класс и передать объект Cat в некоторые функции и посмотрим, что произойдет:
void messWithCat (кошачья кошечка) { котенок = новый кот ("Хан"); } void changeKitty (Кошачья кошечка) { kitty.setName ( "Вуки"); } Cat haveKitten () { Кот котенок = новый кот ("Люк"); возврат котенка; }
Наконец, давайте вызовем эти методы и посмотрим, как они действуют на экземпляры объектов Cat:
Cat cat1 = новый Cat ("Джабба"); Cat cat2 = новый Cat («Лея»); cat1.getName (); // Возвращает Джаббу cat2.getName (); // Возвращает Лейю messWithCat (cat1); changeKitty (cat2); Cat cat3 = haveKitten (); cat1.getName (); // Возвращает Jabba - Обратите внимание, что объект остается неизменным! cat2.getName (); // Возвращает Вуки cat3.getName (); // Возвращает Люка
Завершение
Вы только что завершили ускоренный курс языка программирования Java. Хотя вы, возможно, и не готовы написать свое первое Java-приложение, вы должны иметь возможность работать с простейшими классами Java-приложений Android-приложений и определять, что они делают, по крайней мере, с точки зрения синтаксиса Java. Первый класс, который вы захотите изучить для разработки под Android, это класс Activity. Приложение Android использует действия для определения различных задач времени выполнения, и поэтому вы должны определить действие, которое будет действовать как точка входа в ваше приложение. Теперь, когда вы получили представление о синтаксисе Java, мы настоятельно рекомендуем вам пройти курс обучения для начинающих по Android.
Вы только поцарапали поверхность разработки Java для разработки под Android. Ознакомьтесь с другими великолепными учебными пособиями по Mobiletuts +, чтобы глубже погрузиться в разработку Java и Android. Мы настоятельно рекомендуем следующие начальные учебники по Android : Введение в разработку Android от Gyuri Grell и Beginning Android: Начало работы с Fortune Crunch, чтобы начать увлекаться разработкой Android. Удачи!
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .
Нужна дополнительная помощь в написании приложений для Android? Проверьте наши последние книги и ресурсы!
Связанные учебники:
- Изучите Java для разработки под Android: Введение в Java
- Введение в разработку Android SDK
- Начало работы с Android: начало работы с FortuneCrunch
- Общие конфигурации виртуальных устройств Android
- Запуск карт в приложении
- Предоставление пользователям возможности отправлять электронную почту в приложении
- Использование оповещений, тостов и уведомлений
- Создание простых пользовательских форм