Java 深入学习指南
目录
- Java 简介
- Java 开发环境
- 安装 JDK
- 设置环境变量
- 第一个 Java 程序
- Java 基础语法
- 数据类型
- 变量
- 运算符
- 控制结构
- 面向对象编程
- 类和对象
- 继承
- 多态
- 抽象类和接口
- Java 核心类
- 字符串
- 集合框架
- 异常处理
- 高级主题
- 多线程
- 输入输出
- 网络编程
- Java 生态系统
- 常用开发工具
- 测试框架
- 常用库和框架
- 项目实战
- 开发一个简单的应用程序
- 结论
1. Java 简介
Java 是由 Sun Microsystems 开发并于 1995 年发布的一种高级编程语言。Java 的设计目标是使其具有“写一次,运行无处”的能力,即代码在任何兼容的 Java 平台上运行。Java 是一种面向对象的语言,具有简单性、安全性和可移植性。
2. Java 开发环境
安装 JDK
JDK(Java Development Kit)是用于开发 Java 应用程序的工具包。你可以从 Oracle 的官方网站下载最新版本的 JDK。
设置环境变量
安装 JDK 后,需要设置环境变量以便在命令行中使用 Java 和 javac 命令。
- 在系统环境变量中添加 JAVA_HOME 变量,指向 JDK 的安装路径。
- 在 Path 变量中添加 %JAVA_HOME%\bin。
第一个 Java 程序
创建一个简单的 Java 程序来验证安装是否成功。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
编译并运行程序:
javac HelloWorld.java
java HelloWorld
3. Java 基础语法
数据类型
Java 是一种强类型语言,所有变量都必须声明其类型。Java 提供了八种基本数据类型:
- byte
- short
- int
- long
- float
- double
- char
- boolean
变量
变量是存储数据的容器。在 Java 中,变量的声明和初始化方式如下:
int number = 10;
double price = 19.99;
char grade = 'A';
boolean isJavaFun = true;
运算符
Java 提供了多种运算符用于处理变量和数据:
- 算术运算符:
+,-,*,/,% - 关系运算符:
==,!=,>,<,>=,<= - 逻辑运算符:
&&,||,! - 赋值运算符:
=,+=,-=,*=,/=,%=
控制结构
控制结构用于控制程序的流程,包括条件语句和循环语句。
条件语句
int age = 18;
if (age >= 18) {
System.out.println("You are an adult.");
} else {
System.out.println("You are not an adult.");
}
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Other day");
break;
}
循环语句
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
i = 0;
do {
System.out.println(i);
i++;
} while (i < 5);
4. 面向对象编程
类和对象
类是对象的蓝图,定义了对象的属性和行为。对象是类的实例。
public class Dog {
String name;
int age;
void bark() {
System.out.println("Woof!");
}
}
创建对象并使用其属性和方法:
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.bark();
继承
继承允许一个类从另一个类继承属性和方法。
class Animal {
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Woof!");
}
}
Dog myDog = new Dog();
myDog.eat();
myDog.bark();
多态
多态允许使用父类引用指向子类对象。
Animal myAnimal = new Dog();
myAnimal.eat();
// myAnimal.bark(); // 编译错误
抽象类和接口
抽象类和接口用于定义类的抽象概念。
抽象类
abstract class Animal {
abstract void makeSound();
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("Woof!");
}
}
接口
interface Animal {
void makeSound();
}
class Dog implements Animal {
public void makeSound() {
System.out.println("Woof!");
}
}
5. Java 核心类
字符串
字符串是字符序列,Java 提供了丰富的字符串操作方法。
String greeting = "Hello, World!";
int length = greeting.length();
char firstChar = greeting.charAt(0);
String upperCaseGreeting = greeting.toUpperCase();
String replacedGreeting = greeting.replace("World", "Java");
集合框架
Java 提供了丰富的集合框架,包括 List、Set 和 Map。
List
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
for (String fruit : list) {
System.out.println(fruit);
}
Set
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Orange");
for (String fruit : set) {
System.out.println(fruit);
}
Map
Map<String, String> map = new HashMap<>();
map.put("name", "John");
map.put("age", "30");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
异常处理
Java 使用异常处理机制来处理运行时错误。
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero");
} finally {
System.out.println("This block is always executed");
}
6. 高级主题
多线程
Java 提供了多线程支持,用于并发执行任务。
class MyThread extends Thread {
public void run() {
System.out.println("Thread is running");
}
}
MyThread thread = new MyThread();
thread.start();
或者使用 Runnable 接口:
class MyRunnable implements Runnable {
public void run() {
System.out.println("Thread is running");
}
}
Thread thread = new Thread(new MyRunnable());
thread.start();
输入输出
Java 的 java.io 包提供了丰富的输入输出类。
文件操作
import java.io.File;
import java.io.IOException;
File file = new File("example.txt");
if (file.createNewFile()) {
System.out.println("File created: " + file.getName());
} else {
System.out.println("File already exists.");
}
文件读写
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
FileWriter writer = new FileWriter("example.txt");
writer.write("Hello, World!");
writer.close();
FileReader reader = new FileReader("example.txt");
int character;
while ((character = reader.read()) != -1) {
System.out.print((char) character);
}
reader.close();
网络编程
Java 提供了 java.net 包用于网络编程。
创建服务器
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(1234);
System.out.println("Server is listening on port 1234");
Socket socket = serverSocket.accept();
System.out.println("Client connected");
Buffered
Reader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String message = in.readLine();
System.out.println("Received: " + message);
out.println("Echo: " + message);
socket.close();
serverSocket.close();
}
}
创建客户端
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 1234);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("Hello, Server");
String response = in.readLine();
System.out.println("Received: " + response);
socket.close();
}
}
7. Java 生态系统
常用开发工具
IDE
- Eclipse
- IntelliJ IDEA
- NetBeans
构建工具
- Maven
- Gradle
测试框架
JUnit
JUnit 是一个常用的 Java 单元测试框架。
import static org.junit.Assert.*;
import org.junit.Test;
public class MyTest {
@Test
public void testAdd() {
assertEquals(2, 1 + 1);
}
}
Mockito
Mockito 是一个流行的模拟测试框架。
import static org.mockito.Mockito.*;
import org.junit.Test;
public class MyTest {
@Test
public void testMock() {
List<String> mockedList = mock(List.class);
when(mockedList.get(0)).thenReturn("first");
assertEquals("first", mockedList.get(0));
}
}
常用库和框架
Spring
Spring 是一个功能强大的 Java 框架,用于构建企业级应用。
Hibernate
Hibernate 是一个对象关系映射(ORM)框架,用于简化数据库操作。
Apache Commons
Apache Commons 是一个提供常用工具类的库。
8. 项目实战
开发一个简单的应用程序
下面是一个使用 Java 开发的简单控制台应用程序示例:一个简单的学生管理系统。
import java.util.ArrayList;
import java.util.Scanner;
class Student {
private String name;
private int age;
private String id;
public Student(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getId() {
return id;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", id='" + id + '\'' +
'}';
}
}
public class StudentManagementSystem {
private static ArrayList<Student> students = new ArrayList<>();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
while (true) {
showMenu();
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
addStudent();
break;
case 2:
viewStudents();
break;
case 3:
deleteStudent();
break;
case 4:
System.exit(0);
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
private static void showMenu() {
System.out.println("\n--- Student Management System ---");
System.out.println("1. Add Student");
System.out.println("2. View Students");
System.out.println("3. Delete Student");
System.out.println("4. Exit");
System.out.print("Enter your choice: ");
}
private static void addStudent() {
System.out.print("Enter student name: ");
String name = scanner.nextLine();
System.out.print("Enter student age: ");
int age = scanner.nextInt();
scanner.nextLine(); // Consume newline
System.out.print("Enter student ID: ");
String id = scanner.nextLine();
Student student = new Student(name, age, id);
students.add(student);
System.out.println("Student added successfully.");
}
private static void viewStudents() {
System.out.println("\n--- Student List ---");
for (Student student : students) {
System.out.println(student);
}
}
private static void deleteStudent() {
System.out.print("Enter student ID to delete: ");
String id = scanner.nextLine();
Student studentToRemove = null;
for (Student student : students) {
if (student.getId().equals(id)) {
studentToRemove = student;
break;
}
}
if (studentToRemove != null) {
students.remove(studentToRemove);
System.out.println("Student deleted successfully.");
} else {
System.out.println("Student not found.");
}
}
}
代码说明
Student类表示学生对象,包含学生的基本信息和相应的 getter 方法。StudentManagementSystem类包含主方法和系统的操作方法,包括添加学生、查看学生列表和删除学生。showMenu方法显示操作菜单。addStudent方法用于添加学生信息。viewStudents方法用于查看所有学生信息。deleteStudent方法用于删除指定 ID 的学生。
9. 结论
Java 是一种功能强大且广泛使用的编程语言,适用于各种类型的应用开发。通过学习 Java 的基础语法、面向对象编程、核心类库和高级主题,开发者可以构建高性能、可扩展的应用程序。希望这篇文章能帮助你更好地理解和使用 Java。
这篇文章涵盖了 Java 的各个方面,并提供了大量的代码示例,帮助读者更好地理解和应用 Java。