List和Set
- set是无序不可重复的集合。
- list是有序可以重复的集合。
封装
封装类型\权限 | 本类 | 本包 | 子类 | 包外 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
Integer的方法
- intValue()是把Integer对象类型变成int类型
- parseInt()是把String类型变成int类型
- ValueOf()把StringValue变成Integer类型
Java引用类型
- 对于一个对象来说,只要有强引用的存在,就会一直存在内存中。
- 如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都有可能被垃圾回收器回收。
- 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收他;如果内存空间不足了,就会回收这些对象的内存。
- 一旦发现了弱引用的对象,不管内存空间是否足够,都会回收它的空间。
强引用: Object obj = new Object()
,垃圾回收器永远不会回收的对象,即使内存不足也不会去回收。如果向中断强引用关系,将对象赋值为null,垃圾回收器就会适时的回收对象。
软引用:用来描述一些非需要但仍有用的对象,内存空间足够就不会回收,不够时就会回收这些软引用对象,如果回收了软引用对象,内存还不够就会抛出内存溢出异常。常常用来实现缓存技术。
弱引用:比强引用弱一些,无论内存是否足够,只要垃圾回收器开始回收,弱引用对象就会被回收。
虚引用:不能单独存在,必须和引用队列联合使用,主要用于跟踪对象被回收的状态。是最弱的一种引用关系,如果一个对象仅有虚引用,那么它就和没有引用一样,随时可以被回收。
String对象
在Java中的变量和基本数据类型的值存放于栈内存中,new出来的对象放在堆内存中。
例如:int i = 1 ; String string = new String("hello world")
,变量i
和它的值1
以及变量s
都是放在栈内存中,而变量s
指向的对象hello world
放在堆中。
如果在定义一个int j = 1;
那么j
也会执行栈内存中的1
,这时比较j == i
返回的是true
。
如果定义一个String st1 = "he"; String st2 = "he";
这时比较st1 == st2
返回的也是true。
但是如果定义String s1 = new String("Hello"); String s2 = new String("Hello")
返回的是false。
因为指向的是在堆中的不同的地址。
Servlet声明周期
- 初始化 init()
- 响应客户端方法 service
- 终止 destory