为了账号安全,请及时绑定邮箱和手机立即绑定

Java主流技术教程:从入门到实战

概述

Java主流技术教程全面覆盖了Java编程的基础至实战,从变量与数据类型到面向对象编程,集合框架,Java IO流,多线程与并发,直至Java Web开发基础。每部分均以实际代码示例展开,旨在构建开发者从理论到实践的全面理解。通过逐步深入的学习,读者能够掌握构建高效Java应用的关键技能。

Java基础语法
变量与数据类型

在Java中,变量用于存储数据。声明变量时,需要指定变量的类型以及变量名。数据类型决定变量可以存储的数据种类和范围。以下是一些基本的数据类型示例:

int age; // 声明一个整型变量
double height; // 声明一个浮点型变量
char gender; // 声明一个字符型变量
boolean isStudent; // 声明一个布尔型变量
String name; // 声明一个字符串变量
控制流程:if, for, while循环

Java提供了多种控制流程结构,如if语句用于条件判断,forwhile循环用于重复执行代码块。

if语句

int score = 85;
if (score >= 90) {
    System.out.println("优等生");
} else if (score >= 70) {
    System.out.println("良等生");
} else {
    System.out.println("需要努力");
}

for循环

for (int i = 1; i <= 10; i++) {
    System.out.println("我爱学习第 " + i + " 天");
}

while循环

int count = 0;
while (count < 10) {
    System.out.println("循环计数:" + count);
    count++;
}
函数与方法

Java中的函数通过方法实现,方法可以接收参数并返回值。

public static void printGreeting(String name) {
    System.out.println("你好," + name);
}

public static int addNumbers(int a, int b) {
    return a + b;
}
异常处理

Java使用异常处理机制来处理程序运行中可能出现的错误。

try {
    int x = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("除数不能为零:" + e.getMessage());
}
类与对象基础

类是对象的模板,对象是类的实例。

class Student {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void study() {
        System.out.println(name + "正在学习");
    }
}

public class Main {
    public static void main(String[] args) {
        Student alice = new Student("Alice", 20);
        alice.study();
    }
}
面向对象编程

面向对象编程(OOP)是Java的核心特性,包括封装、继承和多态。

封装

封装是将数据和操作数据的函数绑定在一起,形成一个单独的实体。

class Account {
    private double balance;

    // 公开方法访问私有数据
    public void deposit(double amount) {
        balance += amount;
    }

    public double getBalance() {
        return balance;
    }
}
继承与多态

继承允许类重用已有的类,多态则允许子类实现父类的方法。

class Animal {
    public void makeSound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪叫");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Animal dog = new Dog();
        animal.makeSound();
        dog.makeSound();
    }
}
接口与抽象类

接口定义了一组方法,抽象类可以包含未实现的方法。

interface Flyable {
    void fly();
}

abstract class Bird implements Flyable {
    public void eat() {
        System.out.println("吃虫子");
    }

    @Override
    public void fly() {
        System.out.println("鸟儿飞");
    }
}

public class Pigeon extends Bird {
    public static void main(String[] args) {
        Bird bird = new Pigeon();
        bird.eat();
        bird.fly();
    }
}
集合框架

Java集合框架提供了一组通用的接口和实现类,用于操作数据集合。

List、Set、Map的使用
import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("苹果");
        fruits.add("香蕉");

        Set<String> uniqueFruits = new HashSet<>(fruits);

        Map<String, Integer> fruitCounts = new HashMap<>();
        fruitCounts.put("苹果", 1);
        fruitCounts.put("香蕉", 2);

        System.out.println("唯一水果:" + uniqueFruits);
        System.out.println("水果计数:" + fruitCounts);
    }
}
集合迭代与排序
List<Integer> numbers = Arrays.asList(5, 2, 9, 1, 4);
Collections.sort(numbers);
for (int num : numbers) {
    System.out.println(num);
}
高级集合类如ArrayList、HashMap

这些集合类提供了更高级的功能和性能优化。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");

        HashMap<String, String> personNames = new HashMap<>();
        personNames.put("Alice", "123");
        personNames.put("Bob", "456");

        System.out.println("姓名列表:" + names);
        System.out.println("姓名和ID:" + personNames);
    }
}
Java IO流

处理文件和输入输出是Java编程中的重要部分。

