1.前一天重点内容复习
方法形式参数是抽象类和接口,实际参数如何传递
如果是抽象类,调用该方法时,实际参数需要传递该抽象类的子类对象
如果是接口类型,调用该方法时,实际参数需要传递实现接口的子实现类对象
方法返回值如果是抽象类和接口,需要返回什么?
如果是抽象类型,返回值为抽象类的子类对象
如果是接口,返回值为实现接口的子实现类对象
Object的equals方法
功能:比较两个对象地址值是否相等
建议所有子类重写,并重写hashCode()方法
子类重写之后,功能变为比较两个对象的成员信息是否一致
==和equals的区别
==
连接的是两个基本数据类型,比较基本数据类型的值是否相同
连接到是两个引用数据类型,比较两个引用数据类型的地址值是否相同
equals()
只比较引用数据类型,默认功能为比较对象地址值是否相同,重写之后为比较两个对象内容是否相同
Object的toString()
原码:
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
输出内容:
包名.类名@十六进制数据的字符串形式
建议所有子类重写,可以自动生成(alt+ins,选择toString())
2.匿名内部类
定义:没有名字的类
使用:具体类使用很少,抽象类和接口使用较多
格式:
new 类名(一般情况下为抽象类)或者接口名(){
重写抽象类或者接口的抽象方法(){
//代码块
}
};
本质:继承了该抽象类或者实现了接口的子类对象,所以可以使用变量名来引用
类名或者接口名 变量名 = new 类名(一般情况下为抽象类)或者接口名(){
重写抽象类或者接口的抽象方法(){
//代码块
}
};
使用:通过变量名引用来调用匿名内部类的方法
3.拉姆达表达式
当接口中有且仅有一个抽象方法的时候,这个接口称为”函数式接口“,可以通过->直接实现接方法
普通方式:
对像.方法名( new 类名或者接口名(){
public void 方法名(){
//代码块
}
});
拉姆达方式:
对像.方法名(
() -> {
//代码块
}
);
4.Object类的clone()方法
作用:返回此对象的副本
本质:将原对象的地址值赋值给新对象,内存中就是栈内存中的两个变量指向堆内存的一个对象
使用:对象调用克隆方法,必须保证对象的类实现Cloneable标志接口,只有实现了标志接口,才可以调用clone()方法实现克隆
5.Scanner类
java.util.Scanner:文本扫描器
构造方法:
public Scanner(InputStream source)
参数InputStream source含义:
InputStream:字节输入流
System类中有一个自定义常量:
public static final InputStream in
功能
判断功能:判断下一个录入的是否为XXX类型
public boolean hashNextXXX(){} XXX对应数据类型
获取功能:录入XXX类型的数据
public boolean nextXXX(){} XXX对应数据类型
6.键盘录入细节
先录入基本数据类型,再录入String类型有可能出现错误,这种错误是由录入第一个数据之后回车,回车也是符号,可以被String类型接受,所以第二个数据再按回车之后就被录入了,导致错误的录入,解决方法为使用next()方法或者重新建一个键盘录入对象
7.String类
介绍:代表字符串类,是一个常量,一旦被创建,其地址值不能被更改,除非重新赋值,在内存中的方法区的常量池中开辟空间,存储内容,String类的底层是字符串数组构造的
格式:String 字符串名 = "字符串内容";
使用:直接输出字符串名,输出内容为字符串的内容,因为String类型重写了Object类的toString()方法
构造方法
String():空参构造
String(byte[] bytes):有参构造,里面是字节数组,将byte数组类型变成Sring类型,解码过程为将String看不懂的字节数组内容转为看得懂的字符内容
String(byte[] bytes, int offset, int length):将一部分字节数组转换为字符串
参数1:字节数组
参数2:指定位置开始
参数3:指定长度
String(char[] value):将字符数组转为字符串
String(char[] value, int offset, int count):将字符数组中的一部分转为字符串
参数1:字符数组
参数2:指定位置开始
参数3:指定长度
String(String original):构造字符串对象,参数为字符串常量值
8.空字符序列""和null的不同
""空字符序列:有对象存在,只不过没内容,可以调用方法
null空对象:没有对象存在,不可以调用方法
9.数组、String类、集合有没有length()方法
数组没有length()方法,但是有length属性
String类中有length()方法
集合没有length()方法,但是有sise()方法获取集合元素数
10.String类中的concat()方法
功能:实现字符串的拼接功能
11.直接常量赋值给字符串和通过new对象来将常量赋值给字符串的区别
直接常量赋值:在栈内存中开辟空间,放入字符串类型的引用变量,在方法区中的常量池中开辟空间,放入赋值内容,将方法区的常量池中内容的地址值给栈内存中的引用变量引用
通过new对象来进行常量赋值:在栈内存中开辟空间,放入字符串类型的引用变量,在堆内存中开辟空间,放入字符串对象,赋值时发现常量标记,去方法区的常量池开辟空间,将内容存入方法区的常量池开辟的空间中,之后将方法区中常量池中的空间地址值给堆内存中的对象,堆内存中的对象又给了栈内存中的引用变量引用
12.String的判断功能
public boolean contains(String s):判断字符串中是否包含指定字符串序列
public boolean endsWith(String suffix):判断字符串中是否以指定字符结尾
public boolean startsWith(String prefix):判断字符串中是否以指定字符开头
public boolean isEmpty():判断字符串内容是否为空
public boolean equals(Object anObject):不区分大小写的判断字符串内容是否相同
12.String的获取功能
public char charAt(int index):获取指定索引处的字符值
public String concat(String str):拼接功能,获取到一个拼接后的字符串
public int indexOf(int ch):返回指定字符第一次出现在字符串中的索引值
public int indexOf(String str):返回指定子字符串在字符串中第一次出现的索引值
public int lastIndexOf(int ch):返回指定字符最后一次出现在字符串中的索引值
public int lastIndexOf(String str):返回指定子字符串在字符串中最后一次出现的索引值
public String substring(int beginIndex):从指定位置开始默认截取到末尾,返回一个新的字符串
public String substring(int beginIndex,int endIndex):从指定位置开始,截取到指定位置,返回一个新的字符串,包前不包后,最后只能取到结束位置的前一个
public String[] split(String regex):按照指定的分割符号拆分成字符串数组