Java 是值传递,还是引用传递

java语言是值传递,如果是基本数据类型他是值的拷贝,不会影响原来的变量,如果是引用数据类型他是地址的拷贝因为指向了一个对象所以可以修改对象中的变量的值,如果是String类型他虽然是地址拷贝,但是String是不可修改的所以不能改原变量的值。

深拷贝和浅拷贝

如果是基本数据类型无论深拷贝还是浅拷贝都是直接复制一份新的

如果是对象,浅拷贝是复制了一份地址,深拷贝是在堆空间中又复制了一份对象

== 和 equals 的区别

== 如果是基本数据类型他是直接比对值,如果是引用数据类型他比对的是地址值

equals 他是Object中的方法,他如果不重写equals和hashCode方法的话是和==效果一样的都是比对地址值,如果重写了就会根据重新的内容去比对对象中地址值。

String 和 StringBuilder、StringBuffer 的区别?

String在创建后是不可更改的

StringBuffer和String差不多他是线程安全的

StringBuilder也是做字符串拼接的但是他是线程不安全的

String str1 = new String("abc") 和 String str2 = "abc" 和 区别?

区别的话是创建对象数量不一样,String str1 = new String("abc") 首先会在堆空间中创建一个String 如果字符串常量池中没有"abc"的话就会创建2个对象,如果有就是1个对象,而String str2 = "abc"会直接查字符串常量池中是否已经存在,如果存在就不会创建对象,如果不存在就会创建1哥对象。

说一下你对注解的理解

注解可以理解为是一个标记,可以在编译或者运行的时候处理一些事情,比如lombok可以在编译期间生成get set 构造等方法。

什么是反射?应用?原理?

就是在运行期间动态地获取类信息、创建类实例、调用类方法,原理的话就是JVM 进行类加载的时候,会加载字节码文件,将类型相关的所有信息加载进方法区,反射就是去获取这些信息,然后进行各种操作,在Spring中的一些注解都是使用了反射。

JDK1.8 都有哪些新特性

  1. 接口可以有默认方法
  2. Lambda 表达式和函数式接口
  3. Stream流式操作
  4. 日期时间 API
  5. Optional 类

Stream 流用过吗

用过的,在集合的操作的时候我喜欢使用Stream进行操作他可以使用map方法把集合中每个值做一个映射去操作Filter方法可以过滤一下内容,collect方法可以把每一个映射重新聚合成List、Map等

最后修改:2023 年 08 月 26 日
如果觉得我的文章对你有用,请随意赞赏