Java基础
泛用知识
Java的发展史
Java是一种广泛使用的编程语言,具有丰富的发展历史。以下是Java的主要发展阶段:
早期发展(1991-1995):
Java的起源可以追溯到1991年,最初由Sun Microsystems的詹姆斯·高斯林(James Gosling)和他的团队开发。最初,这项工作是为了创建一种能够在家用电器中运行的编程语言。 1995年,Sun发布了Java的第一个正式版本,Java 1.0。这个版本引入了Java虚拟机(JVM)和Java标准库,这两个组件至今仍然是Java的核心。崭露头角和跨平台特性(1996-2000):
Java很快就崭露头角,因为它具有跨平台兼容性。Java应用程序可以在不同操作系统上运行,只要有相应的JVM即可。这使得Java在互联网应用开发中非常受欢迎。 1996年,Java 1.1发布,增加了内部类、嵌套类和JavaBean等特性。 1998年,Java 2发布,其中包括Java 2标准版(J2SE)和Java 2企业版(J2EE),为企业级应用程序开发提供了支持。 Java的开放性和跨平台性促使它成为Web应用程序和移动应用程序开发的首选语言。开放源代码和JCP(Java Community Process)(2000-2005):
2000年,Sun发布了Java 1.3,它引入了Java命名和注解等功能。 Sun开始将Java技术标准交由Java社区(包括开发者和厂商)的JCP管理,这一决策加强了Java的开放性和民主性。 2004年,Java 5发布,引入了重要特性,如泛型、枚举和注解。这个版本改变了Java编程的方式,使代码更加简洁和类型安全。Oracle收购Sun和Java 7(2009-2011):
2009年,Oracle收购了Sun Microsystems,继承了Java技术。 2011年,Java 7发布,引入了新的语言特性,如字符串在switch语句中的支持和自动关闭资源(try-with-resources)。模块化和新版本发布(2017至今):
2017年,Java 9发布,引入了模块化系统,使得Java更具可伸缩性和性能优化。 自从Java 9之后,Oracle决定采用更快的发布周期,每6个月发布一个小版本,这使得Java保持了快速发展和更新。 Java 10、Java 11、Java 12、Java 13、Java 14等版本相继发布,每个版本都包括一些新的功能和改进。 Java 17是一个长期支持(LTS)版本,将在未来几年内获得长期支持和维护。 Java在过去几十年里持续演化,已成为一门广泛使用的编程语言,用于开发各种类型的应用程序,包括Web应用、移动应用、企业级应用和嵌入式系统。它的跨平台性、可靠性和强大的生态系统都有助于其持续流行。
什么是面向对象编程
面向对象编程(Object Oriented Programming, OOP)是一种编程范式,它以对象为基本程序单元,对象可以封装数据和行为。 面向对象编程是将现实世界的事物抽象为程序中的对象,通过对象的交互来解决问题。 面向对象编程有4个基本原则:
- 封装:通过将特征和行为封装为类,对外隐藏实现细节,提供接口供外部代码调用,提高了代码的可维护性和重用性;
- 继承:允许一个类继承另一个类的特征和行为,子类继承父类的属性和方法,并可以在此基础上进行扩展和修改;
- 多态:允许一个类有多种不同的状态,相同的方法名在不同类中可以有不同的实现,提高了代码的灵活性和扩展性;
- 抽象:通过抽象类和接口定义规范,对外隐藏具体的实现细节,实现可以根据需要变化,同时提供了规范和约束。
软件设计原则
软件设计原则是在软件工程中用来指导和评估软件系统设计的一些基本指导方针和规则。这些原则有助于创建可维护、可扩展和高质量的软件。以下是一些常见的软件设计原则:
单一职责原则(Single Responsibility Principle - SRP):
- 一个类应该只有一个引起变化的原因,即一个类应该只有一个责任。
开放封闭原则(Open-Closed Principle - OCP):
- 软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着你应该能够扩展系统的行为而不必修改现有代码。
里氏替换原则(Liskov Substitution Principle - LSP):
- 子类应该能够替换父类而不引起错误。这是面向对象编程中继承的基本原则。
依赖倒置原则(Dependency Inversion Principle - DIP):
- 高级模块不应该依赖于低级模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
接口隔离原则(Interface Segregation Principle - ISP):
- 不应该强制客户端代码依赖于它们不使用的接口。一个类不应该强制实现它不需要的接口。
合成/聚合复用原则(Composition/Aggregation Reuse Principle - CARP):
- 优先使用对象组合(合成)或聚合关系,而不是继承来实现代码复用。
迪米特法则(Law of Demeter - LoD):
- 对象之间的交互应该是最小的,一个对象不应该了解太多其他对象的细节。
最少知识原则(Least Knowledge Principle - LKP):
- 一个类应该只与它的朋友交流,而不与陌生对象交流。这有助于减少对象之间的耦合度。
均衡性原则(Principle of Least Astonishment - POLA):
- 软件设计和用户界面应该遵循用户的预期,不应该让用户感到惊讶或困惑。
这些原则有助于提高代码质量、可维护性和可扩展性,它们通常与设计模式和编程范例一起使用,帮助开发者创建高质量的软件系统。在实际软件开发中,经常需要根据具体情况灵活应用这些原则。
其中(1~5)比较重要的几个原则合并起来叫做SOLID: