继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JAVA主流技术入门教程

哈士奇WWW
关注TA
已关注
手记 522
粉丝 71
获赞 400
概述

本文全面介绍了JAVA主流技术的基础概念和环境搭建,涵盖了面向对象编程、常用API、Web开发以及数据库操作等核心内容。此外,文章还详细讲解了Java调试与常见错误处理及性能优化方法。希望读者通过本文能够快速掌握JAVA主流技术,并为进一步深入学习奠定坚实的基础。

Java主流技术入门教程
Java基础概念与环境搭建

Java简介

Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年推出,现在由Oracle公司维护。Java具有跨平台性(Write Once, Run Anywhere),其编译后的字节码可以在任何安装了Java虚拟机(JVM)的平台上运行。Java被广泛应用于Web开发、移动应用开发(Android)、企业应用开发等众多领域。

Java环境搭建

安装JDK

Java Development Kit (JDK) 包含了Java运行环境(JRE)、Java编译器(javac)和其他开发工具。以下是安装JDK的步骤:

  1. 访问Oracle官方网站下载JDK。
  2. 解压下载的安装包。
  3. 设置JDK的环境变量。

在Windows系统中,可以按照以下步骤设置环境变量:

  1. 打开“控制面板” -> “系统和安全” -> “系统” -> “高级系统设置”。
  2. 点击“环境变量”按钮。
  3. 在“系统变量”部分,点击“新建”,设置JAVA_HOME变量值为JDK的安装路径。
  4. 编辑Path变量,添加%JAVA_HOME%\bin

验证安装

通过以下命令验证JDK是否安装成功:

java -version

如果成功显示Java版本信息,则说明安装成功。

第一个Java程序

创建第一个Java程序,需要遵循以下步骤:

  1. 创建一个新的文本文件,命名为HelloWorld.java
  2. 在该文件中编写Java代码。
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
  1. 打开命令行窗口,进入包含HelloWorld.java文件的目录。
  2. 编译Java程序:
javac HelloWorld.java

如果没有错误信息,将生成一个名为HelloWorld.class的字节码文件。

  1. 运行程序:
java HelloWorld

程序将输出 Hello, World!

Java面向对象编程

类与对象

在Java中,面向对象的基本单元是类(class)和对象(object)。类是对象的模板,定义了对象的属性(变量)和行为(方法)。对象是类的实例。下面是一个简单的类定义:

public class Car {
    // 属性
    private String brand;
    private int speed;

    // 构造方法
    public Car(String brand) {
        this.brand = brand;
        this.speed = 0;
    }

    // 方法
    public void accelerate(int increase) {
        this.speed += increase;
        System.out.println("当前速度为:" + this.speed);
    }

    public void decelerate(int decrease) {
        this.speed -= decrease;
        System.out.println("当前速度为:" + this.speed);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota");
        myCar.accelerate(10);
        myCar.decelerate(5);
    }
}

继承与多态

Java中类与类之间可以存在继承关系,即一个类可以继承另一个类的属性和方法。多态则是指对象的多种形态,即同一个方法可以有不同的行为表现。

继承

public class Animal {
    public void makeSound() {
        System.out.println("Animal sound");
    }
}

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

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        myAnimal.makeSound(); // 输出 "Animal sound"

        Animal myDog = new Dog();
        myDog.makeSound(); // 输出 "Bark"
    }
}

多态

public class Animal {
    public void makeSound() {
        System.out.println("Animal sound");
    }
}

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

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Animal myDog = new Dog();

        makeSound(myAnimal); // 输出 "Animal sound"
        makeSound(myDog); // 输出 "Bark"

        Animal[] animals = new Animal[2];
        animals[0] = new Animal();
        animals[1] = new Dog();

        for (Animal animal : animals) {
            animal.makeSound();
        }
    }

    public static void makeSound(Animal animal) {
        animal.makeSound();
    }
}

接口与抽象类

接口和抽象类都是实现多态的一种方式,但它们之间存在区别。接口中只能包含常量和抽象方法,抽象类则可以包含常量、抽象方法以及非抽象方法。

接口

public interface Flyable {
    void fly();
}

public class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("Bird is flying");
    }
}

public class Main {
    public static void main(String[] args) {
        Bird myBird = new Bird();
        myBird.fly();
    }
}

抽象类

public abstract class Animal {
    public abstract void makeSound();
}

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

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.makeSound();
    }
}
Java常用API介绍

IO流操作

Java中的IO流分为输入流和输出流,用于读取和写入数据。常见的流有字节流、字符流、对象流等。

