• 《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 */
  • 相关阅读:
    Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
    android 网络异步加载数据进度条
    在WebView中加载HTML页面时显示进度对话框的方法
    Java基础知识总结之IO流
    计算机网络之网络协议
    Java中hashCode的作用
    一篇很好的学习查看Java源代码的文章
    JavaScript 客户端JavaScript之 脚本化文档
    JavaScript 超类与子类 继承
    JavaScript 类、构造函数、原型
  • 原文地址:https://www.cnblogs.com/sun-/p/5313191.html
Copyright © 2020-2023  润新知