Java基础学习笔记一

1.抽象类中可以有没有抽象方法,只有普通方法。

2.接口中可以没有任何方法。

3.实现了Collection接口的有set、list、Queue,TreeSet、HashSet实现了set接口,Vector、Stack实现了list接口。

4.实现了map接口的有HashTable、TreeMap、SortedMap、LinkedHashMap。

5.HashMap键值允许为null,他是不同步的,而HashTable相反,HashMap解决hash冲突的方式是用链表。

6.Arrays.asList(),中参数必须是引用类型,如Integer[] t = {1,2,3};并且返回的list是固定大小的,不等添加、删除元素。Arrays.asList()方法返回一个ArrayList对象。

7.java类中构造函数、静态代码块、执行顺序。

上溯到Object类,先执行Object类的静态代码块,再向下执行子类的静态代码块,知道所有的类静态代码块执行完,然后开始执行父类的构造函数,再执行子类的构造函数。

8.静态代码块中不能调用非静态方法,静态方法中不能使用this关键字。

9.DateFormat 和 SimpleDateFormat 类是非线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。SimpleDateFormat继承了DateFormat,在DateFormat中定义了一个protected属性的 Calendar类的对象:calendar。只是因为Calendar累的概念复杂,牵扯到时区与本地化等等,Jdk的实现中使用了成员变量来传递参数,这就造成在多线程的时候会出现错误。

10.HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。

11.ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

12.ArrayList和LinkedList的remove性能不一样,LinkedList性能比ArrayList高,因为ArrayList底层采用数组实现,而LinkedList是双向链表实现。ArrayList和LinkedList都是非线程安全的,都实现了list接口。

13.所有异常类的基类是Throwable。

14.java中定义类时不能同时使用final、abstract关键字。

15.Java对象锁

15.OSI七层模型

OSI中的层 功能 TCP/IP协议族

应用层文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

表示层数据格式化,代码转换,数据加密没有协议

会话层解除或建立与别的接点的联系没有协议

传输层提供端对端的接口 TCP,UDP

网络层为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP

数据链路层传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU

物理层以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

你可能感兴趣的:(Java基础学习笔记一)