zoukankan      html  css  js  c++  java
  • 面向对象-成员变量和局部变量的区别

    1. 在类中的位置不同

      成员变量:在类中方法外

      局部变量:在方法内或方法声明上

     1 //手机类
     2 class Phone {
     3 
     4     //成员变量
     5     String brand; //品牌
     6 
     7     //成员方法
     8     public void call(String name) { //在方法的声明上(局部变量)
     9         System.out.println("给"+name+"打电话。。。。");
    10     }
    11 
    12 
    13 }

    2. 在内存中的位置不同

      成员变量:在堆内存中

      局部变量:在栈内存中

    3. 生命周期不同

      成员变量:随着对象的存在而存在,随着对象的消失而消失

      局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

    4. 初始化值不同

      成员变量:有默认的初始化值

      局部变量:没有默认的初始化值,必须先定义赋值才能使用

    //手机类
    class Phone {
    
        //成员变量
        String brand; //品牌
        int price; //价格
        String color; //颜色
    
        //成员方法
        public void call(String name) { //在方法的声明上(局部变量)
            String user; //局部变量(定义在方法内)
            System.out.println(user); //编译时报错(可能尚未初始化变量user)
            System.out.println("给"+name+"打电话。。。。");
        }
    
    
    }
    
    //手机类的测试类
    class PhoneDemo {
        public static void main(String[] args) {
            //创建手机对象
            Phone p = new Phone();
            p.call("李明");
            System.out.println(p.brand + "---" + p.color+"---" + p.price); //null---null---0
        }
    }

    5. 注意事项

      局部变量名称可以和成员变量名称一样,在方法中使用的时候才用的是就近原则

      

     1 //手机类
     2 class Phone {
     3     int num = 20; //这里定义了一个成员变量num
     4 
     5     public void testNum() {
     6         int num = 100;  // //这里定义了一个局部变量num
     7         System.out.println(num); //输出 100
     8     }
     9 
    10 }
    11 
    12 //手机类的测试类
    13 class PhoneDemo {
    14     public static void main(String[] args) {
    15         //创建手机对象
    16         Phone p = new Phone();
    17         p.testNum();
    18         
    19     }
    20 }
    21     

    测试2,如果我们将局部变量num删除,结果会是怎么样呢?

     1 //手机类
     2 class Phone {
     3     int num = 20;
     4 
     5     public void testNum() {
     6          //int num = 100;
     7         System.out.println(num); //此时输出成员变量num的值:20
     8     }
     9 
    10 }
    11 
    12 //手机类的测试类
    13 class PhoneDemo {
    14     public static void main(String[] args) {
    15         //创建手机对象
    16         Phone p = new Phone();
    17         p.testNum();
    18       
    19     }
    20 }
  • 相关阅读:
    mas_makeConstraints && mas_remakeConstraints && mas_updateConstraints 用法与注意事项
    iOS特性一 关闭系统日志打印
    React-Native -课后练习
    RN 项目导入WebStorm 组件没有依赖
    React-Native需要css和布局-20160902
    方式 隐藏导航栏
    svn status状态
    spring整合redis
    maven编译跳过TEST
    linux自动登录脚本expect
  • 原文地址:https://www.cnblogs.com/happy520/p/6613827.html
Copyright © 2011-2022 走看看