В чем разница между статической и динамической переменными в java / oops? - PullRequest
0 голосов
/ 04 февраля 2010

пожалуйста, кто-нибудь подскажет мне разницу между "статической переменной" и "нормальной переменной" в oops или в java.Также их использование, если это возможно.

Ответы [ 8 ]

3 голосов
/ 26 мая 2017

Рассмотрим класс, имеющий статические и динамические переменные.

  • Динамические переменные: при создании экземпляра класса каждый объект имеет свою собственную копию динамических переменных. Значения этих переменных будут разными для каждого объекта, независимо от того, какое значение ему присвоено в этом объекте.
  • Статическая переменная: это переменные уровня класса. Значение этих переменных будет общим для всех объектов класса. Когда один из объектов изменит свое значение, это будет последнее значение, доступное для других объектов. Это означает, что это общие переменные.
3 голосов
/ 04 февраля 2010

Статической переменной обычно является та, которая связана с типом. Сравните это с переменной экземпляра, которая связана с конкретным экземпляром типа, или локальной переменной, которая связана с одним конкретным вызовом метода.

Я не знаю ни одного стандартного определения «динамической переменной» - где вы встретили эту терминологию?

2 голосов
/ 04 февраля 2010

Статическими переменными являются те, которые находятся на уровне класса или типа. И будет доступна только одна его копия для всех экземпляров этого класса.

И, как я знаю, понятия динамических переменных не существует. Если вы сталкивались с этой концепцией в каком-то конкретном контексте, то упомяните об этом, может быть полезно объяснить вам.

РЕДАКТИРОВАНИЕ : чтобы ответить на ваш вопрос о разнице между «static int» и «int».

Скажем, у вас есть класс

           public class StaticInfo{

            private static int count;
            private int variable;
            //.. say setter and getters for variable
            //.. static setter and getters for count;
          }

Таким образом, если вы создадите 2 объекта типа StaticInfo, у этих двух будет два разных «переменных» члена, но один общий элемент count, который является членом класса.

надеюсь, теперь понятно.

1 голос
/ 26 мая 2017

В Java статическая переменная создается с помощью ключевого слова static перед типом переменной.

   static int count

Если вы используете концепцию статической переменной, тогда статическая переменная не создается для объекта, вместо этого она создала только одну копию для класса. Вот пример кода в Java

    class Company{

        static String companyName;
        String branch;
    }

    class Car{
            static String carName;
            String model; 
        }
        public class Server{
            public static void main(String ar[]){
                Company company1 = new Company();
                Company company2 = new Company();
                Company company3 = new Company();
                Car car1 = new Car();
                Car car2 = new Car();
                Car car3 = new Car();
            }
        }

В вышеуказанной программе классы «Компания» и «Автомобиль» имеют 3-3 объекта, но для статической переменной будет создана только одна копия, и ни одна статическая переменная не будет иметь 3 отдельных выделения памяти. Так что в классе «Компания» будет создана только переменная companyName один раз, когда переменная ветви будет создана 3 раза для каждого объекта, то же самое применимо к классу Car.

Короче говоря, статические переменные распределяются между всеми объектами класса и могут быть изменены.

Динамическая переменная означает, что вы хотите создать динамическую переменную класса, что невозможно, вместо этого вы можете инициализировать переменную динамически, используя java-отражение.

1 голос
/ 04 февраля 2010

Статическая переменная создается один раз за время жизни Типа.

Для класса Age, если у вас есть статическая переменная static int staticAge;

и другая переменная как переменная экземпляра int instanceAge;

значение, присвоенное staticAge, будет одинаковым для всех экземпляров Age, поскольку одна и та же переменная будет использоваться всеми объектами.

значение instanceAge будет относиться к объекту Age.

0 голосов
/ 20 июля 2012

Статические переменные (должны) остаются такими же, например, температура водяной бани, постоянная k конкретной пружины.Динамические переменные меняются в ходе эксперимента, например, температура и давление воздуха, количество естественного света.

0 голосов
/ 04 февраля 2010

Этот вопрос не имеет особого смысла. У Java нет динамических переменных. Например, в CommonLisp они есть, а в Java - нет.

0 голосов
/ 04 февраля 2010

Все переменные являются динамическими, если вы не сделаете их final. Статика - это всего лишь еще один зверь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...