目录
mybatis #{} $ {} 区别,哪个可以防止sql注入
子类继承了exception,thow出去,会被父类接受吗?会被Exception接收吗?再次thow,会被子类接受吗
int Integer String == equals
int 和Integer比较的是值,而String用==比较的是地址,equals比较的是值,
String s = "str" 会放到常量池,String s = new String("str")会将str放到堆,常量池的s指向str,
intern()将堆中的引用添加到常量池中。
abstract private 和方法体
不能有方法体,不能是private修饰符
线程的生命周期
创建,就绪,运行,阻塞,销毁
mybatis #{} $ {} 区别,哪个可以防止sql注入
1 推荐使用#
2 #会预编译,$只会原模原样的替换
3 # 实际上会用preparedStatement,可以防止sql注入
反射,生成类并且执行里面的方法
clazz.getDeclaredField("")//获取所有的field,
clazz.getField("")//只获取public的field,
Method method = clazz.getDeclaredMethod("methodName", Class)
method.invoke(obj, "data")
> 运算 2*16 最快的运算方式
System.out.println(2 << 2);// 1000 2 * 2的二次方 = 2 * 4=8
System.out.println(3 << 2);// 1100 3 * 2的二次方 = 3 * 4=12
System.out.println(2 >> 1);// 10 右移,也就是2 / 2的x次方 2 / 2 = 1
System.out.println(16 >> 3);// 2 右移,也就是16 / 2的3次方 16 / 8 = 2
总结:左移或右移,就是该数乘以或除以2的x(x指代左移或右移的位数)次方。左移,后面补0;右移,前面补0
sleep 和wait
wait 是Object下的方法,而sleep是Thread的方法。
sleep会占用锁,wait自动释放锁。
wait必须和synchronized一起使用。
wait需要等待notify或notifyAll来唤醒(无时限等待状态),而sleep自动到时间唤醒(有时限等待状态)。
子类继承父类,父类继承了exception,子类thow出去,会被父类接受吗?会被Exception接收吗?再次thow,会被子类接受吗
会,不会,会
public class ExceptionTest {
public static void main(String[] args) {
try {
throw new Sub();
} catch (Super e) {
System.out.println("被父类接收"); // 会
try {
throw e;
} catch (Sub e1) {
System.out.println("被子类接收"); // 会
}
} catch (Exception e) {
System.out.println("被Exception接收"); // 不会
}
}
}