Java 是什么?
Java 是一种高级、面向对象的编程语言,设计目的是平台无关性,允许开发者"一次编写,到处运行"(WORA)。这意味着 Java 代码在一个平台上编译后,可以在任何支持 Java 的平台上运行,而无需重新编译。
Java 的历史
- 由詹姆斯·高斯林和 Sun Microsystems 于 1991 年发明。
- 初始名称:Oak(以高斯林办公室外的橡树命名)。
- 更名为 Green ,然后改为 Java Coffee (受印尼咖啡启发),最终在 1995 年简化为 Java。
Java 用于什么?
Java 广泛应用于多个领域,包括:
- Web 和移动应用:Android 应用开发、Web 应用和 Web 控制台。
- 桌面应用:计算机和其他设备的软件。
- 嵌入式系统:电视、空调、洗衣机等设备。
- 游戏开发:简单和复杂的游戏。
- 金融服务:银行应用、在线交易和金融系统。
- 在线服务:注册表单、电子商务和其他基于 Web 的服务。
Java 基于什么?
Java 基于 C 和 C++。主要组件包括:
- 编译器:将 Java 源代码转换为字节码。
- Java 虚拟机(JVM):以平台无关的方式执行字节码。
- 运行时环境:提供必要的库和支持,以便运行 Java 应用程序。
Java 的版本
- Java 标准版(Java SE) :
- 核心库和 API。
- 适用于通用应用程序。
- Java 企业版(Java EE) :
- 包括 Java API,如 JMS、EJB、JSP/Servlet 等。
- 适用于企业级应用。
- Java 微型版(Java ME) :
- 用于在手机、机顶盒、手持设备等上编程。
- 适用于资源受限的设备。
Java 的概念和特性
Java 概念
Java 的核心概念是其面向对象编程(OOP)特性。OOP 通过提供一些概念简化了软件和应用的开发和维护:
- 对象:对象是一个具有状态和行为的实体。例如,狗可以被视为一个对象,有颜色、品种和名字等属性,以及吠叫和吃东西等行为。
- 类:类是多个对象的集合。它是创建对象的蓝图。类用于组织代码,就像超市中水果、蔬菜和药品被分成不同的区域一样。
- 构造函数:构造函数看起来像一个方法,但它不是。它的名称与类名相同,且不返回任何值。
- 继承:继承是指一个类获取父类的属性和行为的概念。
- 多态:多态是指以不同方式执行同一任务的过程。它允许程序员在不同上下文中使用同一个词表示不同的意思。
- 抽象:抽象用于隐藏内部细节,只显示相关的必要细节。
- 封装:将代码和数据绑定在一起形成一个单一单元(如胶囊)称为封装。Java 类就是一个封装的例子。
Java 特性
Java 具有许多特性和品质,包括:
- 简单的语法:非常容易理解和学习。
- 健壮性:消除了 C 和 C++ 中常见的错误。
- 包含垃圾回收和异常处理等特性。
- 可移植性:Java 可以在任何平台上运行。
- 安全性:Java 是安全的,支持多任务处理。
- 性能:虽然不如 C 和 C++ 快,但提供了比其他语言更高的性能。
Java 的组件
Java 编程语言有三个主要组件:
- Java 虚拟机(JVM) :
- 提供一个平台无关的 Java 组件,为执行 Java 程序提供环境。JVM 加载代码、验证代码、执行代码并提供运行时环境。
- Java 运行时环境(JRE) :
- 构建一个环境,使 Java 文件可以运行和执行。JRE 是一个包含 JVM、Java 类库和 Java 类加载器的软件包。
- Java 开发工具包(JDK) :
- JRE 的超集,是一个用于开发 Java 应用程序和小程序的软件开发环境。JDK 包括一个私有的 JVM 和一些其他资源,以完成 Java 应用程序的开发。
Java 面向对象编程(OOP)概念
面向对象编程(OOP)是 Java 的核心概念之一,它通过四个主要原则来简化软件和应用的开发及维护。这四个原则是:
- 抽象(Abstraction)
- 封装(Encapsulation)
- 多态(Polymorphism)
- 继承(Inheritance)
1. 抽象(Abstraction)
抽象(Abstraction)是面向对象编程(OOP)中的一个核心概念,它指的是展示对象的相关细节,同时隐藏不必要的内部实现细节。通过抽象,可以减少复杂性,提高代码的可读性和可维护性。抽象帮助我们关注高层逻辑,而不是具体的实现细节。
抽象的两个主要方面
- 数据抽象:只展示对象的必要属性,隐藏内部数据结构。
- 过程抽象:只展示对象的方法签名,隐藏方法的具体实现。
抽象的实现方式
在 Java 中,抽象可以通过以下几种方式实现:
-
抽象类(Abstract Class):
- 抽象类是不能被实例化的类,只能被继承。
- 抽象类可以包含抽象方法(没有具体实现的方法)和非抽象方法(有具体实现的方法)。
- 子类必须实现抽象类中的所有抽象方法。
-
接口(Interface):
- 接口是一组抽象方法的集合。
- 实现接口的类必须实现接口中定义的所有方法。
- 从 Java 8 开始,接口可以包含默认方法(default methods)和静态方法(static methods)。
示例
抽象类
java
// 定义一个抽象类
abstract class Animal {
// 抽象方法
public abstract void makeSound();
// 非抽象方法
public void breathe() {
System.out.println("Breathing...");
}
}
// 定义一个具体的子类
class Dog extends Animal {
// 实现抽象方法
@Override
public void makeSound() {
System.out.println("Barking...");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound(); // Barking...
dog.breathe(); // Breathing...
}
}
在这个例子中,Animal
是一个抽象类,包含一个抽象方法 makeSound
和一个非抽象方法 breathe
。Dog
类继承了 Animal
类,并实现了 makeSound
方法。通过这种方式,Dog
类只需要关注如何实现 makeSound
方法,而不需要关心 breathe
方法的具体实现。
** 接口**
java
// 定义一个接口
interface Drawable {
// 抽象方法
void draw();
// 默认方法(Java 8+)
default void erase() {
System.out.println("Erasing...");
}
// 静态方法(Java 8+)
static void printMessage() {
System.out.println("This is a drawable object.");
}
}
// 实现接口的类
class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class InterfaceExample {
public static void main(String[] args) {
Circle circle = new Circle();
circle.draw(); // Drawing a circle
circle.erase(); // Erasing...
Drawable.printMessage(); // This is a drawable object.
}
}
在这个例子中,Drawable
是一个接口,包含一个抽象方法 draw
、一个默认方法 erase
和一个静态方法 printMessage
。Circle
类实现了 Drawable
接口,并提供了 draw
方法的具体实现。通过接口,Circle
类可以使用 Drawable
接口中定义的默认方法和静态方法,而不需要自己实现这些方法。
2. 封装(Encapsulation)
封装类似于胶囊,将整个代码和所有数据绑定在一起形成一个单一的单元。所有的方法和变量都存储在同一个类名下,同一个类的对象可以使用它们。
示例 :
在一个 BankAccount
类中,封装了账户信息和操作方法。
java
public class BankAccount {
private String accountNumber;
private double balance;
// 构造函数
public BankAccount(String accountNumber, double initialBalance) {
this.accountNumber = accountNumber;
this.balance = initialBalance;
}
// 存款方法
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
// 取款方法
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
return true;
}
return false;
}
// 获取余额
public double getBalance() {
return balance;
}
}
3. 多态(Polymorphism)
多态是指以不同的方式执行同一任务。一个方法可以用于不同的任务。多态分为编译时多态(方法重载)和运行时多态(方法重写)。
示例 :
draw
方法可以用于绘制不同的形状,如三角形、矩形或圆形。
java
interface Shape {
void draw();
}
class Triangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a triangle");
}
}
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class PolymorphismExample {
public static void main(String[] args) {
Shape triangle = new Triangle();
Shape rectangle = new Rectangle();
Shape circle = new Circle();
triangle.draw(); // Drawing a triangle
rectangle.draw(); // Drawing a rectangle
circle.draw(); // Drawing a circle
}
}
4. 继承(Inheritance)
当一个类继承另一个类的某些属性和方法时,称为继承。继承关系中总是有一个超类(父类)和一个子类(子类)。子类继承超类的属性和方法。
示例 :
Animal
是超类,具有 eat
和 sleep
方法。Reptile
、Mammal
和 Human
是子类,继承了这些方法。
java
class Animal {
public void eat() {
System.out.println("Eating...");
}
public void sleep() {
System.out.println("Sleeping...");
}
}
class Reptile extends Animal {
public void crawl() {
System.out.println("Crawling...");
}
}
class Mammal extends Animal {
public void walk() {
System.out.println("Walking...");
}
}
class Human extends Mammal {
public void speak() {
System.out.println("Speaking...");
}
}
public class InheritanceExample {
public static void main(String[] args) {
Reptile reptile = new Reptile();
Mammal mammal = new Mammal();
Human human = new Human();
reptile.eat(); // Eating...
reptile.sleep(); // Sleeping...
reptile.crawl(); // Crawling...
mammal.eat(); // Eating...
mammal.sleep(); // Sleeping...
mammal.walk(); // Walking...
human.eat(); // Eating...
human.sleep(); // Sleeping...
human.walk(); // Walking...
human.speak(); // Speaking...
}
}
如何学习 Java?
Java 是最常用的编程语言之一,主要是因为 Java 自然多才多艺、可靠且兼容。如果你想开始编程职业生涯,拥有一项 Java 技能是非常有价值的。以下是一些入门建议:
- 从 Java 编程的基础开始(变量、数据类型、条件语句、数组、循环、函数)。
- 阅读 Java 编程书籍,以理解基本概念。
- 学习高级主题(面向对象编程、继承、抽象类、Java 接口、集合、异常处理、包装类)。
- 定期练习编码,从实践中学习。
- 阅读文章和最新的 Java 文档,保持更新。
Java 示例程序
Hello World 程序
java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
不使用临时变量交换两个数字
java
public class SwapNumbers {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("Before swapping:");
System.out.println("a = " + a);
System.out.println("b = " + b);
// 不使用临时变量交换两个数字
a = a + b;
b = a - b;
a = a - b;
System.out.println("After swapping:");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
希望这些信息对你有所帮助!