import java.io.*;

public class StreamExample {
    public static void main(String[] args) throws IOException {
        // 字节输出流
        FileOutputStream fos = new FileOutputStream("output.txt");
        fos.write(65); // 写入'65'的ASCII码值
        fos.close();

        // 字节输入流
        FileInputStream fis = new FileInputStream("output.txt");
        int content;
        while ((content = fis.read()) != -1) {
            System.out.print((char) content);
        }
        fis.close();

        // 字符输出流
        FileWriter fw = new FileWriter("charOutput.txt");
        fw.write("Hello");
        fw.close();

        // 字符输入流
        FileReader fr = new FileReader("charOutput.txt");
        int charContent;
        while ((charContent = fr.read()) != -1) {
            System.out.print((char) charContent);
        }
        fr.close();
    }
}

集合框架

Java集合框架提供了多种数据结构,包括List、Set、Map等,能方便地实现数据存储和操作。

import java.util.*;

public class CollectionExample {
    public static void main(String[] args) {
        // List
        List<String> myList = new ArrayList<>();
        myList.add("One");
        myList.add("Two");
        myList.add("Three");
        System.out.println(myList);
        myList.remove("Two");
        System.out.println(myList.get(0));

        // Set
        Set<String> mySet = new HashSet<>();
        mySet.add("One");
        mySet.add("Two");
        mySet.add("Three");
        System.out.println(mySet);

        // Map
        Map<String, Integer> myMap = new HashMap<>();
        myMap.put("One", 1);
        myMap.put("Two", 2);
        myMap.put("Three", 3);
        System.out.println(myMap.get("Two"));

        // Iterator
        Iterator<String> iterator = mySet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

异常处理

Java中的异常处理机制允许程序在发生错误时进行优雅的处理,而不是直接崩溃。异常处理主要通过try-catch语句块来实现。

public class ExceptionExample {
    public static void main(String[] args) {
        try {
            int[] array = new int[5];
            System.out.println(array[5]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组越界异常");
        } finally {
            System.out.println("finally语句块");
        }
    }
}
Java Web开发基础

Servlet与JSP

Servlet是一种运行在服务器端的Java程序,能实现动态网页生成。JSP(JavaServer Pages)则是基于Servlet的动态网页技术,它允许将Java代码嵌入HTML中。

Servlet示例

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

public class HelloWorldServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Hello World - HelloWorldServlet</title></head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

JSP示例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>

MVC设计模式

MVC (Model-View-Controller) 是一种软件架构模式,用于分离应用程序的表示层、业务逻辑层和数据访问层。这种模式有助于提高程序的可维护性和扩展性。

MVC架构

  • Model:代表应用程序中的数据和业务逻辑。
  • View:负责展示数据。
  • Controller:处理用户的输入并调用Model和View完成用户请求。

MVC设计模式示例

public class User {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class UserView {
    public void printUser(User user) {
        System.out.println("Name: " + user.getName());
        System.out.println("Age: " + user.getAge());
    }
}

public class UserController {
    private User user;
    private UserView view;

    public UserController(User user, UserView view) {
        this.user = user;
        this.view = view;
    }

    public void updateUser(User newUser) {
        user = newUser;
        view.printUser(user);
    }
}

public class Main {
    public static void main(String[] args) {
        User user = new User("John Doe", 25);
        UserView view = new UserView();
        UserController controller = new UserController(user, view);

        User newUser = new User("Jane Doe", 30);
        controller.updateUser(newUser);
    }
}

Spring框架简介

Spring是一个非常流行的Java开发框架,它简化了企业级应用开发。Spring的主要功能包括依赖注入、AOP(Aspect Oriented Programming)、事务管理等。

Spring依赖注入示例

public class MessageService {
    private String message;

    public void setMessage(String message) {
        this.message = message;
    }

    public void printMessage() {
        System.out.println("Message : " + message);
    }
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
        MessageService messageService = (MessageService) context.getBean("messageService");
        messageService.printMessage();
    }
}
<bean id="messageService" class="MessageService">
    <property name="message" value="Hello, Spring!" />
</bean>

Spring AOP示例

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logMethodCall() {
        System.out.println("Method call intercepted in LoggingAspect");
    }
}

Spring 事务管理示例

import org.springframework.transaction.annotation.Transactional;

public class TransactionalService {
    @Transactional
    public void doTransaction() {
        // 事务逻辑
    }
}
Java数据库操作

JDBC连接数据库

JDBC (Java Database Connectivity) 是Java访问数据库的标准方式。通过JDBC,Java程序可以与各种关系型数据库进行交互。

JDBC示例

import java.sql.*;

public class JDBCExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password)) {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM Employees");

            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }

            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ORM框架介绍

