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

JAVA主流技术学习:新手入门教程

标签:
Java 面试 架构
概述

JAVA主流技术学习涵盖了从基础语法到面向对象编程、常用开发框架、Web技术、异常处理以及项目实战等多个方面,全面介绍了Java开发的核心技术和实践方法。文章详细解释了如何安装Java开发环境、编写第一个Java程序以及掌握基本语法结构和控制结构。此外,还深入探讨了Spring、MyBatis、Hibernate等主流框架的使用方法,帮助开发者构建高效、稳定的Java应用程序。

Java基础语法入门

Java简介

Java是一种广泛使用的高级编程语言,它由Sun Microsystems(现为Oracle公司)开发。Java语言的设计目标是编写一次,到处运行(Write Once, Run Anywhere),这得益于其“编译到字节码”的特性,使得Java应用程序可以在任何安装了Java虚拟机(JVM)的平台上运行。Java语言具有简单、面向对象、分布式、解释型、健壮性、安全性、能够自动垃圾回收、体系结构中立、可移植、解释型、高性能、多线程、动态等特性。

安装Java开发环境

在开始编写Java程序之前,你需要在本地计算机上安装Java开发环境。以下是安装步骤:

  1. 下载并安装Java开发工具包(JDK)。
  2. 配置环境变量,确保系统能够找到Java相关的文件。

示例代码:配置环境变量(以Windows系统为例)。

# 设置JAVA_HOME变量
setx JAVA_HOME "C:\Program Files\Java\jdk-11.0.2"
# 将JDK的bin目录添加到系统路径中
setx PATH "%JAVA_HOME%\bin;%PATH%"

编写第一个Java程序

创建第一个Java程序,首先需要创建一个.java文件,例如HelloWorld.java,并在该文件中编写Java代码。这个程序将输出“Hello, World!”到控制台。

示例代码:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

运行程序:

javac HelloWorld.java
java HelloWorld

基本语法结构

Java的基本语法结构包括包、导入、类和方法等。这些结构是构建Java程序的基础。

示例代码:

package com.example;

import java.util.Scanner;

public class Example {
    public static void main(String[] args) {
        System.out.println("Welcome to Java!");
    }
}

变量与数据类型

Java中有多种数据类型,包括基本数据类型(原始类型)和引用数据类型。基本数据类型包括整型、浮点型、布尔型和字符型。引用数据类型包括类、接口和数组。

示例代码:

public class DataTypes {
    public static void main(String[] args) {
        int num = 10;    // 整型
        float f = 10.5f; // 浮点型
        boolean b = true; // 布尔型
        char c = 'A';    // 字符型
        String str = "String"; // 引用类型

        System.out.println("整型: " + num);
        System.out.println("浮点型: " + f);
        System.out.println("布尔型: " + b);
        System.out.println("字符型: " + c);
        System.out.println("字符串: " + str);
    }
}

控制结构

Java提供了多种控制结构,包括条件语句(if-else)、循环(for、while、do-while)和跳转语句(break、continue、return)。

示例代码:

public class ControlStructures {
    public static void main(String[] args) {
        int number = 5;

        if (number > 0) {
            System.out.println(number + " is positive.");
        } else {
            System.out.println(number + " is non-positive.");
        }

        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);
    }
}

数组与循环

Java中的数组用于存储一系列相同类型的元素。数组可以是一维的,也可以是多维的。循环可以用来遍历数组中的元素。

示例代码:

public class ArrayAndLoops {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        for (int number : numbers) {
            System.out.println(number);
        }

        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
    }
}
Java面向对象编程

类与对象

Java是面向对象的语言,类是创建对象的基本构造。类定义了对象的状态和行为。对象是类的实例。

示例代码:

public class Person {
    String name;
    int age;

    public void introduce() {
        System.out.println("My name is " + name + " and I am " + age + " years old.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "Alice";
        person.age = 25;
        person.introduce();
    }
}

封装性

封装是面向对象编程的核心概念之一,封装隐藏了对象的内部细节,并通过公共接口提供对外访问的途径。Java通过访问修饰符(public、private、protected)实现封装。

示例代码:

public class Car {
    private String brand;
    private int year;

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return this.brand;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getYear() {
        return this.year;
    }
}

public class Main {
    public static void main(String[] args) {
        Car car = new Car();
        car.setBrand("Toyota");
        car.setYear(2020);
        System.out.println(car.getBrand() + " " + car.getYear());
    }
}

继承性

继承允许一个类继承另一个类的属性和方法。子类可以扩展父类的功能或重写父类的方法。

示例代码:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 继承自Animal类
        dog.bark(); // Dog类独有的方法
    }
}

多态性

多态性允许子类重写父类的方法,不同对象在调用相同的方法时表现出不同的行为。

示例代码:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

