手记

Java主流技术入门详解

概述

本文全面介绍了Java主流技术入门的相关内容,涵盖开发环境搭建、基础语法、面向对象编程、常用API、网络编程以及小项目实战演练。通过这些内容,读者可以系统地学习和掌握Java开发的核心技能。

Java开发环境搭建

Java开发工具安装

Java开发环境搭建是每一个Java开发者的起点。以下是安装Java开发工具的步骤。

安装JDK

JDK(Java Development Kit)是Java开发工具包,包含了Java运行环境(JRE)和Java开发工具。以下是安装JDK的步骤:

  1. 下载JDK
    访问Oracle官网(https://www.oracle.com/java/technologies/javase-jdk17-downloads.html)或OpenJDK官网(https://openjdk.java.net/install/),选择合适的版本下载安装包

  2. 安装JDK
    运行下载的安装包,按照提示进行安装。默认安装路径通常为 C:\Program Files\Java\jdk-<版本号>

安装IDE

集成开发环境(IDE)是编写和调试Java代码的重要工具。以下是安装一个流行的IDE Eclipse的步骤:

  1. 下载Eclipse
    访问Eclipse官网(https://www.eclipse.org/downloads/),选择Eclipse IDE for Java Developers版本下载。

  2. 安装Eclipse
    解压下载的压缩包,运行 eclipse.exe,即可启动Eclipse。

配置Java环境变量

配置Java环境变量是确保Java应用程序能正确运行的关键步骤。

设置Path变量

  1. 编辑系统环境变量

    • 在Windows中,右键点击“此电脑”或“计算机”,选择“属性”。
    • 点击“高级系统设置”。
    • 点击“环境变量”按钮。
    • 在“系统变量”区域,找到 Path 变量,点击“编辑”。
  2. 添加JDK路径
    • 在编辑框中,点击“新建”,然后填入 C:\Program Files\Java\jdk-<版本号>\bin
    • 确保 Path 变量中的路径是分号分隔的,例如:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin

验证安装

安装完成后,可以在命令行中输入以下命令验证JDK是否安装成功:

java -version
javac -version

这两个命令会分别显示Java版本和Java编译器版本。

Java基础语法入门

数据类型与变量

Java语言提供了多种数据类型,包括基本类型和引用类型。基本类型包括整型、浮点型、字符型和布尔型。

整型

整型数据类型包括 byte, short, int, long

byte b = 127;
short s = 32767;
int i = 10000;
long l = 10000000000L;

浮点型

浮点型数据类型包括 floatdouble

float f = 3.14f;
double d = 3.14159;

字符型

字符型数据类型是 char

char c = 'A';

布尔型

布尔型数据类型是 boolean

boolean bl = true;

变量声明

变量声明需要指定数据类型和变量名。

int age = 20;
double price = 19.99;
String name = "Tom";
boolean active = true;

控制结构

Java中的控制结构主要包括条件判断语句、循环语句和跳转语句。

条件判断语句

条件判断语句包括 ifswitch

int num = 10;

if (num > 0) {
    System.out.println("num is positive");
} else if (num < 0) {
    System.out.println("num is negative");
} else {
    System.out.println("num is zero");
}

switch (num) {
    case 10:
        System.out.println("num is 10");
        break;
    case 20:
        System.out.println("num is 20");
        break;
    default:
        System.out.println("num is neither 10 nor 20");
}

循环语句

循环语句包括 for, while, 和 do-while

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

int j = 0;
while (j < 5) {
    System.out.println(j);
    j++;
}

int k = 0;
do {
    System.out.println(k);
    k++;
} while (k < 5);

跳转语句

跳转语句包括 breakcontinue

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
    System.out.println(i);
}

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println(i);
}

函数与方法

Java中的函数称为方法,方法是封装了一段代码块,用于完成特定功能。

方法定义

方法定义的语法如下:

[访问修饰符] 返回类型 方法名(参数列表) {
    方法体
}

例如:

public int add(int a, int b) {
    return a + b;
}

方法调用

调用方法的基本语法如下:

方法名(实参列表);

例如:

int result = add(3, 5);
System.out.println(result);

类方法与实例方法

Java类中的方法分为类方法(静态方法)和实例方法。

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public static void printHello() {
        System.out.println("Hello, World!");
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int result = calc.add(3, 5);
        System.out.println(result);

        Calculator.printHello();
    }
}
Java面向对象编程

