环境部署
ctr+shift+t搜索所有的类
基本常识
作用:用于抑制编译器产生警告信息。
设计模式
单例模式
设计模式——单例模式
设计模式--单例模式(一)懒汉式和饿汉式
组合模式
所以总结来说,is-a (是一个)的关系是用继承来表达的,而has-a(有一个)的关系则是用组合来表达的。
Debug
Junit只管自己的运行,就是说当Junit执行完毕后,就会关闭程序,不会关心是否还有自己启动的后台线程在运行。当Junit运行完毕后,如果后台线程还没有执行完毕,那么也是不会再执行了。
其实junit是将test作为参数传递给了TestRunner的main函数。并通过main函数进行执行。test函数在main中执行。如果test执行结束,那么main将会调用System.exit(0);
即使还有其他的线程在运行,main也会调用System.exit(0);
System.exit()是系统调用,通知系统立即结束jvm的运行,即使jvm中有线程在运行,jvm也会停止的。所以会出现之前的那种情况。其中System.exit(0);的参数如果是0,表示系统正常退出,如果是非0,表示系统异常退出。
java的线程分为两种:正常线程和后台线程。
最大的区别就是系统会等待正常线程结束,但是如果正常线程全部结束,系统就会退出。这时即使有后台线程在运行,系统也会退出。也就是系统不会等待后台线程结束。
后台线程一般是为了给程序提供公共服务而建立起来的。如果程序的其他模块都结束了,那么这种服务也没有存在的必要了。
在Linux中也有类似的线程(虽然不清楚实现,但是感觉java在linux上的实现方式就是采用了相关的技术),但是人家的名字叫做守护线程。
P.K.
①三者在执行速度方面的比较
StringBuilder > StringBuffer > String
②StringBuilder与 StringBuffer
StringBuilder:线程非安全的
StringBuffer:线程安全的
③ 对于三者使用的总结
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
网友评论