Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Простейший пример объявления final-переменной:
final double pi=3.1415;
Примитивные и ссылочные типы данных
Теперь на примере переменных можно проиллюстрировать различие Ёежду примитивными и ссылочными типами данных. Рассмотрим при-|ер, когда объявляются две переменные одного типа, приравниваются руг другу, а затем значение одной их них изменяется. Что произойдет со ■торой переменной?
Возьмем простой тип int:
int а=5; // объявляем первую переменную и инициализируем ее int b=a; // объявляем вторую переменную и приравниваем ее к первой а=3; // меняем значение первой print(b); // проверяем значение второй
Здесь и далее мы считаем, что функция print(...) позволяет нам некоторым (неважно, каким именно) способом узнать значение ее аргумента (как правило, для этого используют функцию из стандартной библиотеки %stem.out.println(...), которая выводит значение на системную консоль).
В результате мы увидим, что значение переменной b не изменилось, Оно осталось равным 5. Это означает, что переменные простого типа хранят непосредственно свои значения и при приравнивании двух переменных происходит копирование данного значения. Чтобы еще раз подчеркнуть эту особенность, приведем еще один пример:
byte b=3; int a=b;
В данном примере происходит преобразование типов (оно подробно рассматривается в соответствующей лекции). Для нас сейчас важно констатировать, что переменная b хранит значение 3 типа byte, а переменная а - значение 3 типа int. Это два разных значения, и во второй строке при присваивании произошло копирование.
Теперь рассмотрим ссылочный тип данных. Переменные таких типов всегда хранят ссылки на некоторые объекты. Рассмотрим для примера класс, описывающий точку на координатной плоскости с целочисленными координатами. Описание класса — это отдельная тема, но в нашем простейшем случае оно тривиально:
class Point { intx, у;
}
Теперь составим пример, аналогичный приведенному выше для int-переменных, считая, что выражение new Point(3,5) создает новый объект-точку с координатами (3,5).
Point р1 = new Point(3,5);
Point р2=р1;
р1.х=7;
print(p2.x);
В третьей строке мы изменили горизонтальную координату точки, на которую ссылалась переменная р1, и теперь нас интересует, как это сказалось на точке, на которую ссылается переменная р2