Статьи

Изучите Java для Android-разработки: Java Shorthand

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

Вы найдете эти маленькие лакомые кусочки кода, которые мы называем Java-сокращением, используемые в примере кода Android SDK, и почти во всех книгах по разработке Android, опубликованных в это время, не говоря уже об онлайн-учебниках и форумах разработчиков. Ни один из этих советов не относится к Android; это просто методы Java, которые постоянно путают новичков в Java и Android, основываясь на электронных письмах, которые мы получаем от наших читателей.

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

Другими словами,

1
2
3
int counter = 1;
counter++;
counter—;

Этот код эквивалентен:

1
2
3
int counter = 1;
counter = counter + 1;
counter = counter – 1;

Эти унарные операторы могут появляться до (префикс) или после (постфикс) переменной. Расположение оператора определяет, будет ли выполняться операция увеличения / уменьшения до или после вычисления остальной части выражения. Например, следующий код показывает, как работают унарные операторы, манипулируя переменной, называемой counter, с помощью регистрации в Android :

1
2
3
4
5
6
7
int counter = 0;
Log.i(DEBUG_TAG, «The counter value is =»+counter++);
Log.i(DEBUG_TAG, «The counter value is =»+counter);
Log.i(DEBUG_TAG, «The counter value is =»+counter—);
Log.i(DEBUG_TAG, «The counter value is =»+counter);
Log.i(DEBUG_TAG, «The counter value is =»+(++counter));
Log.i(DEBUG_TAG, «The counter value is =»+—counter);

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

Вместо этого Java-разработчики часто просто используют оператор, который будет оцениваться как само «получающееся» значение. Это часто встречается, когда дело доходит до операторов return, но вы также увидите это и в других местах. Например, следующий подробный метод использует переменную «temp» с именем sum для хранения суммы двух целых чисел, а затем возвращает это значение:

1
2
3
4
5
int sumVerbose(int a, int b)
{
    int temp = a + b;
    return temp;
}

Многие Java-разработчики просто пропускают накладные расходы и хлопоты, связанные с созданием временной переменной, и просто оценивают оператор как часть оператора return, например так:

1
2
3
4
int sum(int a, int b)
{
    return (a+b);
}

Этот стиль сохраняется для случаев, когда временная переменная используется только один раз. Если метод включает дополнительные операции с этим значением, обычно целесообразно использовать переменную с четким именем для удобства чтения кода. Кроме того, вы часто будете видеть более «многословный» стиль кодирования в коде, который имеет много функций отладки.

Вы будете часто видеть методы Java, соединенные вместе. Часто эти методы вызываются в экземпляре текущего класса (таким образом, ключевое слово this ). Подобно подсказке, обсужденной выше, возвращаемые значения каждого метода используются только для доступа к базовому методу. Следовательно, возвращаемое значение не сохраняется в значении контейнера, а просто вызывается базовый метод. Например:

1
InputStream is = getResources().openRawResource(R.drawable.icon);

Этот код логически эквивалентен следующему:

1
2
Resources myAppResources = this.getResources();
InputStream is = myAppResources.openRawResource(R.drawable.icon);

Одно условное утверждение, которое вы, вероятно, увидите, будет использовать поддержку троичных операторов Java. Это сокращенный способ разработки простого оператора If-Else с использованием условного оператора (который может заключаться или не заключаться в круглые скобки), за которым следует знак вопроса (?), А затем оператор, который должен выполняться, если условное условие истинно, тогда двоеточие (:) и другое утверждение, которое должно произойти, если условие ложно.

Вот пример использования троичного оператора:

1
2
3
int lowNum = 1;
int highNum = 99;
int largerNum = lowNum < highNum ?

Это логический эквивалент следующего, гораздо более длинного фрагмента кода:

1
2
3
4
5
6
7
int largerNum;
if(lowNum < highNum)
{
    largerNum = highNum;
} else {
    largerNum = lowNum;
}

Этот вид Java-сокращения действительно подходит только тогда, когда ваш оператор If-Else прост. Иногда вы увидите, как разработчики вбивают много логики в одно из этих утверждений; мы не рекомендуем это. Используйте троичные операторы только тогда, когда они делают ваш код более легким для чтения, а не более сложным.

В Java вы можете иметь пустые операторы, просто завершив пустую строку кода точкой с запятой. Этот прием часто используется для указания условий цикла for () для создания бесконечного цикла, например:

1
2
3
for (;;) {
    //Do something over, and over, and over again.
}

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

Может быть неприятно, когда разработчики, впервые знакомые с Java, сталкиваются со странным синтаксисом кода в первый день работы с Android — синтаксис, который обычно не рассматривается в типичном учебном пособии «Всё в Java за 20 минут». Теперь вы знаете, как выглядят некоторые из этих «стенографических» трюков, и что они значат. Независимо от того, используете ли вы их сами или нет, решать вам, но, по крайней мере, они не будут вас смущать, когда вы увидите их в примере кода! Удачи и не стесняйтесь поделиться некоторыми из ваших любимых сокращенных кодов Java, которые вы также встретили в разделе комментариев!

Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .