面向对象之类的方法

内存管理:
    jvm将内存分成三大主要区域:堆,栈,方法区
    堆(heap):存储new出来的对象,给成员变量分配空间。
    栈(stack):jvm在执行程序时,在栈中,会为每一个方法分配一个空间
            即栈帧,用来存储方法的局部变量

            在栈中存在一块区域叫栈帧:栈帧的作用是在程序调用方法时,开辟一块空间来

             执行方法,方法结束,栈帧消失,内存释放。

    方法区:用来存储jvm加载的字节码文件的信息(类的信息)
        包含类的方法,方法只有一份,堆中的对象共享这份方法
        在使用非static修饰的方法时,需要对象来调用,即动态绑定到对象上
垃圾回收机制:(GC)
    jvm的一个独有线程(程序),用于回收没有任何指向的对象。
    System.out.println((new Person()).name);
    System.out.println((new Person()).name);
    上述产生的对象,以后再也无法使用,如果类似的这种情况有很多,
    对象来不及被处理,内存剩余空间就会越来越小,有可能出现内存溢出情况
    因此,需要一个处理机制,即,垃圾回收机制,没有被引用的对象,会被视为垃圾,等待GC回收
    (因为有垃圾回收机制,所以Java程序员不用担心内存溢出或泄露情况)

   

用以下代码举例:

       

       

       

构造方法(也叫构造器)
    是特殊的方法,作用是用来给成员变量(Field,字段,属性),初始化.
    特殊在
        (1)没有返回值这个位置
        (2)方法名与类名相同
    如:
        public class Point{
            int x;
            int y;

            修饰词 类名(){}
            剩下的是普通方法
            public 
        }

此处需要用到一个关键字this(这个):
    this指向的是将要创建的那个对象,即,变量.方法()时的变量
    在普通方法中,操作的成员变量,如果与局部变量名称相同时,
    为了避免出现歧义,应该在成员变量前使用this.进行区分
    当没有歧义时,this.可以省略不写
    在构造器中,还可以使用this关键字,调用本类中的其他构造方法
    语法格式:this【那个构造器名称】(有参传参)


一定要注意:无论上一句是什么,必须,只能在构造器中的首行首句上使用!!!!!!!!!!

默认无参构造器:如果定义类时,如果没有添加构造方法,
        系统会默认提供一个公有的没有形式参数的构造器
        pubic Point(){}
        注意:如果定义期间提供了构造器,系统不在提供无参构造器.
有参构造器:因为构造器是用来给成员变量初始化的,为了方便
    所以形式参数的名称都与成员变量一致,因此,在赋值时,this.不能省略


构造器的调用:
    只能使new关键字来调用;
    new 构造方法(有形参就传实参,一定要与参数列表一一对应)

    对象的实例化,是由new完成的,(对象此时已经存在了,但是成员变量都是默认值)
    对象的成员变量初始化,是由new调用的构造器进行的(成员变量是第一次被赋值)
构造器的重载:
    一个类中可以有多个构造器,

       举例:

               对象的实例化,比如一个未出生的婴儿,婴儿已经存在,但是还没有自己的名字,年龄,生日等

               对象的初始化与变量的初始化类似,变量的初始化指的是第一次给变量赋值,二对象的初始化在

               构造方法中,我们将实际参数传递给了形式参数,再由形式参数通过this关键字传递给了成员变量(属性)

               婴儿在出生时就有了自己的生日年龄等,即对象的成员变量初始化。
        方法名相同,参数列表不同(形式参数类型的顺序)-------与方法的重载类似

构造方法与普通方法的区别:

普通方法
    1、方法签名: 方法名+参数列表
    2、方法重载:在同一个类型中,方法名相同,参数列表不同。即方法的重载
        同一个类中允许方法名相同,参数类型列表不同的方法存在
    3、定义语法:
        修饰词 返回值类型 方法名(。。。){
        
        }
    4、调用语法:
        没有static修饰的方法:
            必须使用引用.方法(有参传参)
构造方法:
    作用:用来初始化对象的成员变量
    定义语法: 修饰词  类名(...){}
    调用语法:new 构造方法();
    无参构造器:没有定义构造器时,系统会默认提供无参构造器
    注意,只要定义了构造器,系统不再提供默认构造器

猜你喜欢

转载自blog.csdn.net/qq_38787854/article/details/81290169