public class Dog extends Animal {
    public void eat() {
        System.out.println("Dog is eating.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.eat(); // 输出: Animal is eating.

        Animal dog = new Dog();
        dog.eat(); // 输出: Dog is eating.
    }
}

接口与抽象类

接口和抽象类用于定义一组相关的抽象方法。接口是完全抽象的,而抽象类可以包含实现的方法。

示例代码:

public interface Flyable {
    void fly();
}

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

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

    public void eat() {
        System.out.println("Bird is eating.");
    }
}

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

包与访问修饰符

Java中的包用于组织和分类类,访问修饰符用于控制类、方法、变量的访问级别。

示例代码:

package com.example;

public class Person {
    public String name;
    protected int age;
    private String address;

    public void introduce() {
        System.out.println("My name is " + name + " and I am " + age + " years old.");
    }

    private void setAddress(String address) {
        this.address = address;
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "Alice";
        person.age = 25;
        person.introduce();
    }
}
Java常用开发框架介绍

Spring框架简介

Spring是一个开源的Java应用程序框架,旨在简化Java开发。Spring框架提供了依赖注入(DI)、面向切面编程(AOP)以及事务管理等功能。

示例代码:

// 定义一个简单的Spring组件
@Component
public class HelloWorld {
    public void sayHello() {
        System.out.println("Hello, World!");
    }
}

// 定义一个配置类来管理Spring组件
@Configuration
public class AppConfig {
    @Bean
    public HelloWorld helloWorld() {
        return new HelloWorld();
    }
}

// 使用Spring上下文来获取并使用组件
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");
        HelloWorld helloWorld = context.getBean(HelloWorld.class);
        helloWorld.sayHello();
    }
}

MyBatis框架简介

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有JDBC代码和手动设置参数以及获取结果集。

示例代码:

<!-- 定义XML配置 -->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
// 定义Java接口
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User selectUser(int id);
}

// 定义Java类
public class Main {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
        SqlSession session = sqlSessionFactory.openSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.selectUser(1);
        System.out.println("User: " + user.getName());
    }
}

Hibernate框架简介

Hibernate是一个ORM框架,实现了自动持久化对象的CRUD操作。它简化了Java应用与数据库交互的方式,提高了开发效率。

示例代码:

// 定义Java实体类
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String email;
    // Getter和Setter
}

// 配置Hibernate
public class HibernateConfig {
    public static SessionFactory getSessionFactory() {
        Configuration configuration = new Configuration();
        configuration.addAnnotatedClass(User.class);
        configuration.configure();
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        return configuration.buildSessionFactory(serviceRegistry);
    }
}

// 使用Hibernate
public class Main {
    public static void main(String[] args) {
        SessionFactory sessionFactory = HibernateConfig.getSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        User user = new User();
        user.setName("Alice");
        user.setEmail("alice@example.com");
        session.save(user);
        session.getTransaction().commit();
        session.close();
    }
}

Struts框架简介

Struts是一个流行的MVC框架,它简化了基于Java的Web应用开发。通过使用ActionServlet和ActionForm,Struts能够帮助开发者处理请求、响应和视图。

示例代码:

// 定义Action
public class HelloWorldAction extends ActionSupport {
    private String message;

    public String execute() {
        message = "Hello, World!";
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }
}

// 定义struts.xml配置文件
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="hello" class="com.example.action.HelloWorldAction">
            <result name="success">/WEB-INF/pages/hello.jsp</result>
        </action>
    </package>
</struts>

// JSP页面
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h1><s:property value="message" /></h1>
</body>
</html>
``

## Java Web技术入门

### Servlet和JSP简介
Servlet是运行在Java Web容器中的Java类,它能够响应客户端的请求。JSP是JavaServer Pages的缩写,它是一种动态网页技术,可以嵌入Java代码和HTML标记。

