java 语言特点有哪些,核心就是跨平台 面向对象 自动垃圾回收 静态强类型 多线程原生支持 安全稳定 生态完善 支持分布式开发这几项,java 是 Sun 公司推出现在由 Oracle 维护的高级编程语言,它最标志性的特点就是一次编写到处运行,这个特性依托 JVM 虚拟机实现,也是 java 能长期在企业后端金融电商大数据领域广泛使用的关键原因,java 属于纯面向对象语言,设计上以类和对象作为代码组织核心,和 C 语言这类面向过程语言思路差别很大,同时 java 把内存回收交给 GC 自动处理,开发者不用手动释放内存,大幅降低手动内存管理带来的崩溃风险,作为静态强类型语言,所有变量必须提前声明数据类型,编译阶段就会校验类型错误,代码在大型项目长期维护的时候稳定性优势非常明显,很多初学者容易把 java 语言特点和框架特点混淆,Spring SpringBoot 是基于 java 语言开发的框架,不属于 java 语言本身的特点,学习的时候要区分清楚,理解 java 语言特点也是学习 java 的基础,面试笔试这部分属于高频考点,不仅要记住名词,还要理解每个特点背后的原理和优缺点。之所以 java 会设计成这些特性,是因为最初目标就是解决跨平台移植困难,同时提升大型应用开发的可靠性,适配企业级长期运行的业务系统。
核心特点逐项深度讲解
跨平台性
跨平台是 java 最核心特点,java 源码经过 javac 编译之后生成 class 字节码文件,字节码不直接和操作系统绑定,Windows Linux macOS 只需要安装对应版本 JVM,JVM 负责把字节码翻译成当前系统机器指令,同一份 class 文件可以在不同系统运行,这个机制也叫做一次编写到处运行,缺点是多了一层 JVM,相比 C 语言原生编译执行,会有一定性能损耗。
面向对象
java 是完全面向对象的编程语言,支持封装 继承 多态三大特性,所有代码都需要写在类里面,支持抽象类接口,这种设计适合大型项目分层开发,代码复用性强,方便多人协作开发,业务模块可以按照对象抽象建模,缺点是简单小程序写起来会比脚本语言代码结构更繁琐。
自动垃圾回收 GC
java 语言特点里面非常重要的一项就是自动垃圾回收,JVM 后台 GC 线程自动回收不再被引用的对象内存,开发者不需要手动调用释放内存代码,减少内存泄漏野指针这类问题,但是 GC 不是完全没有代价,GC 执行的时候会产生 STW 停顿,高并发场景需要做 GC 调优,属于进阶知识点。
静态强类型
静态代表编译期就确定变量类型,强类型代表类型校验严格,不能随意隐式转换,变量必须声明类型之后才能使用,编译阶段就能发现类型不匹配错误,优点是代码可读性强,大型项目重构安全,缺点是写代码要写类型声明,相比动态语言代码冗余一点。
原生多线程支持
java 语言本身内置多线程 API,可以直接创建线程,提供 synchronized volatile 线程池 并发包,天然适合高并发服务端程序,电商后台金融系统这类需要同时处理大量请求的业务,非常匹配这个特点,多线程也是 java 后端开发核心知识点。
安全性
java 自带类加载校验机制,安全沙箱,禁止直接操作底层指针,不支持指针操作,避免非法内存访问,适合网络环境下运行程序,金融政务系统对安全要求高,所以大量选用 java 语言。
健壮稳定
java 编译检查严格,异常体系完善,区分编译异常和运行异常,强制处理异常,代码出错不容易直接崩溃,适合 7 乘 24 小时长期运行的服务系统,这也是企业级应用选择 java 的重要原因。
分布式与网络支持
java 内置丰富网络编程 API,支持 TCP UDP HTTP 通信,生态配套大量分布式组件,适合开发分布式微服务系统,现在 SpringCloud 这套微服务体系就是建立在 java 语言这个基础之上。
开源生态丰富
java 拥有 Maven 中央仓库,海量第三方类库,成熟框架,社区资料非常多,遇到问题容易找到解决方案,人才储备充足,企业招人维护项目成本低。
java 语言特点汇总表格
| 特点名称 | 原理简述 | 优点 | 缺点 |
|---|---|---|---|
| 跨平台 | JVM 执行字节码 | 一套代码多系统运行 | 存在 JVM 性能损耗 |
| 面向对象 | 类对象封装继承多态 | 复用性强适合大型项目 | 简单程序代码偏繁琐 |
| 自动垃圾回收 | GC 自动回收无用对象 | 不用手动释放内存 | 存在 STW 停顿 |
| 静态强类型 | 编译期类型校验 | 错误早发现,稳定性高 | 代码类型声明较多 |
| 原生多线程 | 内置线程与并发包 | 适合高并发服务 | 并发编程难度高 |
| 安全 | 无指针 类加载校验 | 避免非法内存访问 | 灵活度低于带指针语言 |
| 健壮性 | 完善异常体系 | 长期运行稳定 | 异常处理代码增加代码量 |
补充说明
java 还有其他辅助特点,比如支持反射泛型注解,这些属于语言高级特性,面试回答 java 语言特点的时候,优先回答跨平台面向对象 GC 静态强类型多线程安全健壮这几项核心,不要把 Spring MyBatis 框架特性当成 java 语言特点。
整体来说,java 语言特点就是围绕跨平台面向对象自动内存管理高稳定高并发设计,这些特点让 java 成为企业后端开发主流语言,学习 java 的时候理解这些特点,能更好理解为什么 java 语法设计是现在这个样子,也能更好理解和 C Python 等其他语言的差别。
【常见问题】
问题 1 java 语言特点里面跨平台原理是什么
回答 1 java 语言特点里跨平台核心原理是 JVM 虚拟机,java 源码编译生成字节码,不同操作系统安装对应 JVM 执行字节码,实现一次编写到处运行,这是 java 语言特点最标志性的一项。
问题 2 java 语言特点为什么不支持指针
回答 2 java 语言特点设计上取消指针,主要是提升安全性,防止程序非法访问内存,降低内存崩溃风险,这也是 java 语言特点里面安全健壮相关设计。
问题 3 java 语言特点里自动垃圾回收是手动还是自动
回答 3 java 语言特点里自动垃圾回收是 JVM 自动执行,开发者不需要手动释放对象内存,GC 自动回收不再引用对象,这个 java 语言特点减少内存管理出错概率。
问题 4 java 语言特点属于动态类型语言吗
回答 4 java 语言特点是静态强类型,不属于动态类型语言,变量类型在编译阶段确定,编译期做类型校验,这是 java 语言特点和 Python 动态语言的核心区别。
【免责申明】
本文 java 语言特点讲解基于标准 Java 语言规范,不同 JDK 版本会新增语言新特性,本文仅作为入门学习面试参考,不代表全部语言规范细节。


