Java面试题及答案整理(2021最新版).pdfVIP

  • 1
  • 0
  • 约7.32万字
  • 约 59页
  • 2023-09-22 发布于湖北
  • 举报
Java⾯试题及答案整理 (2021最新版) Java⾯试题及答案整理 ⼀、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java D v lopm nt Kit 的简称,j ava 开发⼯具包,提供了 j ava 的开发环境和运⾏环境。 JRE:Java Runtim Environm nt 的简称,j ava 运⾏环境,为 j ava 的运⾏提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 j ava 源码的编译器 j avac,还包含了很多 j ava 程序调试和分析的⼯具。简单来 说 :如果你需要运⾏ j ava 程序,只需安装 JRE 就可以了,如果你需要编写 j ava 程序,需要安装 JDK。 2. == 和 equals 的区别是什么? == 解读 对于基本类型和引⽤类型 == 的作⽤效果是不同的,如下所⽰ : 基本类型 :⽐较的是值是否相同; 引⽤类型 :⽐较的是引⽤是否相同; 代码⽰例 : String x = string; String y = string; String z = new String(string) ; System.out.println(x==y) ; // true System.out.println(x==z) ; // false System.out.println(x.equals(y)) ; // true System.out.println(x.equals(z)) ; // true 代码解读 :因为 x 和 y 指向的是同⼀个引⽤,所以 == 也是 tru ,⽽ n w String()⽅法 则重写开辟了内存空间,所以 = = 结果为 fals ,⽽ quals ⽐较的⼀直是值,所以结果都为 tru quals 解读 quals 本质上就是 ==,只不过 String 和 Int g r 等重写了 quals ⽅法,把它变成了值⽐较。看下⾯的代码就明⽩了。 ⾸先来看默认情况下 quals ⽐较⼀个有相同值的对象,代码如下 : lass Cat { publi Cat(String name) { = name; } private String name; publi String getName() { return name; } publi void setName(String name) { = name; } } Cat 1 = new Cat(王磊) ; Cat 2 = new Cat(王磊) ; System.out.println( 1.equals( 2)) ; // false 输出结果出乎我们的意料,竟然是 fals ?这是怎么回事,看了 quals 源码就知道了,源码如下 : publi boolean equals(Obje t obj) { return (this == obj) ; } 原来 quals 本质上就是 ==。 那问题来了,两个相同值的 String 对象,为什么返回的是 tru ?代码如下 : String s1 = new String(⽼王) ; String s2 = new String(⽼王) ; System.out.println(s1.equals(s2)) ; // true 同样的,当我们进⼊ String 的 quals ⽅法,找到了答案,代码如下 : publi boolean equals(Obje t anObje t) { if (this == anObje t) { return true; } if (anObje t instan eof String) { String anotherString = (String)anObje t ; int n = value.length; if (n == anotherString.value.length) { har v 1[] = value; har v2[] =

文档评论(0)

1亿VIP精品文档

相关文档