java / java-intro_part_1_ibm-developerworks
.pdf
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
|||
|
Помощь |
Ленты |
Конфиденциальность |
Портал для студентов |
|
Запрос на использование |
Сообщить о нарушениях |
Доступность (Английский) |
Бизнес-партнеры IBM |
|
материалов developerWorks |
Условия использования |
|
|
|
|
|
|
|
|
|
|
|
|
www.ibm.com/developerworks/ru/edu/j-introtojava1/section9.html |
3/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
|
||
IBM |
|
|
|
|
|
Русский |
|
Войти (или Регистрация) |
|
Техническиематериалы ПробноеПО Сообщество
Введение в Java-программирование: Часть 1. Основы языка
Java
Объектно-ориентированное программирование на платформе Java
Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.
Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.
Дата: 26.10.2011
Уровеньсложности: простой
Активность: 381344 просмотров


Средний показатель рейтинга (основанный на 274 голосов)
Строки и операторы
До сих пор в руководствефигурировали несколько переменных типа String, но без особых объяснений. В этом разделе подробнееговорится о строках, а такжео том, когда и как использовать операторы.
Строки
Работа со строками на языкеCи –трудоемкий процесс, потому что нужно манипулировать массивами 8-битных символов. На языкеJava строки –это первоклассныеобъекты типа String, для управления которыми есть специальныеметоды. (В отношении строк Java ближевсего коднапоминает Cи простым типом данных char, который может содержать один знак Юникод, такой как a.)
Вы ужевидели, как создать экземпляр объекта Stringи установить его значение(в листинге5), но есть и несколько других способов. Вот пара способов создания экземпляра объекта Stringсо значением hello:
String greeting = "hello";
greeting = new String("hello");
Так как строки–первоклассныеобъекты языка Java, для создания их экземпляров можно использовать оператор new. Задание значения переменной типа Stringприводит к тому жерезультату, потому что язык Java создает объект Stringдля хранения литерала, а затем присваивает этот объект экземпляру переменной.
Объединение строк
С классом Stringможетеделать много вещей, и у него множество полезных методов. Дажеещенеиспользуя методы, мы ужесделали кое-что интересноес двумя строками, объединив, или скомбинировав их:
l.info("Name: " + p.getName());
На языкеJava знак плюс (+) означает конкатенацию строк. (Использованиетакой конкатенации внутри цикла приводит к некоторому снижению производительности, но сейчас вам ненужно об этом беспокоиться.)
Пример объединениястрок
www.ibm.com/developerworks/ru/edu/j-introtojava1/section10.html |
1/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
Попробуем объединить строки внутри класса Person. На данный момент у нас есть переменная экземпляра name, но неплохо бы иметь firstNameи lastName. Впоследствии их можно объединять, когда другой объект запрашивает полноеимя Person.
Первое, что нужно сделать, это добавить новыеэкземпляры переменных (в том жеместеисходного кода, гдесейчас определено name):
//частное имя String; private String firstName; private String lastName;
Nameнам большенепонадобится; мы заменили его на firstNameи lastName.
Последовательные вызовы методов
Теперь можно создать геттеры и сеттеры для firstNameи lastName(как на рисунке6), удалить методsetName()и изменить
методgetName():
public String getName() {
return firstName.concat(" ").concat(lastName);
}
Этот кодиллюстрирует цепочку вызовов методов. Эта техника широко используется с неизменяемыми объектами, такими как String, когда изменениеобъекта приводит только к изменению возвращаемого значения (но неоригинала). В этом случаедействиепроизводится надвозвращенным, измененным значением.
Операторы
Как и следовало ожидать, язык Java позволяет выполнять арифметическиедействия, и вы ужевидели, как присвоить значения переменным. Теперь мы кратко рассмотрим некоторыеоператоры языка Java, которыепонадобятся для повышения вашей квалификации. В языкеJava используются операторы двух типов:
унарные, которым требуется только один операнд;
и бинарные, которым необходимы два операнда.
Арифметическиеоператоры языка Java перечислены в таблице2.
Таблица2. Арифметические операторы языкаJava ОператорПример использованияОписание
+ |
a + b |
Сложениеаи b |
+ |
+a |
Преобразованиеaв переменную типа int, если это переменная типа byte, shortили char |
- |
a – b |
Вычитаниеbиз а |
- |
-a |
Арифметическая инверсия а |
* |
a * b |
Умножениеана b |
/ |
a / b |
Делениеaна b |
% |
a % b |
Вычислениеостатка от деления ана b(оператор взятия модуля) |
++ |
a++ |
Приращениеана 1 с предварительным вычислением значения а |
++ |
++a |
Приращениеана 1 с последующим вычислением значения а |
-- |
a-- |
Уменьшениеана 1 с предварительным вычислением значения а |
-- |
--a |
Уменьшениеана 1 с последующим вычислением значения а |
+= |
a += b |
Краткая форма записи a = a + b |
-= |
a -= b |
Краткая форма записи a = a – b |
*= |
a *= b |
Краткая форма записи a = a * b |
%= |
a %= b |
Краткая форма записи a = a % b |
Дополнительные операторы
В дополнениек операторам, перечисленным в таблице2, вы видели некоторыедругиесимволы, которыеназываются операторами в языкеJava. Например:
точка (.) указывает на имена пакетов и вызывает методы;
круглыескобки (() отделяют список параметров, разделенных запятыми, от имени метода;
newсоздает экземпляр объекта (если за ним следует имя конструктора).
www.ibm.com/developerworks/ru/edu/j-introtojava1/section10.html |
2/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
В синтаксис языка Java входит такжерядоператоров, которыеиспользуются специально для условного программирования; то есть для программ, которыепо-разному реагируют на различныевходныеданные. Мы рассмотрим их в следующем разделе.
10 из 18 | предыдущая | следующая
Печатьстраницы |
Сделать этустраницуобщей |
|
|
|
Помощь |
|
Ленты |
Конфиденциальность |
Портал для студентов |
Запрос на использование |
Сообщить о нарушениях |
Доступность (Английский) |
Бизнес-партнеры IBM |
|
материалов developerWorks |
Условия использования |
|
|
|
|
|
|
|
|
|
|
|
|
|
www.ibm.com/developerworks/ru/edu/j-introtojava1/section10.html |
3/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
|
||
IBM |
|
|
|
|
|
Русский |
|
Войти (или Регистрация) |
|
Техническиематериалы ПробноеПО Сообщество
Введение в Java-программирование: Часть 1. Основы языка
Java
Объектно-ориентированное программирование на платформе Java
Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.
Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.
Дата: 26.10.2011
Уровеньсложности: простой
Активность: 381344 просмотров


Средний показатель рейтинга (основанный на 274 голосов)
Условныеоператоры и операторы управления
В этом разделемы рассмотрим операторы, которыеуказывают Java-программе, как действовать при различных значениях входных данных.
Реляционныеи условныеоператоры
Язык Java содержит операторы, которыепозволяют программепринимать решения. Чащевсего в этом случаеприменяются логические выражения (то есть выражения, котороепринимает значение"истинно" (true) или "ложно" (false)). В таких выражениях используются реляционные операторы, которыесравнивают один операндили выражениес другим, и
условные операторы.
В таблице3 приведены реляционныеи условныеоператоры языка Java.
Таблица3. Реляционные иусловные операторы
Оператор |
Пример использования |
Возвращает значение "истинно",если... |
> |
a > b |
абольшеb |
>= |
a >= b |
абольшеили равно b |
< |
a < b |
аменьшеb |
<= |
a <= b |
аменьшеили равно b |
== |
a == b |
аравно b |
!= |
a != b |
анеравно b |
&& |
a && b |
аи bистинны, bоценивается условно (если аложно, bневычисляется) |
|| |
a || b |
аили bистинно, bоценивается условно (если аистинно, bневычисляется) |
! |
!a |
аложно |
& |
a & b |
аи bистинны, bоценивается в любом случае |
| |
a | b |
аили bистинно, bоценивается в любом случае |
^ |
a ^ b |
аи bразличны |
|
|
|
Оператор if
Теперь, когда мы знаем несколько операторов, пришло время их использовать. Следующий кодпоказывает, что происходит при добавлении определенной логики к методу доступа getHeight()объекта Person:
public int getHeight() { int ret = height;
// Если локаль машины, на которой выполняется этот код, – США,
www.ibm.com/developerworks/ru/edu/j-introtojava1/section11.html |
1/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
if (Locale.getDefault().equals(Locale.US)) ret /= 2.54;// convert from cm to inches
return ret;
}
Если текущая локаль –СоединенныеШтаты (гденеиспользуется метрическая система), то имеет смысл преобразовать внутреннеезначениероста (в сантиметрах) в дюймы. Этот пример иллюстрирует использованиеоператора if, который оценивает логическоевыражениев скобках. Если это выражениеистинно, выполняется следующий оператор.
В данном случаенужно выполнить один оператор, определяющий, что локальмашины, на которой выполняется код, это Locale.US. Если необходимо выполнить болееодного оператора, можно использовать фигурныескобки для формирования составного оператора. Составной оператор группирует несколько операторов в один –и составныеоператоры могут также содержать другиесоставныеоператоры.
Область видимости переменной
Любая переменная в Java-программеимеет область видимости, или локализованноепространство имен, в котором к ней можно обращаться по имени. За пределами этого пространства переменная вне видимости, и попытка обращения к ней приведет к ошибкекомпиляции. Уровни области видимости в языкеJava определяются тем, гдеобъявлена переменная, как показано в листинге8.
Листинг 8. Областьвидимостипеременной
public class SomeClass {
private String someClassVariable;
public void someMethod(String someParameter) { String someLocalVariable = "Hello";
if (true) {
String someOtherLocalVariable = "Howdy";
}
someClassVariable = someParameter; // правильно someLocalVariable = someClassVariable; // тоже правильно
someOtherLocalVariable = someLocalVariable;// Переменная вне области видимости!
}
public void someOtherMethod() {
someLocalVariable = "Hello there";// Эта переменная вне области видимости!
}
}
Внутри класса SomeClassпеременная someClassVariableдоступна для всех методов экземпляра (то есть нестатических методов). Внутри метода SomeMethodпараметр someParameterвидим, но за пределами этого метода –нет, и то же справедливо для someLocalVariable. Внутри блока ifобъявлена переменная someOtherLocalVariable, а за его пределами она вневидимости.
Область видимости подчиняется многим правилам, но наиболееважныеиллюстрируются в листинге8. Потратьтенесколько минут, чтобы усвоить их.
Оператор else
Бывает, что нужно принять меры, только если конкретноевыражениеоказывается ложным. Для этого очень удобен оператор
else:
public int getHeight() { int ret;
if (gender.equals("MALE")) ret = height + 2;
else {
ret = height;
Logger.getLogger("Person").info("Being honest about height...");
}
return ret;
}
Оператор elseработает так же, как if–выполняет только следующий оператор, к которому он применяется. В данном случаедва оператора объединены в составной оператор (обратитевниманиена фигурныескобки), которыепрограмма затем выполнит.
www.ibm.com/developerworks/ru/edu/j-introtojava1/section11.html |
2/3 |
02.09.13 Введениев Java-программирование: Часть 1. Основы языкаJava
Оператор elseможно использовать и для выполнения дополнительной проверки if, вот так:
if (conditional) {
//Блок 1
}else if (conditional2) {
//Блок 2
}else if (conditional3) {
//Блок 3
}else {
//Блок 4
}// Конец
Если выражениеconditionalверно, выполняется Блок 1, и программа переходит к инструкции, следующей после закрывающей фигурной скобки (на что указывает комментарий // Конец). Если выражениеconditionalне верно, то оценивается выражениеconditional2. Если оно верно, выполняется Блок 2, и программа переходит к инструкции, следующей послезакрывающей фигурной скобки. Если conditional2неверно, то программа переходит к conditional3и так далее. Блок 4будет выполнен, только если всетри условных оператора несработали.
Троичный оператор
В языкеJava есть удобный оператор для выполнения простой проверки операторов if/else. Его синтаксис:
(conditional) ? statementIfTrue : statementIfFalse;
Если выражениеconditionalверно, выполняется statementIfTrue, в противном случаевыполняется statementIfFalse. Составныеоператоры недопускаются.
Тройной оператор очень удобен, когда необходимо выполнить один оператор, если выражениеистинно, и другой, если оно ложно. Тройныеоператоры чащевсего используются для инициализации переменной (такой как и возвращаемоезначение), вот так:
public int getHeight() {
return (gender.equals("MALE")) ? (height + 2) : height;
}
Скобки послевопросительного знака нестрого обязательны, но они делают кодболеечитабельным.
11 из 18 | предыдущая | следующая
Печатьстраницы |
Сделать этустраницуобщей |
|
|
|
Помощь |
|
Ленты |
Конфиденциальность |
Портал для студентов |
Запрос на использование |
Сообщить о нарушениях |
Доступность (Английский) |
Бизнес-партнеры IBM |
|
материалов developerWorks |
Условия использования |
|
|
|
|
|
|
|
|
|
|
|
|
|
www.ibm.com/developerworks/ru/edu/j-introtojava1/section11.html |
3/3 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
|
||
IBM |
|
|
|
|
|
Русский |
|
Войти (или Регистрация) |
|
Техническиематериалы ПробноеПО Сообщество
Введение в Java-программирование: Часть 1. Основы языка
Java
Объектно-ориентированное программирование на платформе Java
Дж. Стивен Перри, главный консультант, Makoto Consulting Group, Inc.
Описание: В этом руководствеиз двух частей рассказывается о структуре, синтаксисеи парадигмепрограммирования языка и платформы Java™. Читатели познакомятся с синтаксисом Java, с которым им, скореевсего, придется иметь дело в своей профессиональной деятельности, и выражениями Java-программирования, которыеможно использовать для построения надежных, удобных в сопровождении Java-приложений. В первой части Дж. Стивен Перри рассказывает об основах объектноориентированного программирования на платформеJava, включая основополагающий синтаксис Java и способы его использования. Для начала вы научитесь создавать Java-объекты и наделять их поведением, а в концеэтой части познакомитесь с коллекциями Java –и в промежуткевас тоже, конечно, ждект много интересного.
Дата: 26.10.2011
Уровеньсложности: простой
Активность: 381344 просмотров
Средний показатель рейтинга (основанный на 274 голосов)
Циклы
В дополнениек возможности применять условия для своих программ и получать разныерезультаты при разных сценариях если/тоиногда нужно, чтобы кодпросто повторял одно и то жеснова и снова, пока работа небудет выполнена. В этом разделерассматриваются двеконструкции, используемыедля итерации кода, или его многократного выполнения: циклы for и циклы while.
Что такоецикл?
Цикл –это программная конструкция, которая выполняется многократно, пока справедливо некотороеусловие(или набор условий). Например, можно заставить программу читать всезаписи до конца файла или перебирать всеэлементы массива, обрабатывая каждый из них. (О массивах говорится в разделеКоллекции Java настоящего руководства.)
Циклы for
Основной конструкцией цикла в языкеJava является оператор for, который позволяет перебирать диапазон значений, определяя, сколько раз нужно выполнить цикл. Абстрактный синтаксис цикла forтаков:
for (initialization; loopWhileTrue; executeAtBottomOfEachLoop) { statementsToExecute
}
В началецикла выполняется оператор инициализации (несколько операторов инициализации могут следовать через запятую). Цикл выполняется до тех пор, пока истинно выражениеloopWhileTrue(условноевыражениеJava, котороедолжно быть истинным или ложным). В концецикла выполняется выражениеexecuteAtBottomOfEachLoop.
Пример циклаfor
Если нужно изменить методmain()так, чтобы он выполнялся три раза, можно использовать цикл for, как показано в листинге9.
Листинг 9. Цикл for
public static void main(String[] args) {
Logger l = Logger.getLogger(Person.class.getName()); for (int aa = 0; aa < 3; aa++) {
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE");
www.ibm.com/developerworks/ru/edu/j-introtojava1/section12.html |
1/4 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
l.info("Loop executing iteration# " + aa); l.info("Name: " + p.getName()); l.info("Age:" + p.getAge()); l.info("Height (cm):" + p.getHeight()); l.info("Weight (kg):" + p.getWeight()); l.info("Eye Color:" + p.getEyeColor()); l.info("Gender:" + p.getGender());
}
}
В началелистинга локальной переменной ааприсваивается нулевоезначение. Этот оператор выполняется только один раз при инициализации цикла. Затем цикл повторяется три раза, и каждый раз ааувеличивается на единицу.
Как вы увидитепозже, имеется альтернативный синтаксис цикла forдля повторения конструкций, которыереализуют итерабельныйинтерфейс (такой как массивы и другиеслужебныеклассы Java). Пока просто обратитевниманиена использованиесинтаксиса цикла forв листинге9.
Циклы while
Синтаксис цикла whileтаков:
while (loopWhileTrue) { statementsToExecute
}
Как вы уже, наверное, догадались, цикл будет выполняться до тех пор, пока выражение loopWhileTrueистинно. Условие оценивается в началекаждой итерации (то есть до выполнения каких-либо операторов). Если оно выполнено, цикл продолжается. Так что неисключено, что цикл whileневыполнится ни разу, если его условноевыражениеневерно с самого начала.
Взглянитеещераз на цикл forв листинге9. Для сравнения, в листинге10 та жезадача решается с помощью цикла while.
Листинг 10. Цикл while
public static void main(String[] args) {
Logger l = Logger.getLogger(Person.class.getName()); int aa = 0;
while (aa < 3) {
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE"); l.info("Loop executing iteration# " + aa);
l.info("Name: " + p.getName()); l.info("Age:" + p.getAge()); l.info("Height (cm):" + p.getHeight()); l.info("Weight (kg):" + p.getWeight()); l.info("Eye Color:" + p.getEyeColor()); l.info("Gender:" + p.getGender()); aa++;
}
Как видите, цикл whileтребует немного большеработы, чем цикл for. Нужно инициализировать переменную ааи незабыть наращивать еев концецикла.
Циклы do...while
Когда нужен цикл, который обязательно выполняется один раз, а затем проверяет условноевыражение, попробуйте использовать цикл do...while, как показано в листинге11.
Листинг 11. Цикл do...while
int aa = 0; do {
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE"); l.info("Loop executing iteration# " + aa);
l.info("Name: " + p.getName()); l.info("Age:" + p.getAge()); l.info("Height (cm):" + p.getHeight()); l.info("Weight (kg):" + p.getWeight()); l.info("Eye Color:" + p.getEyeColor()); l.info("Gender:" + p.getGender());
www.ibm.com/developerworks/ru/edu/j-introtojava1/section12.html |
2/4 |
02.09.13 |
Введениев Java-программирование: Часть 1. Основы языкаJava |
aa++;
} while (aa < 3);
Условноевыражение(aa < 3) непроверяется до конца цикла.
Ветвлениецикла
Бывают моменты, когда нужно выйти из цикла до того, как условноевыражениеокажется ложным. Например, если вы ищите конкретноезначениев строковоммассиве, и когда оно найдено, другиеэлементы массива становятся ненужны. Для тех случаев, когда нужно просто выйти, язык Java предоставляет оператор break, как показано в листинге12.
Листинг 12. Оператор break
public static void main(String[] args) {
Logger l = Logger.getLogger(Person.class.getName()); int aa = 0;
while (aa < 3) { if (aa == 1)
break;
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE"); l.info("Loop executing iteration# " + aa);
l.info("Name: " + p.getName()); l.info("Age:" + p.getAge()); l.info("Height (cm):" + p.getHeight()); l.info("Weight (kg):" + p.getWeight()); l.info("Eye Color:" + p.getEyeColor()); l.info("Gender:" + p.getGender()); aa++;
}
Оператор breakведет к следующему исполняемому оператору, расположенному внецикла, в котором он находится.
Продолжениецикла
В примере(упрощенном), приведенном в листинге12, нужно выполнить цикл один раз и выйти. Можно такжепропустить одну итерацию, продолжив выполнениецикла. Для этого необходим оператор continue, показанный в листинге13.
Листинг 13. Оператор continue
public static void main(String[] args) {
Logger l = Logger.getLogger(Person.class.getName()); int aa = 0;
while (aa < 3) { if (aa == 1)
continue; else
aa++;
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE"); l.info("Loop executing iteration# " + aa);
l.info("Name: " + p.getName()); l.info("Age:" + p.getAge()); l.info("Height (cm):" + p.getHeight()); l.info("Weight (kg):" + p.getWeight()); l.info("Eye Color:" + p.getEyeColor()); l.info("Gender:" + p.getGender());
}
В листинге13 пропускается вторая итерация цикла, и он продолжается с третьей. Оператор continueочень удобен, когда в процессеобработки записей какую-то из записей нужно пропустить. Просто пропускаем эту запись и переходим к следующей.
12 из 18 | предыдущая | следующая
Печатьстраницы |
Сделать этустраницуобщей |
|
|
|
Помощь |
|
Ленты |
Конфиденциальность |
Портал для студентов |
Запрос на использование |
Сообщить о нарушениях |
Доступность (Английский) |
Бизнес-партнеры IBM |
|
материалов developerWorks |
Условия использования |
|
|
|
|
|
|
|
|
www.ibm.com/developerworks/ru/edu/j-introtojava1/section12.html |
3/4 |
