成员变量、局部变量、差异和静态变量

在堆栈区成员变量,自属于所述对象的部分成员。对象是成对分配

局部变量被分配在占,引用的对象被分配在栈上

静态变量被分配在静态区域中的方法区

1:成员变量和局部变量之间的差
    (1)在类中的位置不同
        成员变量:类中方法外
        局部变量:方法定义中或者方法声明上
    (2)在内存中的位置不同
        成员变量:在堆中
        局部变量:在栈中
    (3)生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失
        局部变量:随着方法的调用而存在。随着方法的调用完成而消失
    (4)初始化值不同
        成员变量:有默认值
        局部变量:没有默认值,必须定义。赋值,然后才干使用

(5)静态变量和成员变量的差别
        A:所属不同
            静态变量:属于类,类变量
            成员变量:属于对象,对象变量,实例变量
        B:内存位置不同
            静态变量:方法区的静态区
            成员变量:堆内存
        C:生命周期不同
            静态变量:静态变量是随着类的载入而载入。随着类的消失而消失
            成员变量:成员变量是随着对象的创建而存在。随着对象的消失而消失
        D:调用不同
            静态变量:能够通过对象名调用,也能够通过类名调用
            成员变量:仅仅能通过对象名调用


        
2:类作为形式參数的问题?


    (1)假设你看到一个方法须要的參数是一个类名,就应该知道这里实际须要的是一个详细的对象。

3:匿名对象
    (1)没有名字的对象
    (2)应用场景
        A:调用方法,只只调用一次的时候。
        b:能够作为实际參数传递。
        
4:封装
    (1)隐藏实现细节,提供公共的訪问方式
    (2)优点:
        A:隐藏实现细节,提供公共的訪问方式
        B:提高代码的复用性
        C:提高代码的安全性
    (3)设计原则
        把不想让外界知道的实现细节给隐藏起来,提供公共的訪问方式
    (4)private是封装的一种体现。
        封装:类,方法,private修饰成员变量

5:privatekeyword
    (1)私有的意义,能够修饰成员变量和成员方法
    (2)特点:
        被private修饰的后的成员仅仅能在本类中被訪问
    (3)private的应用:
        以后再写一个类的时候:
            把全部的成员变量给private了
            提供相应的getXxx()/setXxx()方法

6:thiskeyword
    (1)代表当前类的引用对象
        记住:哪个对象调用方法,该方法内部的this就代表那个对象
    (2)this的应用场景:
        A:攻克了局部变量隐藏成员变量的问题
        B:事实上this还有其它的应用,明天解说。

7:构造方法
    (1)作用:用于对对象的数据进行初始化
    (2)格式:
        A:方法名和类名同样
        B:没有返回值类型,连void都不能有
        C:没有返回值
        
        思考题:构造方法中可不能够有return语句呢?
        能够。而是我们写成这个样子就OK了:return;
        事实上,在不论什么的void类型的方法的最后你都能够写上:return;
    (3)构造方法的注意事项
        A:假设我们没写构造方法,系统将提供一个默认的无參构造方法
        B:假设我们给出了构造方法,系统将不再提供默认构造方法
            假设这个时候。我们要使用无參构造方法,就必须自己给出。
            推荐:永远手动自己给出无參构造方法。
    (4)给成员变量赋值的方式
        A:setXxx()
        B:带參构造方法

8:代码:Student s = new Student();做了哪些事情?
    (1)把Student.class文件载入到内存
    (2)在栈内存为s开辟空间(s是对象的引用)
    (3)在堆内存为学生对象申请空间
    (4)给学生的成员变量进行默认初始化。null,0
    (5)给学生的成员变量进行显示初始化。

林青霞,27
    (6)通过构造方法给成员变量进行初始化。

刘意,30
    (7)对象构造完成,把地址赋值给s变量
    
10:statickeyword
    (1)静态的意思。能够修饰成员变量和成员方法。
    (2)静态的特点:
        A:随着类的载入而载入
        B:优先与对象存在
        C:被类的全部对象共享
            这事实上也是我们推断该不该使用静态的根据。


            举例:饮水机和水杯的问题思考
        D:能够通过类名调用
            既能够通过对象名调用,也能够通过类名调用,建议通过类名调用。


    (3)静态的内存图
        静态的内容在方法区的静态区
    (4)静态的注意事项;
        A:在静态方法中没有this对象
        B:静态仅仅能訪问静态
 
    (6)main方法是静态的
        public:权限最大
        static:不用创建对象调用
        void:返回值给jvm没有意义
        main:就是一个常见的名称。


        String[] args:能够接收数据,提供程序的灵活性
            格式:java MainDemo hello world java
                  java MainDemo 10 20 30

static内存图分配:


posted on 2015-06-08 16:21  gcczhongduan  阅读(166)  评论(0编辑  收藏  举报