ORM (Object-Relational Mapping) 是一种将对象映射到关系型数据库的技术。常见的ORM框架包括Hibernate、MyBatis等。

Hibernate示例

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateExample {
    public static void main(String[] args) {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        Employee employee = new Employee("John Doe", "Manager");
        session.save(employee);

        session.getTransaction().commit();
        session.close();
    }
}

MyBatis示例

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisExample {
    public static void main(String[] args) {
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
        SqlSession sqlSession = factory.openSession();
        Employee employee = sqlSession.selectOne("selectEmployeeById", 1);
        sqlSession.close();
    }
}

数据库事务与连接池

事务是一组数据库操作,要么全部执行成功,要么全部失败。连接池是管理数据库连接的一种技术,它可以有效减少系统资源的消耗。

事务示例

import java.sql.*;

public class TransactionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password)) {
            conn.setAutoCommit(false); // 开启事务

            Statement stmt = conn.createStatement();
            stmt.executeUpdate("INSERT INTO Employees (id, name, position) VALUES (1, 'John Doe', 'Manager')");

            // 模拟一个异常
            int x = 1 / 0;

            conn.commit(); // 提交事务
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                DriverManager.getConnection(url, user, password).rollback(); // 事务回滚
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
    }
}

连接池示例

import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;

public class ConnectionPoolExample {
    public static void main(String[] args) {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        dataSource.setInitialSize(5); // 初始化连接数
        dataSource.setMaxTotal(10); // 最大连接数

        try (Connection conn = dataSource.getConnection()) {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM Employees");

            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Java调试与常见错误处理

调试工具使用

Java提供了多种调试工具,包括Eclipse、IntelliJ IDEA等IDE自带的调试工具或命令行工具jdb(Java Debugger)。

使用Eclipse调试

  1. 打开Eclipse,创建一个新的Java项目。
  2. 在项目中编写Java代码。
  3. 在代码中设置断点。
  4. 运行程序,程序会在断点处暂停。
  5. 使用调试视图查看当前变量值、调用栈等信息。

使用命令行调试

javac HelloWorld.java
jdb HelloWorld

常见错误与解决方法

NullPointerException

public class NullPointerExample {
    public static void main(String[] args) {
        String s = null;
        System.out.println(s.length()); // NullPointerException
    }
}

解决方法:确保对象已经被正确初始化。

ArrayIndexOutOfBoundsException

public class ArrayIndexExample {
    public static void main(String[] args) {
        int[] array = new int[5];
        System.out.println(array[5]); // ArrayIndexOutOfBoundsException
    }
}

解决方法:检查数组的索引是否越界。

ClassCastException

public class ClassCastExceptionExample {
    public static void main(String[] args) {
        Object obj = new String("Hello");
        String str = (String) obj;
        System.out.println(str.length());

        obj = new Integer(10);
        str = (String) obj; // ClassCastException
    }
}

解决方法:确保对象的类型转换是合理的。

性能优化入门

性能优化通常包括算法优化、代码优化、数据库优化等。代码优化可以通过减少不必要的计算、减少内存分配、避免同步等手段来实现。

示例代码

public class PerformanceOptimizationExample {
    public static void main(String[] args) {
        int[] array = new int[1000000];

        // 不必要的计算
        for (int i = 0; i < array.length; i++) {
            array[i] = i * i;
        }

        // 减少内存分配
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 1000000; i++) {
            sb.append(i).append(",");
        }
        String result = sb.toString(); // 一次性创建字符串

        // 避免同步
        Thread thread1 = new Thread(() -> {
            for (int i = 0; i < 1000000; i++) {
                array[i] = i * i;
            }
        });
        Thread thread2 = new Thread(() -> {
            for (int i = 0; i < 1000000; i++) {
                array[i] = i * i;
            }
        });
        thread1.start();
        thread2.start();
        thread1.join();
        thread2.join();
    }
}

通过上述优化,可以显著提高程序的性能。

结语

本文对Java的基础概念、环境搭建、面向对象编程、常用API、Web开发基础、数据库操作、调试与错误处理及性能优化等进行了详细的讲解。希望这篇教程能够帮助你快速入门Java编程,并为后续的学习打下坚实的基础。更多深入学习可以参考慕课网提供的课程。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP