1. 如何实现向下转型?需要注意什么问题?如何解决此问题?
Person p = new Man();
使用强转符:()
Man m = (Man)p;
可能ClassCastException异常。
if(p instanceof Man){
Man m = (Man)p;
}
使用instanceof在进行向下转型前判断。
2. == 和 equals()有何区别?
==:可以使用在基本数据类型变量和引用数据类型变量中
如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等
如果比较的是引用数据类型变量,比较两个对象的地址值是否相等
==符号使用时,必须保证符号左右两边的变量类型一致
equals():是一个方法,而非运算符
只适用于引用数据类型
Object类中定义的equals()和==的作用是相同的,比较两个对象的地址值是否相同
像String、Date、File、包装类等都重写了Object类中的equals()方法,重写以后,比较的是两个对象的"实体内容"是否相同
通常情况下,我们自定义的类如果使用equals()的话,也是比较两个对象的"实体内容"是否相同,就需要对Object类中的equals()进行重写
重写的原则:比较两个对象的实体内容是否相同
3.class User{
String name;
int age;
//重写其equals()方法
public boolean equals(Object obj){
if(obj == this){
return true;
}
if(obj instanceof User){
User u = (User)obj;
return this.age == u.age && this.name.equals(u.name);
}
return false;
}
}
4. 写出8种基本数据类型及其对应的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
5. 基本数据类型、包装类与String三者之间如何转换
自动装箱、自动拆箱
Integer i = 10;
基本数据类型、包装类--->String:valueOf(XXX xx)
String--->基本数据类型、包装类:paserXxx(String s)
package top.qaqaq.java.P311;
public class User {
String name;
int age;
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof User) {
User user = (User)obj;
return this.name.equals(user.name) && this.age == user.age;
}
return false;
}
}