Объявление переменных
В языке Java при объявлении переменной - указании ее типа и имени - одновременно можно выполнить ее инициализацию.
Для переменной могут быть указаны следующие модификаторы доступа:
- public или protected, или private, - определяющие область видимости переменной;
- static - указывает, что переменная является переменной класса, а не переменной экземпляра класса;
- final - запрещает присвоение значений переменной вне тела класса, в котором она объявлена;
- transient - указывает, что переменная не является частью постоянного состояния объекта;
- volatile - определяет возможность асинхронного изменения переменной.
Переменная, не имеющая модификатора static, называется переменной экземпляра. Переменная экземпляра создается для каждого нового экземпляра класса.
Переменная, имеющая модификатор static, называется переменной класса. Для всех экземпляров класса существует только одна переменная класса. Эта переменная доступна и до создания экземпляра класса.
Переменная, имеющая модификатор final, должна быть инициализирована внутри тела класса, так как вне тела класса final-переменная является константой и ее изменение или инициализация запрещены.
Модификатор transient нельзя использовать совместно с модификаторами final или static.
Любая переменная может иметь модификатор доступа public (общедоступный), protected (защищенный) или private (скрытый).
Для этих модификаторов определены следующие правила доступа:
- public указывает, что данная переменная будет доступна везде, где доступен класс, в котором она объявлена;
- protected указывает, что данная переменная будет доступна как внутри пакета, содержащего объявление класса, в котором она определена, так и внутри любого подкласса данного класса;
- private указывает, что данная переменная не будет доступна нигде кроме тела класса, в котором она объявлена.
По умолчанию переменная считается доступной везде внутри пакета, содержащего класс, в котором она объявлена, и не недоступна ни в каком другом подклассе указанного класса в том случае, если подкласс содержится в другом пакете.
Инициализация переменной означает присвоение этой переменной некоторого значения. В качестве значения инициализации могут выступать:
- выражение;
- массив, указываемый в фигурных скобках.
Если переменная объявлена с модификатором static, то инициализация выполнятся сразу при загрузке класса.
Если объявляемая переменная является переменной экземпляра, то инициализация выполняется при выполнении метода-конструктора класса.
Если объявляемая переменная является локальной переменной, то ее инициализация происходит при выполнении оператора объявления этой переменной.
Например:
int i1,i2; float f1 = 3.0; float dArray1 [] = new float [14]; java.lang.String str1 = "no?iea"; Object oObj = str1 ; Exception e = new Exception ( ) ;