1. 成员变量与局部变量的区别


 

        成员变量的作用域是整个类中都可以访问;

        局部变量是的作用域是定义它的{}内, {}中的语句执行完它就被回收;


    2.初始值:

        局部变量使用前必须手动赋值, 系统不会赋默认值;成员变量系统会赋默认初始值.


    3.所在内存区域:

        局部变量在方法运行的栈内存里,在栈里,会自动释放;

        成员变量在对象里,对象在堆里,成员变量也在堆里,不使用的对象会被垃圾回收机制在不确定的时候回收.



2.  匿名对象的使用


(1)当对对象中的功能只执行一次的时候使用。

(2)用于作为实际参数进行传递。

    (3)可以用匿名对象调用属性, 没意义.


3. 封装


    (1)封装的好处:便于重复使用,安全性高。

    (2)private(私有的)权限修饰符。



4. private(私有)


    private修饰成员变量和成员不能在其他类中直接访问.


注意:私有仅仅是封装的一种体现形式, 封装是一种思想, 就是将具体实现隐藏,仅对外暴露访问方式.


5. 构造方法


    (1)用途:用于给对象中属性进行初始化。

        A:格式   类名(){code}Person(){}

        B:Person(){}publicPerson(){}


    (2)特点 不定义空参构造,系统会自动给一个空参构造,定义了构造方法无论是有参还空参的,系统就不再给空参数的了。


    (3)重载构造方法,是根据参数列表来区分是哪个构造方法。

如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面可以学习和交流,也有学习资料可以下载。

6.this关键字


    每个对象都有一个指向自己的指针,就this。


7.this的作用


    1.在方法中区分成员变量和局部变量.this.成员变量;

    2.this语句可以在构造方法里调用其他构造方法;

    3.在一个方法中,this可以调用本类的其他方法,可以省略:


        (1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。

        (2)什么时候使用this呢?

           A:当局部变量和成员变量重名的时候,可以用this进行区分。

           B:this调用成员方法
            C:this调用本类其他构造, 注意必须放在构造方法第一行。



8.创建对象在内存中的详细步骤: Person p = newPerson();


    1.主方法进栈,给类类型变量p分配空间

    2.在堆内存中开辟空间,分配内存地址
    3.在堆内存中建立对象特有属性,并进行默认初始化
    4.对属性进行显式初始化
    5.将内存地址赋给栈内存中的p变量


9.static(静态)特点


    随着类的加载而加载,随着类的消失而消失。优先于对象。静态可以被所有对象共享,也可以被类名所调用。



10.方法区


    方法区是各个线程所共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据.

局部代码块&构造代码块&静态代码块:


    局部代码块:

        作用:控制变量的生命周期

     构造代码块:

        作用:它可以给所有对象进行初始化,存在于类中。当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复。

    静态代码块:

        作用:加载驱动器。当类中的方法都被静态化,并且构造方法被private了,这时我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块。



11.静态的使用

      类的成员用static修饰后,就多了一种调用方式,原来对象名.成员可以继续调用,现在,通过类名.成员,也可以调用.


类在什么时候加载?

在第一次使用的时候加载,而后就常驻内存.





12. 单例设计模式应用


让内存中某个类型的对象只能同时存在一个.





13.final关键字


    final可以修饰类,方法,变量。final修饰的类不可以被继承。final修饰的方法不可以被覆盖。final修饰的变量是一个常量, 只能被赋值一次。


14.final和private区别


    final修饰的类可以访问。

private不可以修饰外部类,但可以修饰内部类,讲内部类的时候会演示

final和private修饰的方法子类无法重写, final不允许重写, private重写不了.

   final修饰的变量只能在显示初始化或者构造方法初始化的时候赋值一次,以后不能更改。
   private修饰的变量,也不允许直接被子类或一个包中的其它类访问或修改,但是他可以通过set和get方法对其改值和取值。