Java知识点总结

1,final类型的变量一定要初始化,因为final变量的值不能改变;final修饰的方法不允许被重写,但可以被重载;final修饰的类不能被继承;final修饰的引用类型,不能在指向别的东西,但可改变其中的内容。

2,Java在编译时将源文件编译成字节码文件,在运行时把字节码文件变成机器码文件,C/C++在编译时直接编译成机器码。

3,创建servlet实例是由servlet容器完成,并且在初始化方法init()之前。

4,类的静态代码块仅在类加载时被执行一次,其中定义的变量为局部变量,静态代码块外部不能直接调用,一般用在一些初始化操作。

5,面向对象的五大原则:

单一责任原则(SRP),开放封闭原则(OCP),里氏替换原则(LSP),依赖倒置原则(DIP),接口隔离原则(ISP)。

6,静态内部类不可直接访问外部类的非静态变量,而非静态内部类可以方法问外部类的变量,包括私有变量。

7,局部内部类可当作局部变量,所以不需要加任何修饰符;内部类有四种访问控制级别;外部类只有public和默认两种访问控制符。

8,字符串为null,调用字符串方法时会出现空指针异常。

9,方法重载条件:函数名相同,参数列表不同(包括参数的个数,次序,类型),与返回值无关。

10,Java中引用类型的实参向形参的传递,只是传递的引用,而不是传递的对象本身。

11,Java体系采用Unicode编码方式,每个字符无论是中文还是英文,字符都占用两个字节。

12,Java虚拟机中通常用UTF-16方式保存一个字符。

13,request.getAttrbute是在服务器端的操作,获取对象容器中的数据值;

getParameter是获取从客服端中通过get或post方式发送到服务端的参数;

getInitParameter是获取Tomcat的server.xml中设置Context的初始化参数;

getRequestDispatcher是请求转发。

14,一个类可有多个接口,只能继承一个父类;接口中可不声明方法,和成员变量;抽象类可不包括抽象方法,但有抽象方法的类一定要声明为抽象类。

15,HashMap知识点:

HashMap是“链表数列”的数据结构,即数组和链表的结合体。它底层是一个数组,数组中每一项是一条链表。

HashMap的实例有两个参数影响其性能:“初始化容量”和“装填因子”。

HashMap线程不安全。

HashMap的key-value都是存储在entry中。

HashMap允许一个null键,多个null值,不保证元素的顺序,通过hashcode和equals方法保证键的唯一性。

HashMap采用拉链法解决哈希冲突。

16,Hashtable知识点:

Hashtable是线程安全的。

Hashtable的key,value都不允许为null。

Hashtable遍历方式为Iterator,Enumeration,HashMap为Iterator。

Hashtable直接使用对象的hashcode,HashMap重新计算hash值。

Hashtable数组初始化大小为11,增加方式是old*2+1;HashMap数组默认大小为16,且定义为2的指数。

17,initValue()把Integer对象类型变成int基础数据类型。

parseInt()是把String变成int基础数据类型。

Valueof()是把String转化成Integer对象类型。

18,static方法中没有this这一说。

19,Java中字符串存储在字符串常量区,不会改变,当发生改变时会创建一个新的对象。

StringBuffer是线程安全的StringBuilder(线程不安全)。

StringBuffer和StringBuilder底层是以字符串数组存放,可修改其内容。

20,try...catch会增加额外的开销。

21,接口中用public final static xxx 定义静态常量,接口中没有变量。

22,HttpServletRequest类主要处理:

读取和写入HTTP头标;

取得和设置cookies;

取得路径信息;

表示HTTP会话(Session,通过sessionId)。

23,set不能有重复的元素,并且元素是无序存放的,最多有一个空值。

list可有重复的元素,并且是有序的,可有多个空值。

map中key不重复,value可重复。

24,能抛出InterruptedException异常的方法有:wait(),join(),sleep()。

25,子类可以继承父类所有的方法,但不可以调用父类private修饰的方法,因为父类private方法对子类是不可见的;

类的实例方法与该类的实例对象相关联,不能直接调用,只能通过创建超的实例对象,再进行调用。

实例方法可调用自己类中的实例方法。

26,线程安全的集合:vector(线程安全的ArrayList),stack(堆栈类),Hashtable,enumeration。(熟记法:喂!she)

27,只有在不显示声明构造方法时,系统才提供无参的构造方法。

28,抽象类用于集合子类的通用特性;接口是抽象方法的集合,实现接口必循实现接口的所有方法。

29,finalize过程中抛出的任何异常都会被默认忽略掉,同时对象的销毁过程被取消。垃圾回收是由守护进程执行的。

30,Thread的join()方法指调用该方法的线程挂起,等待join所属线程执行完后在继续运行(如果Main方法中调用m线程的join方法,那么Main方法挂起,等待m线程执行完后Main方法才执行)。

31,在声明数组时,不能直接限定数组长度,只有在创建实例化对象时才能给定数组长度。

32,静态变量只能在类主体中定义,不能在方法中定义。

33,JVM中一字节以下的整型数据会在JVM启动的时候加载进内存,除非用new xxx() 显示的创建对象,否则都是同一个对象。

34,JVM中的新生代:

所有对象创建在新生代的Eden区,当Eden区满后出发新生代的Minor GC,将Eden区和非空闲的Suvivor区存活的对象复制另外一个空闲的Suvivor区中;

保证一个Suvivor区是空的,新生代Minor GC就是在两个Suvivor区之间相互复制存活的对象,知道Suvivor区满为止;

Eden区和Suvivor区空间比例:8:1:1,即一个Eden区,一个Suvivor1区,一个Suvivor2区。

老年代:Suvivor区满了后通过Minor GC将对象复制到老年代,老年代满了后,出发Full GC,对整个堆进行垃圾回收。

持久代:持久代满了后,出发Full GC。

35,重载静态方法时,根据传入重载方法的参数类型,选择更加合适的一个重载方法。

36,static方法不能被子类覆盖重写,如果在子类中定义了和父类完全相同的static方法,则父类的static方法被隐藏(如Son.method() 或 new Son().method() 是调用子类的static方法;Father.method() 或 Father f = new Son(); f.method() 是调用父类static方法)。

37,throws出现在方法头,表示出异常是可能性的,并不一定发生异常;throw出现在方法体中,一定会抛出某异常。

38,方法重写两同两小一大原则:

方法名,参数类型相同;

子类返回值类型小于等于父类;

子类抛出异常小于等于父类;

子类访问权限大于等于父类。

39,非静态内部类定义:Outer.Inner a  = new Outer().new Inner();

静态内部类定义:Outer.Inner a = new Outer.Inner()。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值