21xrx.com
2024-11-22 12:31:44 Friday
登录
文章检索 我的文章 写文章
Java常见面试题及答案解析
2023-06-14 23:11:12 深夜i     --     --
Java特点 可移植性 跨平台性 安全性 可靠性 可扩展性 == equals()

Java是目前最常用的编程语言之一,在众多的面试中,Java面试题也是非常常见的。本文将为大家整理Java常见面试题及答案解析,并附上代码案例,帮助大家更好地理解和掌握。

一、Java基础

1. Java的特点是什么?

答:Java是一种面向对象的编程语言,具有高度的可移植性、跨平台性、安全性、可靠性、可扩展性等优点。

2. Java中“==”与equals()方法的区别?

答:==用于比较基本数据类型和对象的引用地址,而equals()方法用于比较对象的属性。

代码案例:

public class Test {

 public static void main(String[] args) {

  String str1 = "hello";

  String str2 = new String("hello");

  System.out.println(str1 == str2); // false

  System.out.println(str1.equals(str2)); // true

 }

}

二、面向对象

1. Java中面向对象的三个基本特征是什么?

答:封装、继承、多态。

2. 什么是继承?如何实现继承?

答:继承是指一个新类可以拥有已有类的属性和方法。实现继承可以使用关键字extends。

代码案例:

public class Person {

 private String name;

 private int age;

 public Person(String name, int age)

  this.name = name;

  this.age = age;

 public String getName()

  return name;

 public int getAge()

  return age;

}

public class Student extends Person {

 private String grade;

 public Student(String name, int age, String grade) {

  super(name, age);

  this.grade = grade;

 }

 public String getGrade()

  return grade;

}

关键词:面向对象、封装、继承、多态、extends

三、集合框架

1. Java中常见的集合框架有哪些?

答:Java集合框架主要包括List、Set、Map等。

2. ArrayList和LinkedList的区别?

答:ArrayList和LinkedList都实现了List接口,但是底层的数据结构不同,ArrayList是基于数组实现的,而LinkedList是基于链表实现的。因此,当需要进行大量的随机访问时,应该使用ArrayList,而当需要频繁地插入和删除元素时,应该使用LinkedList。

代码案例:

List arrayList = new ArrayList<>();

arrayList.add("Java");

arrayList.add("Python");

arrayList.add("C++");

System.out.println(arrayList.indexOf("Python")); // 1

List linkedList = new LinkedList<>();

linkedList.add("Java");

linkedList.add("Python");

linkedList.add("C++");

System.out.println(linkedList.indexOf("Python")); // 1

关键词:集合框架、List、Set、Map、ArrayList、LinkedList

四、多线程

1. 什么是多线程?

答:多线程是指在一个程序中同时运行多个线程,这些线程可以并发执行或交替执行。

2. Java中如何实现多线程?

答:Java实现多线程可以使用继承Thread类或实现Runnable接口。

代码案例:

public class MyThread extends Thread {

 public void run() {

  for (int i = 0; i < 10; i++) {

   System.out.println("MyThread " + i);

   try {

    sleep(1000);

   } catch (InterruptedException e) {

    e.printStackTrace();

   }

  }

 }

}

public class Test {

 public static void main(String[] args) {

  MyThread t1 = new MyThread();

  t1.start();

  for (int i = 0; i < 10; i++) {

   System.out.println("main " + i);

   try {

    Thread.sleep(1000);

   } catch (InterruptedException e) {

    e.printStackTrace();

   }

  }

 }

}

关键词:多线程、继承Thread类、实现Runnable接口

  
  

评论区

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