包装类型
所有整型包装类对象之间值的比较,全部使用equals方法比较,-128到127之间的可以使用“==”进行比较,包装类型大多数采用缓存机制提升性能
拆箱:将基本类型用它们对应的引用类型包装起来,如Integer i = 10,等价于Integer i = Integer.valueOf(10);
装箱:将包装类型转换为基本数据类型,例如
Integer i = 10,int n = 10,其等价于int n = i.intValue()
包装类型与基本类型区别:
1、包装类型可用于泛型,但基本类型不能,且在如方法参数、对象属性这些地方很少用到基本类型;
2、包装类型存放在栈中(由于其为对象类型),基本数据类型一般存放在局部变量表或JVM的堆中;
3、基本类型占的空间比包装类型少;
4、成员变量包装类型不赋值就是null ,而基本类型有默认值且不是null;
5、包装类型使用"=="进行比较时比较的是变量的地址是否相同,要比较值是否相同需"equals()"方法,基本类型可使用"=="进行值的比较。
变量
成员变量与局部变量的区别
1、成员变量属于类,局部变量属于方法或代码块;
2、成员变量可被public、private、static等修饰,局部变量不能被访问控制符或static修饰,但这两者均可被final修饰;
3、成员变量存放在堆内存中,局部变量存放在栈内存中;
4、成员变量随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡;
5、若未对变量赋值,成员变量会自动被对应类型的赋默认值,但局部变量不会。
静态变量
静态变量可被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量,多个对象被创建时只会被分配一次内存,其使用"类名.变量名"的方法访问(private修饰时无法访问),通常情况下,静态变量会被final关键字修饰成为常量。
静态方法与实例方法的区别
1、调用方法上,静态方法可使用类名.方法名或对象.方法名调用,且不需要通过new方法新建对象,直接调用即可。
2、静态方法在访问本类的成员时,只允许访问静态成员,不允许访问实例成员,而实例方法不存在这个限制。
重载与重写
重载
发生在同一个类或父类与子类之间,方法名相同,但参数类型、顺序、数量可不同,方法返回值和访问修饰符也可以不同。
重写
发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写,若父类的方法由private/final/static修饰,则这些方法不能被重写,同时构造方法不能被重写,所传入的参数列表要和父类一致。
重写与重载对比
在执行重写时,若方法的返回类型是 void 和基本数据类型,则返回值重写时不可修改;若方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。