类与对象

在Java中,类和对象是面向对象编程的核心概念。类是对象的模板或蓝图,对象是类的实例。

定义类

定义类的基本语法如下:

public class ClassName {
    // 成员变量
    int age;

    // 构造方法
    public ClassName(int age) {
        this.age = age;
    }

    // 成员方法
    public void sayHello() {
        System.out.println("Hello, I'm " + age);
    }
}

创建对象

创建对象的基本语法如下:

ClassName obj = new ClassName(20);

访问成员变量和调用成员方法

obj.sayHello();  // 输出 "Hello, I'm 20"

继承与多态

继承是面向对象编程的重要特性,允许一个类继承另一个类的属性和方法。

继承定义

定义继承的基本语法如下:

public class ChildClass extends ParentClass {
    // 重写父类方法
    @Override
    public void sayHello() {
        System.out.println("Hello from ChildClass");
    }
}

多态

多态是指允许不同类的对象通过统一的接口来访问,从而使得代码更加灵活和可扩展。

public class Main {
    public static void main(String[] args) {
        ParentClass obj = new ChildClass();
        obj.sayHello();  // 输出 "Hello from ChildClass"
    }
}

接口与抽象类

接口和抽象类是Java中实现多态和代码重用的重要工具。

接口定义

接口定义的基本语法如下:

public interface MyInterface {
    void myMethod();
}

实现接口

实现接口的基本语法如下:

public class MyClass implements MyInterface {
    @Override
    public void myMethod() {
        System.out.println("MyMethod implemented");
    }
}

抽象类定义

抽象类定义的基本语法如下:

public abstract class AbstractClass {
    public abstract void myMethod();
}

继承抽象类

继承抽象类的基本语法如下:

public class ConcreteClass extends AbstractClass {
    @Override
    public void myMethod() {
        System.out.println("MyMethod implemented");
    }
}
Java常用API介绍

输入输出流

Java提供了丰富的输入输出流类来处理文件读写操作。

文件读写

import java.io.*;

public class FileReadWrite {
    public static void main(String[] args) {
        try {
            // 写入文件
            String content = "Hello, World!";
            File file = new File("output.txt");
            FileWriter writer = new FileWriter(file);
            writer.write(content);
            writer.close();

            // 读取文件
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = reader.readLine();
            System.out.println(line);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

集合框架

Java集合框架提供了多种数据结构来高效地存储和操作对象集合,如 List, Set, 和 Map

List

import java.util.*;

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        System.out.println("List content: " + list.toString());

        // 遍历List
        for (String item : list) {
            System.out.println(item);
        }
    }
}

Set

import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");

        System.out.println("Set content: " + set.toString());

        // 遍历Set
        for (String item : set) {
            System.out.println(item);
        }
    }
}

Map

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");

        System.out.println("Map content: " + map.toString());

        // 遍历Map
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

异常处理

Java中的异常处理机制允许程序在运行时捕获和处理错误。

异常捕获

import java.io.*;

public class ExceptionHandling {
    public static void main(String[] args) {
        try {
            // 执行可能引发异常的操作
            int result = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException caught");
        } finally {
            System.out.println("Finally block executed");
        }

        try {
            System.out.println("Opening file");
            File file = new File("nonexistent.txt");
            FileReader reader = new FileReader(file);
            reader.close();
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException caught");
        } catch (IOException e) {
            System.out.println("IOException caught");
        } finally {
            System.out.println("Finally block executed");
        }
    }
}
Java网络编程基础

Socket编程

Socket编程是实现网络通信的基础,Java中的Socket API提供了丰富的网络编程支持。

