簡體   English   中英

java / oops中的靜態變量和動態變量有什么區別?

[英]What is the difference between a static variable and a dynamic variable in java/oops?

請有人告訴我oops或Java中的“靜態變量”和“普通變量”之間的區別。 如果可能,還要使用它們。

靜態變量通常是與類型關聯的變量。 將其與與類型的特定實例關聯的實例變量或與方法的一個特定調用關聯的局部變量進行比較。

我不知道“動態變量”的任何標准定義-您在哪里遇到過該術語?

考慮具有靜態和動態變量的類。

  • 動態變量:創建類的實例時,每個對象都有自己的動態變量副本。 每個對象的此變量的值都將不同,無論在該對象中為其分配了什么值。
  • 靜態變量:這些是類級別的變量。 這些變量的值將在該類的所有對象之間共享。 當對象之一更改其值時,該值將是其他對象可用的最新值。 這意味着這些是共享變量。

靜態變量是在類或類型級別上的那些變量。 該類類型的所有實例都只能使用它的一個副本。

據我所知,沒有動態變量的概念。 如果您在某些特定情況下遇到了這個概念,請提及它,可能會對您有所幫助。

編輯 :回答“ 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的對象,則這兩個對象將具有兩個不同的“變量”成員,但一個公共計數成員是類成員。

希望現在清楚了。

在Type的生命周期中實例化一次靜態變量。

對於年齡類,如果您有一個靜態變量static int staticAge;

另一個變量作為實例變量int instanceAge;

對於Age的所有實例,分配給staticAge的值都將相同,因為相同的變量將在所有對象之間共享。

instanceAge的值將特定於Age對象。

在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變量將僅在分支處創建一次變量將為適用於Car類的相同對象的每個對象創建3次。

簡而言之,靜態變量在類的所有對象之間共享,並且可以修改。

動態變量意味着您要創建動態類的變量,這是不可能的,您可以使用Java反射在動態變量上初始化變量。

靜態變量(應該)保持相同,例如水浴的溫度,特定彈簧的k常數。 動態變量會隨着實驗的進行而變化,例如空氣溫度和壓力,自然光量。

除非您將它們定為final否則所有變量都是動態的。 完全是另一只野獸。

這個問題沒有多大意義。 Java沒有動態變量。 例如,CommonLisp有它們,而Java沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM