21xrx.com
2024-11-25 12:15:07 Monday
登录
文章检索 我的文章 写文章
Java面试常问问题及答案
2023-06-17 12:20:47 深夜i     --     --
hashCode() equals() 集合框架

在Java面试中,有几个问题几乎是必问的,如果能够清晰地回答这些问题,那么成功的概率也就大大增加了。下面是Java面试最常问的几个问题以及相应的答案。

1. Java中的hashCode()和equals()方法有什么作用?

在Java中,hashCode()方法用于获取对象的哈希码,equals()方法用于比较两个对象是否相等。这两个方法非常重要,因为它们涉及到Java中的集合框架(如HashMap、HashSet等)中元素的查找和存储。正确地实现hashCode()和equals()方法可以提高程序的性能。

示例代码:

public class Person {

 private String name;

 private int age;

 // 省略构造方法、getters和setters

 @Override

 public int hashCode() {

  final int prime = 31;

  int result = 1;

  result = prime * result + age;

  result = prime * result + ((name == null) ? 0 : name.hashCode());

  return result;

 }

 @Override

 public boolean equals(Object obj) {

  if (this == obj) return true;

  if (obj == null) return false;

  if (getClass() != obj.getClass()) return false;

  Person other = (Person) obj;

  if (age != other.age) return false;

  if (name == null) {

   if (other.name != null) return false;

  } else if (!name.equals(other.name)) return false;

  return true;

 }

}

2. Java中的多态是什么,怎么实现?

Java中的多态是指同一个方法在不同的对象上的表现形式不同。这个操作可以使得程序更加灵活,可以根据不同的对象调用相同的方法。实现多态有两种方式:继承和接口。

示例代码:

// 继承

public class Animal {

 public void speak() {

  System.out.println("我是一只动物");

 }

}

public class Dog extends Animal {

 @Override

 public void speak() {

  System.out.println("我是一只狗");

 }

}

public class Cat extends Animal {

 @Override

 public void speak() {

  System.out.println("我是一只猫");

 }

}

// 接口

public interface Shape {

 double area();

}

public class Circle implements Shape {

 private double radius;

 public Circle(double radius)

  this.radius = radius;

 @Override

 public double area() {

  return Math.PI * radius * radius;

 }

}

public class Rectangle implements Shape {

 private double length;

 private double width;

 public Rectangle(double length, double width)

  this.length = length;

  this.width = width;

 @Override

 public double area() {

  return length * width;

 }

}

关键词:多态、继承、接口

3. Java中的异常有哪些,怎么处理?

Java中的异常分为编译时异常和运行时异常。编译时异常需要在编译阶段就进行处理,否则程序会无法编译通过。运行时异常则在程序运行时出现,需要使用try-catch块进行处理或者通过throws关键字将异常抛出。在处理异常时,建议使用finally块释放资源。

示例代码:

// 编译时异常

public void readFile(String fileName) throws IOException {

 FileReader fileReader = null;

 try {

  fileReader = new FileReader(fileName);

  // 读取文件

 } finally {

  if (fileReader != null) {

   fileReader.close();

  }

 }

}

// 运行时异常

public int divide(int x, int y)

 return x / y;

try {

 int result = divide(10, 0);

} catch (ArithmeticException ex) {

 System.out.println("除数不能为0");

} finally

 // 释放资源

关键词:异常、编译时异常、运行时异常

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复