TCP客户端

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) {
        String serverName = "localhost";
        int port = 8080;
        try {
            Socket clientSocket = new Socket(serverName, port);

            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            out.println("Hello, Server!");
            String response = in.readLine();
            System.out.println("Received: " + response);

            out.close();
            in.close();
            clientSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

TCP服务器端

import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) {
        int port = 8080;
        try {
            ServerSocket serverSocket = new ServerSocket(port);
            System.out.println("Server started, waiting for clients...");

            Socket clientSocket = serverSocket.accept();
            System.out.println("Client connected");

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            String clientMessage = in.readLine();
            System.out.println("Received from client: " + clientMessage);
            out.println("Hello, Client!");

            in.close();
            out.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

HTTP请求处理

Java提供了 java.net.HttpURLConnection 类来处理HTTP请求。

GET请求

import java.net.*;

public class HTTPGetRequest {
    public static void main(String[] args) {
        String url = "http://example.com";
        try {
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("GET");
            int responseCode = con.getResponseCode();
            System.out.println("GET Response Code : " + responseCode);
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            System.out.println("GET Response : " + response.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

POST请求

import java.io.*;
import java.net.*;

public class HTTPPostRequest {
    public static void main(String[] args) {
        String url = "http://example.com";
        String param = "param1=value1&param2=value2";
        try {
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("POST");
            con.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
            wr.writeBytes(param);
            wr.flush();
            wr.close();

            int responseCode = con.getResponseCode();
            System.out.println("POST Response Code : " + responseCode);
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            System.out.println("POST Response : " + response.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Java项目实战演练

小项目选题

选择一个适合初学者的小项目来实践Java编程技能。例如,一个简单的图书管理系统。

需求分析

  • 用户可以添加图书信息。
  • 用户可以删除图书信息。
  • 用户可以查询图书信息。
  • 用户可以列出所有的图书信息。

数据结构设计

定义一个 Book 类来表示图书信息。

public class Book {
    private String title;
    private String author;
    private String isbn;

    public Book(String title, String author, String isbn) {
        this.title = title;
        this.author = author;
        this.isbn = isbn;
    }

    public String getTitle() {
        return title;
    }

    public String getAuthor() {
        return author;
    }

    public String getIsbn() {
        return isbn;
    }

    @Override
    public String toString() {
        return "Book{" +
                "title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", isbn='" + isbn + '\'' +
                '}';
    }
}

定义一个 Library 类来管理图书信息。

import java.util.*;

public class Library {
    private List<Book> books;

    public Library() {
        books = new ArrayList<>();
    }

    public void addBook(String title, String author, String isbn) {
        Book book = new Book(title, author, isbn);
        books.add(book);
    }

    public void removeBook(String isbn) {
        for (Book book : books) {
            if (book.getIsbn().equals(isbn)) {
                books.remove(book);
                break;
            }
        }
    }

    public void findBook(String isbn) {
        for (Book book : books) {
            if (book.getIsbn().equals(isbn)) {
                System.out.println("Book found: " + book);
                return;
            }
        }
        System.out.println("Book not found with ISBN: " + isbn);
    }

    public void listBooks() {
        for (Book book : books) {
            System.out.println(book);
        }
    }
}

主程序

编写主程序来实现图书管理功能。

public class Main {
    public static void main(String[] args) {
        Library library = new Library();

        // 添加图书
        library.addBook("Java Programming", "John Doe", "1234567890");
        library.addBook("Python Programming", "Jane Smith", "0987654321");
        library.addBook("C++ Programming", "Alice Johnson", "1122334455");

        // 列出所有图书
        library.listBooks();

        // 查找图书
        library.findBook("1234567890");

        // 删除图书
        library.removeBook("0987654321");

        // 再次列出所有图书
        library.listBooks();
    }
}

代码实现与测试

在完成代码实现后,可以通过编写单元测试来确保代码的正确性和稳定性。

单元测试

import org.junit.jupiter.api.Test;
import java.util.*;

import static org.junit.jupiter.api.Assertions.*;

public class LibraryTest {
    @Test
    public void testAddBook() {
        Library library = new Library();
        library.addBook("Java Programming", "John Doe", "1234567890");
        assertEquals(1, library.books.size());
    }

    @Test
    public void testRemoveBook() {
        Library library = new Library();
        library.addBook("Java Programming", "John Doe", "1234567890");
        library.removeBook("1234567890");
        assertEquals(0, library.books.size());
    }

    @Test
    public void testFindBook() {
        Library library = new Library();
        library.addBook("Java Programming", "John Doe", "1234567890");
        library.findBook("1234567890");
        assertNotNull(library.findBook("1234567890"));
    }

    @Test
    public void testListBooks() {
        Library library = new Library();
        library.addBook("Java Programming", "John Doe", "1234567890");
        library.addBook("Python Programming", "Jane Smith", "0987654321");
        assertEquals(2, library.books.size());
    }
}
0人推荐
随时随地看视频
慕课网APP