zoukankan      html  css  js  c++  java
  • 《java中局部变量和成员变量的区别》

     1 class Car 
     2 {
     3     String color;
     4     int number;
     5 
     6     void run()
     7     {
     8         System.out.println(color+"::"+number);
     9     }
    10 }
    11 
    12 class CarDemo
    13 {
    14     public static void main(String[] agrs)
    15     {
    16         Car c = new Car();//c是类类型的变量。
    17         //c.color = "blue";
    18         //c.number = 4;
    19         c.run();
    20     }
    21 }
    22 
    23 /*
    24 类与对象的关系:
    25 类:对事物的描述。需要体现属性和行为。
    26 对象:该类事物创建的示例(实体),通过该对象调用具有的属性和行为。
    27 
    28 成员变量和局部变量的区别:
    29 区别一:定义的位置不同。
    30         (1)成员变量定义在类中。
    31         (2)局部变量定义在方法中。
    32 
    33 区别二:在内存中的位置不同。
    34         (1)成员变量存储在堆内存的对象中。
    35         (2)局部变量存储在栈内存的方法中。
    36 
    37 区别三:声明周期不同:
    38         (1)成员变量随着对象的出现而出现,随着对象的消失而消失。
    39 
    40     对区别三第(1)条的解释说明:
    41     class Car
    42     {
    43         //事物的属性:
    44         String color;
    45         int number;
    46 
    47         //事物行为:
    48         void run()
    49         {
    50             System.out.println(color+"::"+number);
    51         }
    52 
    53         /*
    54         说明:这个run方法运行的时候,调用的不是Car这个类里面定义的那个
    55               color和number,而是内存中的堆内存中的对象的color和number。
    56         */
    57     }
    58     class CarDemo
    59     {
    60         public static void main(String[] agrs)
    61         {
    62             Car c = new Car();
    63             c.color = "red";
    64             c.number = 4;
    65             c.run();
    66         }
    67     }
    68         (2)局部变量是随着方法的运行而出现,随着方法的弹栈而消失。
    69 
    70 区别四:初始化不同:
    71         (1)成员变量因为在堆内存中,所以有默认的初始化值。
    72         (2)局部变量没有默认初始化值,必须初始化后才可以使用。
    73     /*
    74     有一个问题是:Java为什么不把局部变量也初始化呢?
    75         原因是一旦Java把局部变量也初始化了,此时局部变量
    76         就在内存中占据空间了。Java的机制是什么时候用到了
    77         局部变量,什么时候再在内存中为局部变量开辟空间。
    78 
    79         //如果写成如下:则当run方法进栈后,会在内存中为局部变量
    80         //x开辟空间。
    81         void show()
    82         {
    83             int x = 4;
    84         }
    85 
    86         //如果写成如下:则当run方法进栈后,不会在内存中为局部变量
    87         //x开辟空间。
    88         void show()
    89         {
    90             int x;
    91         }
    92     */
    93     
    94 */
  • 相关阅读:
    使用灰层覆盖UI时,有事发生
    通过自定义ISAPI Filter来禁止敏感文件的访问
    静态链接库LIB和动态链接库DLL的区别 创建和示例
    深入剖析C++中的string类
    .net c# 序列化和反序列
    ASP.NET 状态服务 及 session丢失问题解决方案总结
    IWAM_账号的用途以及如何同步密码
    COM 组件设计与应用(一)起源及复合文件
    两种古老的WEB编程技术 CGI和ISAPI之间的区别
    Send MSMQ Messages Securely Across the Internet with HTTP and SOAP
  • 原文地址:https://www.cnblogs.com/sun-/p/5313191.html
Copyright © 2011-2022 走看看