Переменные в Java
Невозможно представить программу в Java без переменных. О том, какие они бывают, как объявляются и где применяются, поговорим в этой статье.
Java является объектно-ориентированным языком, которому свойственна абстракция, однако для прикладных задач всегда приходится оперировать известными параметрами. В программировании они называются переменными. Чем java переменная отличается от объекта?
Всё просто – переменная является ячейкой в памяти, где хранится её значение. Любое действие – прямая работа с этим участком памяти. Объект же является более комплексной величиной. Он занимает определённый диапазон памяти, взаимодействие осуществляется через некую передаточную функцию (методы), выраженную в параметрах объекта.
В данной статье мы поговорим именно о переменных, здесь это совсем не тривиальное понятие.
Объявляются переменные java так:
Здесь же при объявлении можно присвоить значение.
тип_данных имя_переменной = значение_переменной;
Также можно объявить одновременно несколько переменных, просто перечисляя их через запятую.
тип_данных имя_переменной1, имя_переменной2…;
Классификация по принадлежности
Выделяется четыре типа java переменных:
- переменные экземпляра (instance variables);
- переменные класса (class variables);
- локальные переменные (local variables);
- параметры (parameters).
Пусть у нас есть несколько объектов одного класса Automobile(). Помимо общих параметров у них есть уникальные, скажем, максимальная скорость maxSpeed(). Их можно инициировать в теле программы, а можно хранить в нестатических полях класса (объявленных без добавления слова static). Таким образом, каждый экземпляр будет обладать индивидуальным параметром, не зависящим от скоростей других объектов.
public class Automobile< public String name; private double maxSpeed; public Automobile (String autoName)< name = autoName; >>
Переменная класса, или статическая переменная java, напротив, объявляется исключительно с применением слова static. В данном случае её значение будет одинаковым для всех экземпляров. В случае того же автомобиля, введём параметр gearsNum – число передач. Для всех экземпляров оно будет равно 6.
Необязательный модификатор final позволяет присвоить значение переменной только один раз. За соблюдением этого следит компилятор.
public class Automobile< public String model; private double maxSpeed; public static final int gearsNum = 6; >
Локальные переменные и методы в java неизменно связаны. В последних часто фигурируют вспомогательные параметры, которые в дальнейшем коде не нужны. Для объявления локальной переменной нет особой формы инициализации, границы её действия зависят лишь от места объявления. В данном случае — в фигурных скобках внутри метода. При выходе из него переменная будет уничтожена, поэтому обратиться к ней будет уже нельзя.
Крайний случай локальных переменных — это параметры. В частности, классический пример «Hello, World!»:
class HelloWorld < public static void main(String[] args) < System.out.println("Hello World!"); > >
Здесь сразу два параметра. Первая — собственно, «Hello, World!», вторая — аргумент строки args в main.
Классификация по видимости
На основании описанного выше, можно проследить ещё одно деление – по видимости переменных. Существует 4 группы:
- Public. Данный модификатор переменных доступен всем классам и объектам программы. Объявляется при помощи ключевого слова public в начале строки.
- Protected. Области видимости java переменных в этом случае ограничены текущим пакетом и подклассами. Объявляется аналогично — ключевым словом protected.
- Package protected. Модификатор переменных, доступных только внутри пакета. Объявления не требуется, отсутствие ключевых слов указывает на package protected.
- Private. Переменные, доступные исключительно внутри класса. В данном случае, определить тип переменной можно по ключевому слову private.
Несмотря на то, что приватные элементы доступны внутри класса, вопрос: «как обращаться к private java переменным?» всё же имеет ответ. Для того, чтобы иметь возможность извне поменять значение приватного параметра, достаточно внутри того же класса создать публичный метод. Например так:
class Drive< private int gears; public void setGears(int val) < gears = val; > >
Таким образом, в случае необходимости вы легко сможете изменить значение private переменной.
Указатели — ещё один вариант глобальных переменных. Вспомните, для создания экземпляра объекта мы используем следующую запись:
класс_объекта имя_указателя = new класс_объекта;
Такие переменные называются ссылочными переменными.
С переменными нельзя проводить те же операции что и с объектом? Чем объект отличается от переменной?
«Все является объектом. Представляйте себе объект как усовершенствованную переменную; он хранит данные, но вы можете «обращаться с запросами» к объекту, требуя у него выполнить операции над собой. Теоретически абсолютно любой компонент решаемой задачи (собака, здание, услуга и т. п.) может быть представлен в виде объекта. «
А разве с переменными нельзя проводить такие же операции? Чем объект отличается от переменной?
Переменная — только данные. Объект обычно включает в себя, кроме собственно данных, и функции обработки данных.
На примере: переменная — мешок с зерном. Объект — самосвал с зерном, его не нужно таскать с места на место, ему можно дать команды куда-то переехать и сгрузить зерно.
В этом тексте вообще хрень какая-то написана. Переменная это просто именованная область памяти где храниться может что угодно (определенного класса или типа, если яп со статической типизацией). Операции производятся не с переменными как таковыми, а с объектами или данными на которые ардесуются эти переменные.
Тут видимо автор хотел объяснить различия между объектами-классами и типами данных. В некоторых яп есть фиксированные простейшие типы данных — числа, строки, символы, и т. п. операции с ними и между ними описаны на уровне стандартных функций и часто не могут быть переопределены. Вместо этого современных языках программирования уходят от концепции выделенных типов данных в место них используют одну единую сущность — объекты-классы, где все операции класса определены в его контексте. Эта парадигма называется «Всё — объект».
Тем же, чем завод отличается от банки с кофе.
. у объекта есть «переменныЕ», и МЕТОДЫ работы с этими переменныМИ, а также КОНСТРУКТОРЫ этих объектов и ДЕ. система их банкротства.
. а переменная, она только либо есть, либо её нет . или не рыба не мясо (
В чем разница объекта и переменной в java ?
В чем разница объекта и переменной в java? только не кидайте ссылок на какие-то статьи в них воды 90 %, коротко и ясно если можно, буду очень благодарен.
Максим Искусственный Интеллект (184719) new Human() — создание объекта. Human h; — объявление переменной. Human h = new Human(); — объявление переменной, создание объекта, помещение ссылки на объект в переменную.
Java — это простой объектно-ориентированный язык программирования. В Java всё является объектом. Объекты создаются на базе встроенных или определяемых пользователем классов.
Переменная — это основной элемент хранения информации в Java- программе. Переменная характеризуется комбинацией идентификатора, типа и области действия. В зависимости от того, где объявлена переменная, она может быть локальной, например, для кода внутри метода, либо это может быть переменная экземпляра класса, доступная всем методам данного класса.
> В Java всё является объектом.
нет, в Яве есть простые типы данных (например int), однако они автоматически превращаются в объекты, когда это нужно (boxing/unboxing).
Ali Ученик (125) Возможно это из раздела для профи, здесь же просили: «коротко и ясно если можно». Можно ли подробней про (boxing/unboxing)? Заранее спасибо.
Основное отличие — у объекта есть свои переменные (инкапсулированные),
а у переменной нет своего объекта.
Голова Робота Просветленный (36284) Вообще мимо. «у переменной нет своего объекта» А как же переменные объектного типа?
Объекты предоставляют контекст (в рамках контекста легко усвоить замыкания и генераторы) и интерфейсы с правами доступа, мутабельность и прочее. Переменные — это то, что принадлежит контексту и интерфейсу. Соответственно здесь отношение принадлежности/владения. Переменные обязаны принадлежать объектам, объекты (инстансы, сущности, экземпляры) предоставляют интерфейс для доступа к переменным. Де-факто любая переменная обязана принадлежать к объекту класса Application или к объектам, которые запрашивает экземпляр при доступе к любым ресурсам системы.