欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面试知识点(待补充)

程序员文章站 2022-05-13 22:45:35
...

Java

  1. char类型可以隐式转换成int,double型,不能隐式转为String。char<int<long<float<double

  2. Integer的缓存范围为-128-127,之后都会new一个对象

  3. 修饰符 当前类 同包 子类 其他包
    public
    protected 不能
    default 不能 不能
    private 不能 不能 不能
  4. java中默认的小数都是双精度,如果要声明单精度的需要在小数后加上f

  5. s1=s1+1没有隐式的数据转换,s1+=1有隐式的数据转换

  6. 成员方法有初始值,局部变量必须初始化才能使用byte,short,int,long默认值都是0。boolean默认值是false。char默认值是’’。float与double都是0.0,对象默认是null

  7. java中是有指针的,但是隐藏了,由jvm操作指针

  8. java都是引用传递,对于基本类型,传递的是值的副本,不是值本身。对于对象类型,传递的是对象的引用,改变引用时,本身也改变

  9. 构造方法可以重载,但是不能重写

  10. 静态内部类相当于外部类是独立存在的,在静态内部类是无法直接访问外部类中的变量和方法
    内部类相当于外部类的成员,可以直接访问外部类的变量和方法
    

如果外部类要访问内部类的成员和方法,必须实例化内部类,使用对象进行调用
```

  1. static可以修饰内部类,方法,变量和代码块。修饰方法时,改方法属于类,可以使用类名直接调用。修饰成员时,变量被共享。修饰代码块时,随着类的加载而加载,且只会加载一次。有多个静态代码块时,按顺序执行

  2. final可以修饰类,方法,变量。final修饰类不可被继承,final修饰的方法不可被重写,JVM将其内联,提升效率。final修饰的变量不可变,常量会放入常量池,修饰的是引用,引用不可变,指向的内容可以变。

  3. Math类的方法,pow幂运算,sqrt平方根,round四舍五入,abs绝对值,random生成0-1的随机数,包括0不包括1

  4. super表示当前类的父类对象,this表示当前类的对象

  5. 普通类不能包含抽象方法,抽象类可以包含抽象方法。普通类可以直接实例化,抽象类不能直接实例化

  6. 接口是一种协议,是对外提供一些功能的声明,弥补了java单继承的缺点。接口中声明的都是public static final修饰的常量,所有方法都是抽象方法默认是public abstract,没有构造方法,不能实例化。抽象类只能被继承,抽象方法使用abstract修饰,没有方法体

Spring

ioc:控制反转,控制的是bean的生命周期,反转的是获取对象的方式发生反转。之前我们都是需要在程序中new对象的,现在我们只需要将对象交给Spring容器管理,至于怎么创建我们不管,我们只需要用的时候从容器中获取。

aop:面向切面的思想,将业务逻辑与横切的问题进行分离,达到解耦的效果。如果类实现了接口,使用的是JDK动态代理。如果没有实现接口,则使用CGLIB。

JDK动态代理:主要是proxy和invocationHandler两个类

切面:就是准备增强的那些方法

切入点:具体织入的方法,定义了地点

织入:动词,就是将切面织入的过程

目标对象:被增强的类

通知:什么时候被执行,定义了时间

  • 前置通知
  • 后置通知
  • 返回通知
  • 异常通知
  • 环绕通知

bean的生命周期:

  1. 实例化bean
  2. 注入属性
  3. 实现Aware的接口,比如实现BeanNameAware接口,重写里面的setBeanName(),传入BeanName
  4. BeanPostProcessor前置处理
  5. 实现InitializingBean接口,重写afterPropertiesSet();
  6. xml中配置了init-method方法,则执行配置的方法
  7. BeanPostProsser后置处理
  8. Bean这时已经可以使用了
  9. 实现了DisposableBean,重写destory()方法
  10. xml中配置了destory-method方法,执行这个方法
相关标签: 面试 java