Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
// Передача методу m() значения типа int.
// Метод m() принимает параметр типа Integer,
// поэтому значение int автоматически упаковывается,
m(199);
// Здесь объект ЮЬ получает значение типа int, возвращаемое
// методом т2(). Это значение автоматически упаковывается,
// чтобы его можно было присвоить объекту iOb.
Integer iOb = m2();
System.out.println("Return value from m2() is " + iOb);
// А здесь метод m3() возвращает значение типа Integer, которое
// автоматически распаковывается и преобразуется в тип int.
int i = m3();
System.out.println("Return value from m3() is " + i);
// Здесь методу Math.sqrt() в качестве параметра передается
// объект iOb, который автоматически распаковывается, а его
// значение продвигается к типу double, требующемуся для
// выполнения данного метода.
iOb = 100;
System.out.println("Square root of iOb is " + Math.sqrt(iOb));
}
}
Результат выполнения данной программы выглядит так:
m() received 199
Return value from m2() is 10
Return value from m3() is 99
Square root of iOb is 10.0
В объявлении метода m () указывается, что ему должен передаваться параметр типа
Integer. В методе main () целочисленное значение 199 передается методу m () в качестве параметра. В итоге происходит автоупаковка этого целочисленного значения. Далее в программе вызывается метод m2 (), возвращающий целочисленное значения 10. Это значение присваивается переменной ссылки на объект iOb в методе main (). А поскольку объект iOb относится к типу Integer, то целочисленное значение, возвращаемое методом m2 (), автоматически упаковывается. Затем в методе main () вызывается метод m3 (). Он возвращает объект типа Integer, который посредством автораспаковки преобразуется в тип int. И наконец, в методе main () вызывается метод Math. sqrt (), которому в качестве аргумента передается объект iOb. В данном случае происходит автораспаковка данного объекта, а его значение продвигается к типу double, поскольку параметр именно этого типа должен быть передан методу Math. sqrt ().
Автоупаковка и автораспаковка в выражениях
Автоупаковка и автораспаковка выполняются всякий раз, когда объект необходимо преобразовать в простой тип, а простой тип — в объект. Так, автораспаковка производится при вычислении выражений, и если требуется, то результат вычисления упаковывается. Рассмотрим в качестве примера приведенную ниже программу.
// Автоупаковка и автораспаковка в выражениях.
class AutoBox3 {
public static void main(String args[]) {
Integer iOb, i0b2;
int i;
iOb = 99;
System.out.println("Original value of iOb: " + iOb);
// В следующем выражении объект iOb автоматически
// распаковывается, производятся вычисления, а результат
// снова упаковывается в объект iOb.
++iOb;
System.out.println("After ++iOb: и + iOb);
// В последующем выражении производится автораспаковка
// объекта iOb, к полученному значению прибавляется число 10,
// а результат снова упаковывается в объект iOb.
iOb += 10;
System.out .println ("After iOb +=? 10: " + iOb) ;
//И в следующем выражении объект iOb автоматически
// распаковывается, выполняются вычисления, а результат
// снова упаковывается в объект iOb.
iOb2 = iOb + (iOb / 3);
System.out.println("iOb2 after expression: " + iOb2);
// А в этом случае вычисляется то же самое выражение,
// но повторная упаковка не производится,
i = iOb + (iOb / 3);
System.out.println("i after expression: " + i);
}
}
Выполнение этой программы дает следующий результат:
Original value of iOb: 99
After ++iOb: 100
After iOb += 10: 110