成员变量与实例变量&成员方法与构造方法&构造代码块和静态代码块&静态与非静态&重写与重载的区别

一、成员变量与局部变量的区别

区别\情况 成员变量 局部变量
定义位置 定义在类的内部 定义在函数或代码块里
作用区别 描述事物共有的属性 提供给函数或者代码,保存数据的空间
初始值区别 在没有赋值的情况下是默认值(0,null,false...) 不赋值不能使用
生存周期 随着对象的创建而创建,对象的销毁而销毁
【内存的堆区】
定义变量语句的时候出现,当函数或代码块执行完销毁
【内存的栈区】

二、成员方法与构造方法的区别

区别 成员方法 构造方法
返回值区别 必须有返回值 没有返回值,不需要void
方法名区别 符合规范,见名知意,动宾结构 名字和类名必须是一致的
作用区别 对类对象的一个行为描述 用来初始化对象
调用者区别 是用对象来调用的(或使用类名) 真实使用者是JVM通过new关键字来使用

三、构造代码块和静态代码块的区别

区别 构造代码块 静态代码块
作用区别 用于对象的初始化操作,对象创建一次就会执行一次 作用于类的初始化操作,只执行一次
优先级区别 比静态代码块晚,比构造方法/函数早 最早执行,类被载入内存时执行
参数返回值 没有名字、返回值、参数 没有名字、返回值、参数,有static

四、Static(静态)方法与非静态方法的区别

1.加有static的成员、属性、方法,称类成员、属性、方法

2.没有加static的成员、属性、方法,称实例成员、属性、方法

​ 1、静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用。

​ 2、静态方法只能访问静态成员和方法,非静态方法都可以访问;(静态对静态、非静态对非静态

​ 3、静态方法不能标记为override,导致派生类不能重写,但是可以访问;

​ 4、静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候。

​ 5、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。

​ 6、在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用。

1)何时用静态方法,何时用成员方法?

​ 如果一个方法或属性对于一个实例没有意义,不依赖new出来的实例,那么它就应该是静态的。

​ 因为方法需要重复的调用,每次都去new一次会造成内存的开销,使用静态的方法就会一直在内存中,不需要重新new一块空间初始化数据。

四、方法重写和方法重载的区别?

比较项 位置 方法名 参数表 返回值 访问修饰符
方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格
方法重载 同类 相同 不相同 无关 无关
posted @ 2020-07-02 20:22  筋肉猩  阅读(161)  评论(0编辑  收藏  举报