输入输出流基础
import java.io.*;

public class Main {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("test.txt");
             PrintWriter writer = new PrintWriter(fos)) {
            writer.println("你好,世界");
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (FileInputStream fis = new FileInputStream("test.txt");
             BufferedReader reader = new BufferedReader(new InputStreamReader(fis))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
文件和目录操作
import java.io.File;

public class Main {
    public static void main(String[] args) {
        File dir = new File("myDir");
        if (!dir.exists()) {
            dir.mkdirs();
        }

        File file = new File("myDir/important.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        File[] files = dir.listFiles();
        for (File f : files) {
            System.out.println(f.getName());
        }
    }
}
字节流与字符流的使用
import java.io.*;

public class Main {
    public static void main(String[] args) {
        try (InputStream is = new FileInputStream("input.txt");
             OutputStream os = new FileOutputStream("output.txt")) {
            int ch;
            while ((ch = is.read()) != -1) {
                os.write(ch);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
多线程与并发

Java提供了丰富的多线程支持。

线程基础与创建
class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("线程:" + Thread.currentThread().getName());
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}
同步机制(synchronized、lock)
class Counter {
    private int count = 0;

    public void increment() {
        synchronized (this) {
            count++;
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Counter counter = new Counter();
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 10000; i++) {
                counter.increment();
            }
        });
        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 10000; i++) {
                counter.increment();
            }
        });
        t1.start();
        t2.start();
        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Count: " + counter.getCount());
    }
}
高级线程库(Future、Executor框架)
import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(3);
        Future<Integer> future = executor.submit(() -> {
            int result = 1;
            for (int i = 1; i <= 100; i++) {
                result *= i;
            }
            return result;
        });
        System.out.println("结果:" + future.get());
        executor.shutdown();
    }
}
Java Web开发基础

Java Web开发使用Servlet和JSP等技术。

Servlet与JSP简介
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HelloWorldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("你好,世界");
    }
}

public static void main(String[] args) {
    try {
        String host = "localhost";
        int port = 8080;
        String contextPath = "";
        String url = "http://" + host + ":" + port + contextPath;
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
数据库连接与ORM

使用数据访问对象(DAO)模式或ORM框架如MyBatis或Hibernate实现数据库操作。

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;

public class Main {
    public static void main(String[] args) {
        InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
        SqlSession session = factory.openSession();
        try {
            // ORM操作示例
            // 使用MyBatis执行SQL语句获取数据
        } finally {
            session.close();
        }
    }
}
实战项目

构建一个简单的Web应用,实现用户注册、登录和数据库连接。

构建一个简单的Web应用

使用Java Servlet和JSP实现一个登录界面。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if (username.equals("admin") && password.equals("password")) {
            response.sendRedirect("welcome.jsp");
        } else {
            response.sendRedirect("login.jsp");
        }
    }
}

创建login.jsp用于显示登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
    <form action="LoginServlet" method="post">
        用户名: <input type="text" name="username"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

创建welcome.jsp用于显示欢迎信息:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎页面</title>
</head>
<body>
    <h1>欢迎, admin!</h1>
</body>
</html>
整合数据库,实现增删查改操作

使用JDBC或ORM框架连接数据库并执行数据库操作。

import java.sql.*;
import java.util.*;

public class UserDAO {
    private static final String URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USER = "root";
    private static final String PASS = "password";
    private static Connection conn = null;

    public List<User> getAllUsers() {
        List<User> users = new ArrayList<>();
        try {
            conn = DriverManager.getConnection(URL, USER, PASS);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                User user = new User(rs.getInt("id"), rs.getString("name"), rs.getString("email"));
                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return users;
    }

    public void addUser(User user) {
        try {
            conn = DriverManager.getConnection(URL, USER, PASS);
            PreparedStatement stmt = conn.prepareStatement("INSERT INTO users (name, email) VALUES (?, ?)");
            stmt.setString(1, user.getName());
            stmt.setString(2, user.getEmail());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 删除用户、更新用户等方法
}

这个引导性的Java基础到实战教程涵盖了从基本语法到实际项目开发所需的关键概念。每一步都提供了代码示例和逐步的实战案例,帮助开发者从理论走向实践。通过不断练习和理解这些概念,你将能够构建出功能丰富的Java应用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消