Java问答题(1)

1. final修饰变量、方法、类分别表示什么含义?
   final修饰的变量不可改变,一旦赋了初值,就不能被重新赋值,称为常量
   final 修饰的方法不能被子类重写
   final修饰的类不能有子类
   final修饰的对象,不能改变其引用地址,但是能改变对象中的值。

2.final修饰的方法能不能被重载?能不能被重写?
   final修饰的方法可以重载
   public class Demo {
   public final void eat(){
   System.out.println("吃水果");
   }
   public final void eat(String str){
   System.out.println("吃饭");
   }
   }
   但final修饰的方法不能重写

3.String类能不能被继承?为什么?

   String类不能被继承
   因为String类是使用final修饰的类

4.包含抽象方法的类是抽象类吗? 抽象类一定包含抽象方法吗?
   包含抽象方法的类是抽象类
   抽象类中不一定含有抽象方法

5.抽象类中能不能有普通方法?能不能定义构造方法?
   抽象类中可以有普通方法
   抽象类中可以定义构造方法
### Java 笔试常见问答题及答案 在 Java 技术面试和笔试中,通常会涉及基础语法、面向对象编程、多线程、JVM 原理、集合框架、异常处理、设计模式等多个方面。以下是一些常见的问答题及其答案。 #### 1. 接口和抽象类的区别 Java 中的接口和抽象类是面向对象编程中的两个重要概念,它们的主要区别如下: - **构造器**:抽象类可以定义构造器,而接口不能。 - **方法实现**:抽象类可以包含抽象方法和具体方法,而接口只能包含抽象方法(在 Java 8 之前)。 - **成员变量**:抽象类可以定义成员变量,而接口中只能定义常量(即 `public static final` 修饰的变量)。 - **静态方法**:抽象类可以包含静态方法,而接口中不能有静态方法(在 Java 8 之前)[^2]。 #### 2. JVM 的作用和特性 JVM(Java Virtual Machine)是 Java 平台的核心组件,主要作用是执行 Java 字节码。它的特性包括: - **跨平台性**:JVM 是跨平台的,因此 Java 程序可以在任何具有 JVM 的系统上运行,而无需对代码进行修改。 - **内存管理**:JVM 提供了自动内存管理机制,能够自动回收不再使用的内存,从而减少内存泄漏的风险。 - **安全性**:JVM 限制了 Java 程序的权限,确保程序不能损害系统的安全或隐私,并防止程序访问不属于它的资源。 - **性能监控**:JVM 提供了一组管理工具,可以监控和管理 Java 程序的性能,例如内存使用情况和垃圾回收情况[^3]。 #### 3. 线程安全与死锁分析 线程安全是多线程编程中的一个重要概念。以下代码在调用 `test` 方法时是否会引发死锁? ```java public void test(int i) { synchronized (this) { if (i > 10) { i--; test(i); } } } ``` 答案是不会引发死锁。原因在于 `synchronized (this)` 锁的是当前对象实例,而递归调用 `test` 方法时,线程已经持有该锁,因此不会发生死锁。Java 的内置锁是可重入的,允许同一个线程多次获取同一把锁[^3]。 #### 4. Java 中的集合框架 Java 集合框架是 Java 编程中用于存储和操作数据的重要工具。常用的集合包括: - **List**:有序、可重复的集合,常用实现有 `ArrayList` 和 `LinkedList`。 - **Set**:无序、不可重复的集合,常用实现有 `HashSet` 和 `TreeSet`。 - **Map**:键值对集合,常用实现有 `HashMap` 和 `TreeMap`。 每个集合都有其特定的使用场景,例如 `ArrayList` 适合随机访问,而 `LinkedList` 适合频繁的插入和删除操作。 #### 5. 异常处理机制 Java 的异常处理机制通过 `try-catch-finally` 和 `throw` 关键字实现。异常分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。检查型异常必须在编译时处理,而非检查型异常可以在运行时捕获或抛。 ```java try { // 可能抛异常的代码 } catch (Exception e) { // 异常处理 } finally { // 无论是否发生异常,都会执行的代码 } ``` #### 6. 单例模式的实现方式 单例模式是一种常用的设计模式,确保一个只有一个实例。常见的实现方式包括: - **懒汉式**:在第一次调用时创建实例。 - **饿汉式**:在加载时就创建实例。 - **双重检查锁定**:在多线程环境下确保线程安全。 ```java public class Singleton { private static volatile Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` #### 7. Java 中的垃圾回收机制 Java 的垃圾回收机制(Garbage Collection, GC)负责自动管理内存,回收不再使用的对象。常见的垃圾回收算法包括标记-清除算法、复制算法和标记-整理算法。JVM 提供了多种垃圾回收器,如 Serial GC、Parallel GC、CMS GC 和 G1 GC,每种回收器适用于不同的应用场景。 #### 8. Lambda 表达式的基本语法 Lambda 表达式是 Java 8 引入的新特性,简化了函数式编程的代码。基本语法如下: ```java (parameters) -> expression ``` 例如,使用 Lambda 表达式实现 `Runnable` 接口: ```java Runnable r = () -> System.out.println("Hello Lambda!"); ``` #### 9. Java 中的泛型 泛型是 Java 5 引入的新特性,允许在、接口和方法中使用型参数。泛型提供了编译时型检查,并避免了强制型转换的需要。 ```java public class Box<T> { private T item; public void setItem(T item) { this.item = item; } public T getItem() { return item; } } ``` #### 10. Java 中的注解 注解是 Java 5 引入的一种元数据机制,可以为方法、字段等添加额外的信息。常见的内置注解包括 `@Override`、`@Deprecated` 和 `@SuppressWarnings`。 ```java @Override public String toString() { return "Custom Object"; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值