1、成员变量和局部变量的区别
(1)在类中的位置不同
成员变量: 类中方法外
局部变量: 方法内或者方法声明上
(2)在内存中的位置不同
成员变量: 堆内存
局部变量: 栈内存
(3)生命周期不同
成员变量: 随着对象的存在而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量: 有默认的初始化值
局部变量: 没有默认的初始化值,必须先定义,赋值,才能使用。
2、静态变量和成员变量的区别
(1)所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
(2)内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
(3)内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
(4)调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
3、重写与重载之间的区别
方法重载:
1、同一个类中
2、方法名相同,参数列表不同(参数顺序、个数、类型)
3、方法返回值、访问修饰符任意
4、与方法的参数名无关
方法重写:
1、有继承关系的子类中
2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同
3、访问修饰符,访问范围需要大于等于父类的访问范围
4、与方法的参数名无关
4、抽象类和接口的区别
成员区别
抽象类:变量、常量、有抽象方法、抽象方法、非抽象方法
接口 :常量、抽象方法
关系区别
类与类:继承、单继承
类与接口:实现、单实现、多实现
接口与接口:继承、单继承、多继承
设计理念区别
抽象类:被继承体现的是:”is a”的关系。共性功能
接口:被实现体现的是:”like a”的关系。扩展功能
5、多态的好处和弊端
多态的好处:提高了程序的维护性(由继承保证) 、提高了程序的扩展性(由多态保证)
多态的弊端 :不能访问子类特有功能,需要向下转型才能访问子类的特有功能
6、String,StringBuffer,StringBuilder之间的区别
1、StringBuffer是线程同步安全的,数据安全,效率低。
StringBuilder不是线程同步安全的,数据不安全,效率高。
2、String的内容是不可改变的,StringBuffer和StringBuilder是可变序列。
3、StringBuffer中方法上有synchronized关键字。
7、StringBuffer和数组的区别?
它们都可以被看作是一个容器,装一些数据。但是,StringBuffer里面的数据都是一个一个字符
数组可以存放不同数据类型的数据,但是同一个数组只能存放同一种数据类型的数据。