Java面试知识点(待补充)
Java
-
char类型可以隐式转换成int,double型,不能隐式转为String。char<int<long<float<double
-
Integer的缓存范围为-128-127,之后都会new一个对象
-
修饰符 当前类 同包 子类 其他包 public 能 能 能 能 protected 能 能 能 不能 default 能 能 不能 不能 private 能 不能 不能 不能 -
java中默认的小数都是双精度,如果要声明单精度的需要在小数后加上f
-
s1=s1+1没有隐式的数据转换,s1+=1有隐式的数据转换
-
成员方法有初始值,局部变量必须初始化才能使用
byte,short,int,long默认值都是0。boolean默认值是false。char默认值是’’。float与double都是0.0,对象默认是null -
java中是有指针的,但是隐藏了,由jvm操作指针
-
java都是引用传递,对于基本类型,传递的是值的副本,不是值本身。对于对象类型,传递的是对象的引用,改变引用时,本身也改变
-
构造方法可以重载,但是不能重写
-
静态内部类相当于外部类是独立存在的,在静态内部类是无法直接访问外部类中的变量和方法 内部类相当于外部类的成员,可以直接访问外部类的变量和方法
如果外部类要访问内部类的成员和方法,必须实例化内部类,使用对象进行调用
```
-
static可以修饰内部类,方法,变量和代码块。修饰方法时,改方法属于类,可以使用类名直接调用。修饰成员时,变量被共享。修饰代码块时,随着类的加载而加载,且只会加载一次。有多个静态代码块时,按顺序执行
-
final可以修饰类,方法,变量。final修饰类不可被继承,final修饰的方法不可被重写,JVM将其内联,提升效率。final修饰的变量不可变,常量会放入常量池,修饰的是引用,引用不可变,指向的内容可以变。
-
Math类的方法,pow幂运算,sqrt平方根,round四舍五入,abs绝对值,random生成0-1的随机数,包括0不包括1
-
super表示当前类的父类对象,this表示当前类的对象
-
普通类不能包含抽象方法,抽象类可以包含抽象方法。普通类可以直接实例化,抽象类不能直接实例化
-
接口是一种协议,是对外提供一些功能的声明,弥补了java单继承的缺点。接口中声明的都是public static final修饰的常量,所有方法都是抽象方法默认是public abstract,没有构造方法,不能实例化。抽象类只能被继承,抽象方法使用abstract修饰,没有方法体
Spring
ioc:控制反转,控制的是bean的生命周期,反转的是获取对象的方式发生反转。之前我们都是需要在程序中new对象的,现在我们只需要将对象交给Spring容器管理,至于怎么创建我们不管,我们只需要用的时候从容器中获取。
aop:面向切面的思想,将业务逻辑与横切的问题进行分离,达到解耦的效果。如果类实现了接口,使用的是JDK动态代理。如果没有实现接口,则使用CGLIB。
JDK动态代理:主要是proxy和invocationHandler两个类
切面:就是准备增强的那些方法
切入点:具体织入的方法,定义了地点
织入:动词,就是将切面织入的过程
目标对象:被增强的类
通知:什么时候被执行,定义了时间
- 前置通知
- 后置通知
- 返回通知
- 异常通知
- 环绕通知
bean的生命周期:
- 实例化bean
- 注入属性
- 实现Aware的接口,比如实现BeanNameAware接口,重写里面的setBeanName(),传入BeanName
- BeanPostProcessor前置处理
- 实现InitializingBean接口,重写afterPropertiesSet();
- xml中配置了init-method方法,则执行配置的方法
- BeanPostProsser后置处理
- Bean这时已经可以使用了
- 实现了DisposableBean,重写destory()方法
- xml中配置了destory-method方法,执行这个方法
上一篇: selenium ——获取 layer.msg 弹窗的信息
下一篇: 人,为什么要有一技之长