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
语句用于条件判断,for
和while
循环用于重复执行代码块。
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应用。
共同学习,写下你的评论
评论加载中...
作者其他优质文章