【Java面试】Java基础

本文详述了Java的基础知识,包括面向对象与面向过程的区别、JVM的定义、JDK与JRE的差异、Java与C++的对比、构造器特性、重载与重写的概念。此外,还讨论了Java面向对象的三大特性、String与StringBuilder的差异、异常处理机制、线程状态等核心概念,旨在帮助Java开发者更好地理解和准备面试。
摘要由CSDN通过智能技术生成

Java基础

1、面向对象和面向过程的区别?

(1)面向过程:面向过程偏步骤化,性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素时,比如近底层的东西,单机片、嵌入式开发、Linux系统等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。

(2)面向对象:把所有事物当成对象看待,不管是实体对象还是虚拟对象。面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以可以设计低耦合的系统,更加灵活。但是面向对象的性能比面向过程低。


2、什么是JVM?

JVM是运行Java字节码的虚拟机。对不同的系统(Windows,Linux,macOS)都有特定的实现,目的是使用相同的字节码,能给出相同的运行结果。


3、JDK和JRE的区别?

JDK是Java Development Kit,Java运行工具包,是功能齐全的Java SDK,能够创建和编译程序。JDK包括了JRE。

JRE是Java Run Environment,Java运行时环境,是指当Java程序编译好之后,需要运行字节码的那部分东西,包括Java虚拟机JVM,Java类库,java命令和其他一些基础构件。显然JRE不能创建程序,只能运行程序。


4、Java和C++的区别?

(1)都是面向对象的语言,都支持封装、继承和多态;
(2)Java不提供指针直接访问内存,程序内存更加安全;
(3)Java类是单继承,C++支持多继承;虽然Java类不可以多继承,但是接口可以多继承;
(4)Java有自动内存管理机制,不需要程序员手动释放无用内存;
(5)在C语言中,字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束,但是Java语言中没有结束符这一概念。


5、构造器Constructor是否可被override?

Constructor不能被override(重写),但是可以overload(重载),所以经常看到一个类中有多个构造方法。


6、方法重载和重写的区别?

重载:一个类中,方法名相同,参数列表不同。
重写:也叫方法覆盖,子类继承父类,对父类的方法进行重写。

区别点 方法重载 方法重写
发生范围 同一个类 子类
参数列表 必须修改 一定不能修改
返回值类型 可修改 子类方法返回值比父类更小或相同
异常 可修改 子类方法抛出的异常比父类更小或相同
访问修饰符 可修改 子类方法访问修饰符不能比父类高
发生阶段 编译期 运行期

7、Java面向对象的三大特性

(1)封装:把一个对象的属性私有化,对外提供访问方法。
(2)继承:子类可以选择性的继承一个父类,复用父类代码。
(3)多态:父类型引用变量指向子类型对象,编译时一种状态,运行时另一种状态。


8、String,StringBuffer和StringBuilder的区别是什么?

(1)可变性
String类中的字符数组采用了final修饰,是不可变的。而StringBuilder与StringBuffer都继承AbstractStringBuilder类,在这个父类中也是采用字符数组存储字符串的&

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值