Java基础面试题

1.重写和重载的区别?

重载:发生在一个类中,同名的方法如果有不得参数列表(类型不同,个数不同,参数不同)视为重载。

重写:重写发生在子类与父类之间,子类重写父类的方法与被重写的方法返回相同的返回类型,比父类的方法更好的访问,且不能比父类声明更多的异常。

2.String,StringBuffer,StringBuilder的区别是什么?

不可变性

String:String是不可变的,即一旦创建了String对象,就不能修改他的值,每次对String操作都会创建一个新对象,导致内存开销较大

StringBufrfer和StringBuilter:它们允许修改自己的字符串内容,对于频繁的字符串操作使用它们可以避免频繁的创建新对象,提高性能。

安全性:

String:是线程安全的,因为它的不可变性,这使得在多线程的环境下可以使用同一个String对象,不会出现并发修改的问题。

StringBuffer:是线程安全的,他的方法都是同步的,因此在多线程环境下可以安全的对字符串进行操作,但是由于方法是同步的,它的性能相对较低。

StringBuilter:是线程非安全的,因为它的方法没有同步,这使得它在多线程的环境下需要自行保证线程的安全。

性能:

String:由于String的不可变性,导致在对String操作时频繁的创建对象,从而导致内存浪费和频繁的回收,对性能有一定影响。

StringBuffer和StringBuilter:它们允许修改自己的字符串内容,不会频繁的创建对象,性能相对较高,StringBuilterbiStringBuffer性能高,因为StringhBuliter的方法没有同步。

3.== 与 equals 的区别?

 "=="操作符: 

- 对于基本数据类型,"=="比较的是值是否相等。
- 对于引用类型(对象),"=="比较的是对象的引用是否相等,即两个对象是否指向同一个内存地址。

 "equals()"方法: 

 "equals()"方法是Object类的方法 , 默认情况下,Object类的"equals()"方法比较的是两个对象的引用是否相等,等价于"=="操作符。  通常,我们需要在自定义类中重写"equals()"方法,根据类的实际需求来定义两个对象是否相等的判断逻辑。  比如:`String str1 = "Hello"; String str2 = new String("Hello"); boolean result = str1.equals(str2); // true` 

4.抽象类和接口的区别是什么?

抽象类(Abstract Class)和接口(Interface)是Java中用于实现抽象类型的两种机制,他们的区别如下:

实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。

构造函数:抽象类可以有构造函数;接口不能有。

实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。

访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的抽象方法可以使用Public和Protected修饰.

设计层面:抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。

5. 面向对象的特点

面向对象编程(Object-Oriented Programming,简称OOP)具有以下特征:

封装:
封装是将数据和对数据的操作封装在一个单元中,通过定义类来实现。
类通过公共接口(方法)来控制对内部数据的访问,隐藏了内部实现的细节,提供了数据的安全性和保护。


继承:
继承是通过定义一个新的类来继承现有类的特性(属性和方法)。
继承实现了代码的重用,可以建立类之间的层次关系,并通过父类的特性扩展子类的功能。
子类可以继承并重写父类的方法,实现多态性。

多态性:
多态性指的是同一类型的对象,在不同的情境下表现出不同的行为。
多态性通过方法的重写和方法的重载实现。
多态性使得程序可以更加灵活和可扩展,提高了代码的可读性和可维护性。

这些特征共同构成了面向对象编程的核心思想和基本原则,使得代码具有可重用性、可扩展性、可维护性和可理解性。面向对象编程使得程序更易于设计、实现和维护,提高了软件开发的效率和质量。


 

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Java基础面试题可以包括很多方面的知识,以下是一些常见的问题和答案: 1. 什么是JNI? JNI是Java Native Interface的缩写,它提供了一组API,用于实现Java和其他语言(主要是C和C++)之间的通信。JNI允许Java代码与本地已编译的代码进行交互,尽管这可能会降低平台的可移植性。\[2\] 2. JNI的步骤是什么? JNI的步骤包括以下几个部分: - 在Java类中编写带有native声明的方法。 - 使用javac命令编译Java类。 - 使用javah命令生成头文件。 - 使用C/C++实现本地方法。 - 生成动态连接库。 - 执行Java代码。\[1\] 3. 请解释一下super.getClass()方法的作用。 super.getClass()方法是用于获取当前对象的父类的Class对象。在给定的示例中,Test类继承自Date类,当调用super.getClass().getName()时,会返回Test类的名称。因此,输出的结果是"Test"。\[3\] 希望以上回答能够帮助你理解Java基础面试题。如果你有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* [Java基础常见面试题及详细答案(总结40个)](https://blog.csdn.net/ayouki123456/article/details/124983188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Java基础面试题50题](https://blog.csdn.net/weixin_38337769/article/details/100560220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值