Java实习面试(二)

如何避免空指针,如何排错空指针

避免空指针:

  • 可以用常量与字符串进行对比,此时常量应该放前面。常量.eqluals(字符串)
  • 对象初始化的时候实现默认构造函数或者给定初始值
  • 例如返回集合时,判断结果是否为null之后返回一个空集合
  • 使用Java中的断言来检查条件,但是很少使用Java中的,一般是用spring中的
  • OptionalJDK1.8之后出现的新特性
    想要避免空指针,要注重代码编写规范。

排错空指针(编程中遇到报错怎么解决):

  1. 报错信息中可以定位到指定代码行
  2. 通过打断点的方式,进行debug

别再写 bug 了,避免空指针的 5 个案例! - Java技术栈的文章 - 知乎
打破你的认知!Java空指针居然还能这样玩,90%人不知道… - 栈长的文章 - 知乎

==和equals有什么区别

对于基本数据类型,应该使用==进行比较,这时候==比较的是他们的值

对于引用数据类型,这时候用==进行比较的话,比较的是他们的地址值
此时,如果是不同的new出来的对象,那么地址值不同,比较结果也不同

equals方法来自Object类,所有类都继承了Object
equals在Object类中,比较的也是地址值
所以此时跟==作用相同

但是不同类可以重写属于自己的equals方法。达到比较两者值的效果。
比如String类中重写的equals就可以比较两者的值。因为重写之后的equals把两个比较的字符串变成了字符数组,然后用==依次比较。

这次彻底搞懂Java中equals和==的区别 - 蛙课网的文章 - 知乎

final关键字作用

final修饰类的时候:
  • 不能修饰抽象类和接口
  • 被final修饰的类不能被继承:String
final修饰属性:
  • 必须赋初始值
  • 如果没有赋初始值,必须在构造器里面赋值
  • 被final修饰的属性是不可以被修改的
final修饰方法:
  • 被修饰的方法必须有实现代码
  • 方法是不能被重写的
final修饰形参
  • 被修饰的形参也不可以再修改值

一般final和static一起使用,来定义常量

static修饰符和final修饰符的用法 - 不念旧情的文章 - 知乎

StringBuilder和StringBuffer有什么区别

StringBuffer几乎对所有的方法都实现了同步,所以是线程安全的。

StringBuilder则没有实现同步,所以是线程不安全的。

比如重写append方法的时候,StringBuffer添加了synchronized关键字修饰。而StringBuilder则没有。

所以多线程的时候不能用StringBuilder。

但是正是因为StringBuffer使用了同步,所以导致它的运行效率会慢。

所以在不需要考虑线程安全的时候推荐使用StringBuilder,以达到更快的运行速度。

参加了这么多面试,还是不懂StringBuffer和StringBuilder的区别? - 蛙课网的文章 - 知乎

JDK8新特性

两个String数组A,B。怎么找出A出B的元素

StringBoot常用注解

Mybatis-plus分页功能

有没有使用过配置文件

posted @ 2021-02-23 00:58  张三丰学Java  阅读(64)  评论(0编辑  收藏  举报