unit5 类的使用
1.内部类:
成员内部类:内用外随意,外用内借助内部的对象
局部内部类:(包含匿名内部类)
匿名内部类:
补充:类作为成员变量,接口作为成员变量,接口作为成员方法
类的继承:extends 调用父类:super
2.Object类:java.lang.Object
方法:public String toString(); public booelan equals(Object obj);
String s = person.toString(); boolean b = person.equals(person1);
@Override
public boolean equals(Object o) {
if (this == o) return true;
//getClass() != o.getClass()
// 使用反射技术,判断o是否是Person类型的,等效于obj instanceof Person
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name);
}
3.Date类:java.util.Data
时间原点:1970-01-01-00:00:00
方法:
System.out.println(System.currentTimeMillis()); 毫秒
Date date = new Date(); 日期
Date date = new Date();
long time = date.getTime();
DateFormat类:日期格式化,日期解析,抽象类 SimpleDateFormat类:子类,用来创建对象
成员方法:format() parse()
Calendar类:抽象类,无法直接创建对象使用
方法:getInstance() ,用来创建对象,返回其子类的对象
成员方法:
Calendar instance = Calendar.getInstance();
int year = instance.get(Calendar.YEAR);
instance.set(Calendar.YEAR,1996);
instance.add(Calendar.YEAR,2);
4.System类:java.lang.System,无需导包
方法:
5.StringBuilder类:java.lang.String; 字符串不可以改变(底层被final修饰),但是字符串缓冲区内容可以改变
他在内存中始终是一个数组,占用空间少效率高;如果超出则会自动扩容
方法:
链式编程:一直点方法、、、
6.包装类:基本数据类型4类8种,包装类同理
装箱&拆箱:
自动装箱&自动拆箱:自动相互转换
基本类型和字符串类型的转换:
7.Collection类:数组长度固定,集合可变;数组类型一致,集合存储对象,类型可以不一致
集合框架api:Collection{<E>
共性方法:
8.Iterator接口=迭代器:遍历集合时候使用,取出元素再判断,就是迭代
foreach=增强for循环:底层也是迭代器,目标只可以是集合或者是数组
9.泛型Generic:一种未知的数据类型,就是不确定,E:element T:type
好处:避免了类型转换的麻烦,把运行期的异常提升到了编译期
坏处:泛型什么类型,只能存什么类型
类:ArrayList<E>
public class Generic<E>
方法:定义在方法的修饰符和返回值类型之间
public <M> void method(M m)
接口:接口+实现类+测试类。。。
public interface GenericInterface<I>
public class GenericImpl<I> implements GenericInterface<I>
泛型通配符:<?> 代表不确定数据类型,此时只能接收数据,不能存储数据
public static void method(ArrayList<?> list) {
//使用迭代器遍历集合
Iterator<?> it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
}
PS:受限泛型
上限限定:? extends E ?只能是E的孩子或者本身
下限限定:? super E ?只能是E的父亲或者本身
10.数据结构:栈,队列,数组,链表,红黑树