一、Java基礎
Java基礎是Java面試中必須掌握的部分,包含Java的特性、語法、類庫、異常等方面的知識。
1. Java中主要特性
Java中最主要的特性包括面向對象、平台無關性、安全性、簡潔易讀性、高性能和多線程支持等,其中面向對象是Java最基本的特性。Java具有良好的面向對象特性,它不僅僅是語言的特性,更是一種思想,Java中的一切都是對象。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
面向對象的特性也體現在Java的類庫中,從Java 5開始,Java引入了泛型,更加強化了Java的面向對象特性。Java中的IO、集合、並發類庫也全部採用面向對象的思想進行設計和實現。
2. Java中常見的數據類型有哪些
Java中變數的數據類型分為:基本數據類型和引用數據類型。
Java中的基本數據類型包括:byte、short、int、long、float、double、char、boolean。
Java中的引用數據類型包括:類、介面、數組等。
//定義變數,變數類型為int
int i = 100;
//定義變數,變數類型為String
String str = "Hello Java";
//定義變數,變數類型為數組
int[] arr = new int[]{1, 2, 3, 4, 5};
3. Java中的異常機制
Java中的異常機制是處理程序運行過程中所發生錯誤的一種機制,Java的異常分為受檢異常和非受檢異常,受檢異常必須在方法簽名中聲明並進行捕獲或者拋出,否則編譯不通過;而非受檢異常則不需要進行聲明或者捕獲處理。
try {
// 嘗試執行可能會拋出異常的代碼
} catch (Exception e) {
// 捕獲並處理異常
} finally {
// 無論是否發生異常,這裡的代碼都會執行
}
二、Java高級特性
Java高級特性包括反射、註解、泛型、多線程、IO操作、集合框架等。這些特性在面試中經常會被問及。
1. Java中反射的概念和作用
Java中反射是指在運行時動態獲取一個類的所有信息以及通過這個類創建對象的能力。反射的作用主要是在框架層面使用,比如Spring框架就是通過反射來控制對象的創建和屬性的注入。
public class ReflectSample {
public static void main(String[] args) throws Exception {
// 獲取類對象
Class clazz = Class.forName("com.example.Test");
// 創建對象
Object obj = clazz.newInstance();
// 獲取方法
Method method = clazz.getMethod("setName", String.class);
// 調用方法
method.invoke(obj, "Tom");
// 獲取屬性
Field field=clazz.getDeclaredField("name");
field.setAccessible(true);
String name=(String)field.get(obj);
System.out.println(name);
}
}
2. Java中的註解
Java中的註解是一種元數據的形式,它提供了一種將元數據與代碼描述結合起來的方式,並可以通過反射來獲取這些元數據。Java中常見的註解包括:@Override、@Deprecated、@SuppressWarnings等。
public class AnnotationSample {
@Deprecated
public void oldMethod() {
System.out.println("This method is deprecated");
}
@SuppressWarnings("unchecked")
public void testMethod() {
List list = new ArrayList();
}
}
3. Java中的泛型
泛型是Java中的一個重要特性,它可以將程序中的類型參數化,使得代碼可以更加通用和安全。
public class GenericClass {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
public class GenericSample {
public static void main(String[] args) {
GenericClass gs = new GenericClass();
gs.set("Hello Java");
String str = gs.get();
}
}
三、Java多線程
Java中的多線程是面試中必問的一個方面,多線程涉及到線程的創建、線程同步、線程通信等知識點。
1. 線程創建方式
Java中線程的創建有兩種方式:繼承Thread類和實現Runnable介面。
public class ThreadSample extends Thread {
@Override
public void run() {
System.out.println("Hello, Thread");
}
}
public class RunnableSample implements Runnable {
@Override
public void run() {
System.out.println("Hello, Runnable");
}
}
public class ThreadTest {
public static void main(String[] args) {
ThreadSample ts = new ThreadSample();
ts.start();
RunnableSample rs = new RunnableSample();
Thread thread = new Thread(rs);
thread.start();
}
}
2. 線程同步方式
Java中線程同步的方式有關鍵字synchronized和Lock兩種方式。
public class SyncSample {
private int count = 0;
// 使用synchronized關鍵字進行線程同步
public synchronized void increment() {
count++;
}
// 使用Lock進行線程同步
private Lock lock = new ReentrantLock();
public void increment1() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
3. 線程通信方式
Java中線程通信的方式有wait()、notify()、notifyAll()三種方法。
public class ThreadCommunication {
private boolean flag = true;
public synchronized void printA() {
while (!flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("A");
flag = false;
notifyAll();
}
public synchronized void printB() {
while (flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("B");
flag = true;
notifyAll();
}
}
原創文章,作者:DTPIM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332966.html