说一下Java的特点?
- 跨平台:Java编译器将源代码运行成字节码,字节码可以在任何安装了Java虚拟机的系统上运行。(JVM:Java虚拟机,使Java可以一次编写到处运行。)
- 面向对象:Java除了8种基本数据类型外,其余都是对象。包括类、封装、继承、多态、抽象。(OOP)
- 强大的生态:有丰富的框架、库、工具、活跃的社区、企业级支持。
- 内存管理:Java自动管理内存和回收不再使用的对象,不需要开发者手动管理,减少内存泄露。
1.跨平台
Java编译器将源代码运行成字节码,字节码可以在任何安装了Java虚拟机的系统上运行。(JVM:Java虚拟机,使Java可以一次编写到处运行。)
2.面向对象
Java除了8种基本数据类型外,其余都是对象。包括类、封装、继承、多态、抽象。(OOP)
- 非对象(Primitive Types):8种基本数据类型直接存储在栈内存中,按值传递
基本类型 | 大小 | 默认值 | 包装类 (对象形式) |
| 1字节 |
|
|
| 2字节 |
|
|
| 4字节 |
|
|
| 8字节 |
|
|
| 4字节 |
|
|
| 8字节 |
|
|
| 2字节 |
|
|
| - |
|
|
- 对象(Object):包含属性和方法,是类Class的具体实例。存储在堆内存中,通过引用访问。(类是蓝图,对象是根据蓝图建造的房子)
-
- 所有引用类型:
-
-
- 类实例(
new MyClass()
) - 数组(
int[] arr = new int[5]
,数组也是对象) - 字符串(
String s = "Hello"
,本质是char[]
的封装) - 集合(
ArrayList
、HashMap
等)
- 类实例(
-
-
- 一切继承自
Object
:
Java中所有类隐式或显式继承Object
,因此对象可调用toString()
、equals()
等方法。
- 一切继承自
现实世界 | 面向对象编程 |
一辆具体的汽车 | 对象 |
汽车的设计图 | 类 |
汽车的颜色/型号 | 属性 |
汽车的启动/刹车 | 方法 |
3.强大的生态:
有丰富的框架、库、工具、活跃的社区、企业级支持。
1. 丰富的框架:
-
- Spring框架:是Java生态的基石,提供全面的企业级开发支持。
-
-
- Spring Core:IoC(控制反转)和 DI(依赖注入)容器,管理对象生命周期。
- Spring MVC:基于 Servlet 的 Web 框架,支持 RESTful API 开发。
- Spring Boot:“约定优于配置”,快速搭建独立运行的微服务应用(内嵌 Tomcat/Jetty)。
- Spring Data:简化数据库访问(支持 JPA、MongoDB、Redis 等)。
- Spring Security:认证(OAuth2/JWT)和授权(RBAC)解决方案。
- Spring Cloud:微服务架构支持(服务发现、负载均衡、配置中心等)。
-
-
- 有标准的ORM规范:JPA,和它的实现Hibernate
-
-
- ORM:对象关系映射
- JPA:Java Persistence API,标准的ORM规范
- Hibernate:最流行的 ORM(对象关系映射)框架,将 Java 对象映射到数据库表。
-
避免手写 SQL,提高开发效率。
2. 数据库
(1) 关系型数据库
-
- JDBC:标准数据库连接接口。
- MyBatis:半 ORM 框架,灵活编写 SQL。
- Liquibase/Flyway:数据库迁移工具(版本控制)。
(2) NoSQL键值型数据库
-
- MongoDB(文档数据库,Spring Data MongoDB)
- Redis(内存缓存,Redisson/Jedis 客户端)
- Elasticsearch(全文搜索引擎)
(3) 大数据
-
- Hadoop(分布式存储与计算)
- Spark(内存计算,Java/Scala API)
- Flink(流处理框架)
3. 工具
(1) 构建工具
-
- Maven:基于 XML 的依赖管理(
pom.xml
),支持项目生命周期管理。 - Gradle:基于 Groovy/Kotlin DSL,比 Maven 更灵活(Android 官方构建工具)。
- Ant:较老,但仍有遗留项目使用。
- Maven:基于 XML 的依赖管理(
(2) IDE(集成开发环境)
-
- IntelliJ IDEA(最智能,社区版免费)
- Eclipse(插件丰富,免费开源)
- VS Code + Java 扩展(轻量级选择)
(3) 测试工具
-
- JUnit:单元测试框架(
@Test
注解)。 - Mockito:模拟对象(Mocking),用于隔离测试。
- TestNG:更灵活的测试框架(支持参数化测试)。
- JUnit:单元测试框架(
(4) 持续集成/部署(CI/CD)
-
- Jenkins:自动化构建、测试、部署。
- GitLab CI/CD:集成 Git 仓库的流水线。
- SonarQube:代码质量分析(检测 Bug、代码异味)。