成员变量,局部变量

1、在类中的位置不同
成员变量: 在类中定义
局部变量:在方法中定义或者方法的参数
2、在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量: 在栈内存(局部变量属于方法,方法进栈内存)
3、生命周期不同
成员变量: 随着对象的创建而存在,随着对象的销毁而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4、初始化值不同
成员变量:有默认初始化值,引用类型默认为null
局部变量: 没有默认初始化值,必须定义,赋值, 然后才能使用
注意:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

public class Test2{
    public static void main(String[]args){
        
        Person p1 = new Person();
        
        //属性未封装,直接赋值
        //p1.name ="飞飞";
        //p1.age = 18;
        
        //属性封装了,通过调用方法
        p1.setName("飞飞");
        p1.setAge(17);
        
        p1.run(10);
        
        p1 = null;
        
        
    }
}

//没有封装之前
class Person{
    //属性的封装
    private String name;//成员变量,在类中定义
    private int age;//成员变量,在类中定义
    
    
    //getter and setter
    
    //对外提供一个为mane属性设置的方法
    public void setName(String name){
        this.name = name;
    }
    //对外提供一个获取name属性的方法
    public String getName(){
        return name;
    }
    public void setAge(int age){
        //this.age = age;
    }
    public int getAge(){
        return age;
    }
    
    public void run(int len){//参数也是局部变量
        int i;
        int m = len;//m也是局部变量
        System.out.println("我跑了"+m+"米");
        //System.out.println(i);必须赋值初始化才正确
        System.out.println(age);//成员变量有默认值
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,646评论 8 265
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,556评论 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,844评论 0 10
  • 对于一个人来讲,他最引以为傲的事大概就是出身名门。最幸福的事大概就是背负一族的骄傲,未来与值得守护的人。 父亲一直...
    想念天空再蓝些阅读 530评论 2 2