温故而知新:
多态:
1.多态用于形式参数类型的时候,可以接受更多的参数类型
2.多态用于返回值类型的时候,可以返回更多的参数
抽象类:
什么时候使用抽象类:
描述一类事物的时候,发现该事物确实存在某种行为,但是该行为目前是不具体的
那么我们就可以将这个行为声明为抽象,不去实现具体的方法 由具体的子类自定义
去实现
接口:
接口的作用:
1.扩展
2.定义约束规范
形式参数的问题:
基本数据:不讲了 太简单
引用类型:
类名:要的其实是该类的具体对象
抽象类:要的是该抽象类的任意具体子类对象(或者多态实例后的本身对象也可以)
接口:需要的是该接口的任意具体的实现类对象
返回值类型的问题:
基本数据类型:该返回啥返回啥
类:要的该类的对象
抽象类:要的是该抽象的具体子类对象(或者多态实现自身实例化的对象)
接口:要的是该接口的具体实现类对象
API使用例子:
Object:类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
每一个类都间接的或者直接的继承自Object
Object类的方法:
public int hashCode():
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode不能代表该对象的具体地址,只能代表该对象的空间标识
public String toString():
回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
public boolean hasNextXXX():判断元素是否为某一种数据类型
问题:
同一个Scanner对象,先获取一个整数然后获取一个字符串,会出现问题
主要的原因就是换行符的问题的,这个问题只会出现在nextLine
如何解决?
a.你可以先获取一个数值知乎,在创建一个新的Scanner
b.把所有的数据都先按照字符串去读取,然后转换成对应的内容就可以(太麻烦)
c.干脆就不使用nextLine(),而使用next();
public int length():返回此字符串的长度。
字符串的特点:一旦赋值不允许发生改变
这个代码,有没有区别?
String s = new String(“hello”)和String s = “hello”;
有:String s = new String(“hello”)会创建两个对象
String s = “hello”;只会创建一个对象
String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;
换句话说,新创建的字符串是该参数字符串的副本。
字符串如果是变量进行相加,是先开辟,然后进行拼接
字符串如果是常量进行相加,是先相加,然后去字符串自己常量池去查找,如果有就返回,如果没有就创建
public boolean equalsIgnoreCase(String anotherString):判断内容是否相同,忽略大小写
public boolean contains(CharSequence s):判断该字符串当中是否包含指定内容
public boolean startsWith(String prefix):判断该字符串是否以指定内容开头