枚举是高级的多例设计模式
线程启动使用的是start()方法,但是并不意味这线程立即执行。
泛型除了定义在类中之外也可以定义在接口里。
1,在子类使用的时候继续使用泛型
2, 在子类实现接口的时候明确给出具体类型
范型可以在类、接口中定义。
interface message
静态倒入,可以导入类的静态方法。
直接使用,但是编程不建议。
新特性:可变参数,一个方法只能有一个可变参数;
public void getTotal(int abc,int efg, int ... data){
}
int ... data:代表数组;
Thread与Runnable:
要使用Runnable实现多线程更好,避免了单继承问题。
在多线程的处理上使用的就是代理设计模式。Runnable可以更好的实现共享。
Thread:受单继承的局限。
用Runnable虽然解决了单继承问题,但是没有了start()方法,new Thread(new Runnable{ 匿名内部类}).start()。这个时候也就启动了多线程,也就是说多线程启动永远都是Thread的start()。
如果现在想要实现一个多线程的主类,有两种途径:
正确启动多线程的方法,应该调用start()方法,start()方法来调用run()方法。每一个线程对象只能启动一次,不能同时启动多次。
调试:
调试形式:
foreach循环(增强for循环):
for(数据类型 临时变量 : 参数){
op.....
}
避免数组越界
可变参数:
任意对个参数相加。以前只能使用数
现在: 方法(type ... name)
什么叫多线程:线程是比进程更小的单位。
在操作系统之中,一个程序的执行周期就称为一个进程。
java中多线程应用体现在哪里?
所谓的高并发指的就是访问的线程量暴高,问题:服务器的内存不够用了。
通配符(“?”)可以解决接收任意类型的数据,但客户端无法修改的问题
泛型在类定义的时候并不会设置来类中的属性或方法的参数的具体类型,只是在使用的时候进行定义。
尽量不要去使用向下转型
ClassTestException 指的是两个没有关系的对象进行强制转换所带来的异常
向下转型是不安全的操作,会带来隐患

方法引用 ::
例子:String :: valueof;//进行方法引用
图中的zhuanhuan方法相当于string里面的valueof方法,实际上就相当于方法取了别名