示例代码:
```java
// 创建一个简单的Servlet
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        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>
<body>
<h1>Hello, World!</h1>
</body>
</html>

JavaEE核心技术

JavaEE(Java Enterprise Edition)是一套用于开发企业级应用的平台。JavaEE提供了许多核心技术和组件,如EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等。

示例代码:

// 使用JPA进行数据库操作
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String email;
    // Getter和Setter
}

public class Main {
    public static void main(String[] args) {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("my-persistence-unit");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        User user = new User();
        user.setName("Alice");
        user.setEmail("alice@example.com");
        em.persist(user);
        em.getTransaction().commit();
        em.close();
    }
}

Tomcat服务器配置

Tomcat是一个开源的Java Servlet容器,它支持JavaEE规范。配置Tomcat服务器需要安装Tomcat软件,然后设置环境变量,最后修改配置文件来启动和运行Java Web应用。

示例代码:

# 设置环境变量
setx CATALINA_HOME "C:\Program Files\Apache Software Foundation\Tomcat 9.0"
setx PATH "%CATALINA_HOME%\bin;%PATH%"

# 启动Tomcat服务器
startup.bat

MVC设计模式

MVC(Model-View-Controller)是一种常见的软件架构模式,它将应用分为模型(Model)、视图(View)和控制器(Controller)三个部分。这使得应用的结构更加清晰,易于维护。

示例代码:

// 定义Model
public class User {
    private String name;
    private String email;
    // Getter和Setter
}

// 定义Controller
@WebServlet("/hello")
public class HelloWorldController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User();
        user.setName("Alice");
        user.setEmail("alice@example.com");
        request.setAttribute("user", user);
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/hello.jsp");
        dispatcher.forward(request, response);
    }
}

// 定义View
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h1>Hello, World!</h1>
<p>Name: <c:out value="${user.name}" /></p>
<p>Email: <c:out value="${user.email}" /></p>
</body>
</html>

JDBC数据库操作

JDBC(Java Database Connectivity)是Java中访问数据库的标准API。它提供了连接数据库、执行SQL语句和处理结果集的功能。

示例代码:

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

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

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

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Java异常处理与调试

异常与异常处理机制

Java中的异常处理机制允许程序处理运行时发生的异常情况。异常可以是运行时异常(如ArithmeticException、NullPointerException)或受检异常(如IOException)。

示例代码:

public class ExceptionExample {
    public static void main(String[] args) {
        try {
            int a = 10 / 0; // 除以0会产生异常
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException: " + e.getMessage());
        }

        try {
            File file = new File("nonexistent.txt");
            FileReader reader = new FileReader(file); // 打开不存在的文件会产生异常
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: " + e.getMessage());
        } finally {
            System.out.println("Finally block executed.");
        }
    }
}

Java调试工具

Java提供了多种调试工具,如JDB(Java Debugger)和JVisualVM等,它们允许开发者检查和修改程序的状态。

示例代码:

// 使用JDB进行调试
jdb -sourcepath src -classpath target/classes MyProgram
> run
> step
> print variable
> quit

常见调试技巧

调试时,可以通过打印日志、断点调试和使用调试工具等方法来定位和解决问题。

示例代码:

public class DebugExample {
    public static void main(String[] args) {
        int a = 5;
        int b = 0;
        try {
            int result = a / b; // 除以0会产生异常
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException: " + e.getMessage());
        }
    }
}

日志记录与异常处理

日志记录可以帮助开发者跟踪程序的运行情况和异常。Java提供了多种日志记录框架,如Log4j和SLF4J。

示例代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggingExample {
    private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class);

    public static void main(String[] args) {
        try {
            int a = 5;
            int b = 0;
            int result = a / b; // 除以0会产生异常
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            logger.error("ArithmeticException", e);
        } finally {
            logger.info("Finally block executed.");
        }
    }
}
Java项目实战

开发一个简单的Java Web应用

开发一个简单的Java Web应用需要创建Web项目结构、编写Servlet和JSP页面,并配置web.xml文件。

示例代码:

// 创建一个简单的Servlet
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        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>
<body>
<h1>Hello, World!</h1>
</body>
</html>

// 配置web.xml
<web-app>
    <servlet>
        <servlet-name>HelloWorldServlet</servlet-name>
        <servlet-class>com.example.servlet.HelloWorldServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

使用Spring框架进行项目管理

Spring框架提供了依赖注入和面向切面编程等功能,可以简化Java Web应用的开发。

示例代码:

// 定义一个简单的Spring组件
@Component
public class HelloWorld {
    public void sayHello() {
        System.out.println("Hello, World!");
    }
}

// 定义一个配置类来管理Spring组件
@Configuration
public class AppConfig {
    @Bean
    public HelloWorld helloWorld() {
        return new HelloWorld();
    }
}

// 使用Spring上下文来获取并使用组件
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");
        HelloWorld helloWorld = context.getBean(HelloWorld.class);
        helloWorld.sayHello();
    }
}

数据库连接与操作

数据库连接和操作是Java Web应用的常见需求。通过使用JDBC或ORM框架(如Hibernate或MyBatis),可以方便地连接和操作数据库。

示例代码:

// 使用JDBC进行数据库操作
public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String user = "root";
        String password = "password";

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

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

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

// 使用Hibernate进行数据库操作
public class Main {
    public static void main(String[] args) {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("my-persistence-unit");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        User user = new User();
        user.setName("Alice");
        user.setEmail("alice@example.com");
        em.persist(user);
        em.getTransaction().commit();
        em.close();
    }
}

单元测试与持续集成

单元测试是软件开发过程中非常重要的环节,它通过编写测试用例来验证代码的正确性。持续集成则可以自动化构建、测试和部署过程,提高开发效率。

示例代码:

// 使用JUnit进行单元测试
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(1, 2);
        assertEquals(3, result);
    }
}

// 使用Maven进行持续集成
<project>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消