🏆本文收录于「滚雪球学Java」专栏中,这个专栏专为有志于提升Java技能的你打造,覆盖Java编程的方方面面,助你从零基础到掌握Java开发的精髓。赶紧关注,收藏,学习吧!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
前言
在上一期的课程中,我们深入探讨了Java GUI编程中的高级GUI组件与自定义组件。通过对 JTable、JTree 等高级组件的详细分析,以及自定义圆形按钮的实现,我们学习了如何利用这些组件构建复杂且功能强大的用户界面。掌握这些技术后,你已经能够创建出更具交互性和专业水准的桌面应用程序。
然而,在实际的桌面应用开发中,单纯依赖组件和事件处理还不足以满足所有的用户需求。许多应用程序需要通过对话框与菜单来提供丰富的用户体验和便捷的操作方式。这些元素不仅能简化用户与程序之间的交互,还能有效提升应用程序的易用性和功能性。因此,本期内容将聚焦于Java中的对话框与菜单,通过实际案例展示如何在应用程序中实现这些功能。
摘要
本文将详细讨论Java GUI编程中的对话框与菜单的实现与应用。我们将从基础的 JOptionPane 对话框和 JMenu 菜单开始,逐步深入到自定义对话框和复杂菜单的实现。通过对核心源码的解读和实际案例的分析,帮助读者全面掌握对话框与菜单的开发技巧。本文将涵盖对话框与菜单的概念、核心代码解析、案例分析、应用场景展示等内容,并提供测试用例以验证代码的正确性。
简介
对话框和菜单是用户与应用程序交互的重要手段。对话框通常用于显示提示信息、获取用户输入或处理关键操作,而菜单则为用户提供了一种组织良好、易于访问的功能导航方式。Java提供了丰富的API来创建和管理对话框与菜单,这些工具使得开发者能够构建功能全面且易于使用的桌面应用程序。
概述
对话框
对话框(Dialog)是一种临时的窗口,通常用于提示用户、获取输入或确认操作。在Java中,对话框由 JDialog 类及其子类实现。常见的对话框包括:
- 消息对话框:用于显示信息或警告,常用
JOptionPane实现。 - 输入对话框:用于获取用户输入,如文本输入框。
- 确认对话框:用于确认用户操作,如“确定/取消”选择框。
菜单
菜单(Menu)是用户在GUI应用程序中执行操作的主要导航方式。Java中的菜单通常由 JMenuBar、JMenu 和 JMenuItem 等类实现。常见的菜单包括:
- 主菜单:应用程序的顶级菜单,通常显示在窗口的顶部。
- 上下文菜单:在特定组件上右键单击时弹出的菜单。
- 子菜单:嵌套在主菜单项中的二级菜单。
核心源码解读
我们以 JOptionPane 和 JMenu 为例,解读它们的核心源码,并展示如何使用这些组件来创建对话框和菜单。
创建一个简单的消息对话框
public class MessageDialogDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Message Dialog Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
// 显示一个消息对话框
JOptionPane.showMessageDialog(frame, "This is a message dialog.", "Message", JOptionPane.INFORMATION_MESSAGE);
frame.setVisible(true);
}
}
代码解读:
接着我将对上述代码逐句进行一个详细解读,希望能够帮助到同学们,能以最快的速度对其知识点掌握于心,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,如鱼得水。所以如果有基础的同学,可以略过如下代码解析,针对没基础的同学,还是需要加强对代码的逻辑与实现,方便日后的你能更深入理解它并常规使用不受限制。
这段代码是一个简单的Java Swing应用程序,它演示了如何使用JOptionPane来创建和显示一个消息对话框。以下是代码的逐行解读:
-
包声明:
package com.demo.javase.day93_2;定义了类的包名,这是组织Java代码的一种方式,通常用于将相关的类放在一起。 -
导入语句:
import javax.swing.*;导入了Swing图形用户界面工具包中的所有类。这个包提供了创建和管理图形用户界面的组件。 -
类定义:
public class MessageDialogDemo定义了一个名为MessageDialogDemo的公共类。 -
注释: 提供了作者、来源和日期信息。
-
主方法:
public static void main(String[] args)是Java程序的入口点,程序从这里开始执行。 -
创建JFrame:
JFrame frame = new JFrame("Message Dialog Demo");创建了一个JFrame对象,这是Swing库中用于表示窗口的类。这里窗口的标题被设置为"Message Dialog Demo"。 -
设置默认关闭操作:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置窗口的默认关闭操作为退出程序,这是一个重要的设置,用于指定窗口关闭时的行为。 -
设置窗口大小:
frame.setSize(300, 200);设置窗口的初始大小为300像素宽和200像素高。 -
显示消息对话框:
JOptionPane.showMessageDialog(frame, "This is a message dialog.", "Message", JOptionPane.INFORMATION_MESSAGE);这行代码使用JOptionPane的showMessageDialog方法来显示一个包含信息的消息对话框。- 第一个参数
frame是对话框的父窗口,这确保了对话框在窗口的中心显示。 - 第二个参数
"This is a message dialog."是对话框中要显示的消息文本。 - 第三个参数
"Message"是对话框的标题。 - 第四个参数
JOptionPane.INFORMATION_MESSAGE是一个常量,表示对话框显示的是一个普通信息消息。
- 第一个参数
-
使窗口可见:
frame.setVisible(true);这行代码使窗口可见。在Swing中,所有组件默认是不可见的,必须显式地设置为可见。
当这段程序运行时,它首先创建一个窗口,然后显示一个包含文本"This is a message dialog."的消息对话框。用户阅读消息后,可以关闭对话框,此时窗口也会随之关闭,因为设置了EXIT_ON_CLOSE。这个程序是一个简单的例子,展示了如何在Java Swing应用程序中使用消息对话框。
创建一个简单的菜单栏
public class SimpleMenuDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Menu Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
JMenuBar menuBar = new JMenuBar();
// 创建菜单
JMenu fileMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
JMenu helpMenu = new JMenu("Help");
// 创建菜单项
JMenuItem newItem = new JMenuItem("New");
JMenuItem openItem = new JMenuItem("Open");
JMenuItem exitItem = new JMenuItem("Exit");
// 将菜单项添加到菜单
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
// 将菜单添加到菜单栏
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(helpMenu);
// 将菜单栏设置到框架
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
}
代码解析
- JOptionPane:用于创建消息对话框。
showMessageDialog方法显示一个包含提示信息的对话框,用户点击“OK”按钮后对话框关闭。 - JMenuBar:用于创建菜单栏。菜单栏是应用程序窗口的顶级菜单容器,通常位于窗口的顶部。
- JMenu 和 JMenuItem:分别用于创建菜单和菜单项。菜单可以包含多个菜单项,菜单项是用户可以选择的具体操作。
在上述代码中,我们展示了如何创建一个简单的消息对话框和一个基础的菜单栏。消息对话框可以用于提示用户重要信息,而菜单栏提供了一个结构化的方式来组织应用程序的功能。
接着我将对上述代码逐句进行一个详细解读,希望能够帮助到同学们,能以最快的速度对其知识点掌握于心,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,如鱼得水。所以如果有基础的同学,可以略过如下代码解析,针对没基础的同学,还是需要加强对代码的逻辑与实现,方便日后的你能更深入理解它并常规使用不受限制。
这段代码是一个Java Swing应用程序,演示了如何在窗口中创建和添加一个简单的菜单栏。以下是代码的逐行解读:
-
包声明:
package com.demo.javase.day93_2;定义了类的包名,这是Java代码组织的一种方式。 -
导入语句:
import javax.swing.*;导入了Swing库中所有的公共类,这使得我们可以创建图形用户界面。 -
类定义:
public class SimpleMenuDemo定义了一个名为SimpleMenuDemo的公共类。 -
注释: 提供了作者、来源和日期信息。
-
主方法:
public static void main(String[] args)是程序的入口点。 -
创建JFrame:
JFrame frame = new JFrame("Simple Menu Demo");创建了一个JFrame对象,它代表一个窗口,并设置了窗口标题。 -
设置默认关闭操作:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置窗口的默认关闭操作为退出程序。 -
设置窗口大小:
frame.setSize(400, 300);设置窗口的初始大小。 -
创建JMenuBar:
JMenuBar menuBar = new JMenuBar();创建了一个菜单栏对象,它将被添加到窗口顶部。 -
创建菜单: 通过
new JMenu("Menu Name")创建了三个菜单,分别命名为 "File"、"Edit" 和 "Help"。 -
创建菜单项: 使用
new JMenuItem("Item Name")创建了三个菜单项,分别为 "New"、"Open" 和 "Exit"。 -
添加菜单项到菜单:
fileMenu.add方法将菜单项添加到 "File" 菜单中。fileMenu.addSeparator();添加了一个分隔线,以区分 "Open" 和 "Exit" 菜单项。 -
添加菜单到菜单栏:
menuBar.add方法将创建的菜单添加到菜单栏中。 -
设置菜单栏到框架:
frame.setJMenuBar(menuBar);将菜单栏添加到窗口中,这样菜单栏就会显示在窗口的顶部。 -
使窗口可见:
frame.setVisible(true);使窗口可见。
当这段程序运行时,它将创建一个包含菜单栏的窗口,菜单栏中有 "File"、"Edit" 和 "Help" 菜单。"File" 菜单下有 "New"、"Open" 和 "Exit" 菜单项,它们之间有一个分隔线。目前这些菜单项没有任何功能绑定,只是展示了如何创建菜单结构。在实际应用中,你需要为这些菜单项添加事件监听器来定义点击时的行为。
案例执行结果:
根据如上的测试用例,作者在本地进行测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加其他的测试数据或测试方法,以便于进行熟练学习以此加深知识点的理解。
案例分析
案例:创建一个带有文件选择对话框的文本编辑器菜单
下面我们通过一个案例展示如何结合对话框和菜单创建一个简单的文本编辑器界面,用户可以通过菜单打开文件,并通过对话框选择文件。
public class TextEditorDemo {
private JFrame frame;
private JTextArea textArea;
private JFileChooser fileChooser;
public TextEditorDemo() {
frame = new JFrame("Text Editor");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
textArea = new JTextArea();
fileChooser = new JFileChooser();
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem openItem = new JMenuItem("Open");
JMenuItem exitItem = new JMenuItem("Exit");
// 添加打开文件功能
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int returnValue = fileChooser.showOpenDialog(frame);
if (returnValue == JFileChooser.APPROVE_OPTION) {
try (BufferedReader reader = new BufferedReader(new FileReader(fileChooser.getSelectedFile()))) {
textArea.read(reader, null);
} catch (IOException ex) {
JOptionPane.showMessageDialog(frame, "Error opening file", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
});
// 添加退出功能
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
frame.add(new JScrollPane(textArea));
frame.setVisible(true);
}
public static void main(String[] args) {
new TextEditorDemo();
}
}
代码解析
接着我将对上述代码逐句进行一个详细解读,希望能够帮助到同学们,能以最快的速度对其知识点掌握于心,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,如鱼得水。所以如果有基础的同学,可以略过如下代码解析,针对没基础的同学,还是需要加强对代码的逻辑与实现,方便日后的你能更深入理解它并常规使用不受限制。
- JFileChooser:用于创建文件选择对话框。
showOpenDialog方法显示打开文件对话框,用户可以选择文件并将其加载到文本区域。 - JTextArea:用于显示和编辑多行文本。它是文本编辑器的核心组件。
- BufferedReader:用于从文件中读取文本,并将其显示在
JTextArea中。
通过这个示例,我们展示了如何结合菜单和对话框创建一个简单的文本编辑器。用户可以通过菜单选择文件,并通过文件选择对话框打开文件内容。
如下是对其的逐句解读,仅供参考:
这段代码是一个Java Swing应用程序,实现了一个简单的文本编辑器,它包含了文件打开和退出功能。以下是代码的逐行解读:
-
包声明:
package com.demo.javase.day93_2;定义了类的包名。 -
导入语句: 导入了Swing库中的组件类,事件处理接口,以及I/O相关的类。
-
类定义:
public class TextEditorDemo定义了一个名为TextEditorDemo的公共类。 -
成员变量:
private JFrame frame;: 声明了一个JFrame类型的私有变量,用于创建应用程序的主窗口。private JTextArea textArea;: 声明了一个JTextArea类型的私有变量,用于显示和编辑文本。private JFileChooser fileChooser;: 声明了一个JFileChooser类型的私有变量,用于打开文件选择对话框。
-
构造函数:
public TextEditorDemo()是类的构造函数,用于初始化成员变量并设置GUI组件。 -
设置窗口属性: 设置窗口标题、默认关闭操作和大小。
-
创建菜单栏:
JMenuBar menuBar = new JMenuBar();创建了一个菜单栏。 -
创建菜单和菜单项: 创建了 "File" 菜单和 "Open"、"Exit" 菜单项。
-
添加打开文件功能: 为 "Open" 菜单项添加了
ActionListener,当点击时,会显示文件选择对话框,并尝试打开选定的文件。 -
添加退出功能: 为 "Exit" 菜单项添加了
ActionListener,当点击时,会调用System.exit(0)退出程序。 -
文件读取和错误处理: 使用
BufferedReader读取选定的文件内容到textArea。如果发生IOException,则显示错误消息对话框。 -
添加菜单项和菜单到菜单栏: 将 "Open" 和 "Exit" 菜单项添加到 "File" 菜单中,然后添加 "File" 菜单到菜单栏。
-
设置菜单栏和文本区域到窗口: 将菜单栏设置到窗口,并添加一个包含
textArea的JScrollPane到窗口中。 -
使窗口可见:
frame.setVisible(true);使窗口可见。 -
主方法:
public static void main(String[] args)是程序的入口点,它创建了TextEditorDemo类的实例,从而启动应用程序。
当程序运行时,将显示一个包含菜单栏的窗口,菜单栏中有 "File" 菜单,下面有 "Open" 和 "Exit" 菜单项。用户可以通过 "Open" 菜单项打开文件选择对话框,选择文件后,文件内容将显示在文本编辑器窗口中。如果打开文件过程中发生错误,会弹出错误提示对话框。用户可以通过 "Exit" 菜单项退出程序。
案例执行结果: 根据如上的测试用例,作者在本地进行测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加其他的测试数据或测试方法,以便于进行熟练学习以此加深知识点的理解。
应用场景演示
对话框和菜单在各种桌面应用程序中都有广泛的应用。以下是一些常见的应用场景:
- 文本编辑器:通过菜单提供文件打开、保存、退出等功能,并通过对话框与用户进行交互,如文件选择、保存提示等。
- 设置面板:通过菜单进入设置界面,并使用对话框进行详细配置,如更改应用程序的外观或功能选项。
- 信息提示:在用户执行某些操作时,通过消息对话框提供反馈,如操作成功、错误提示、确认操作等。
优缺点分析
我们不能说一味的夸赞它的好就看不见它的弊端,我们更应该看到它的不足与短板,才能激发更多技术人员对技术上的追求与热爱,激发更多人拥有科研精神及打破精神,如果说它已经都是众人眼中天花板了,那只能说境界太窄,唯有接受它的不足,才能精益求精,更上一层楼!技术永远都没有终点,唯有不断挑战,它的高度才能无线被拉高!如下是我对它的一些优点与缺点总结,请同学们参考:
优点
- 提高用户体验:对话框和菜单使得应用程序更加用户友好,提供了良好的交互方式。
- 增强功能导航:菜单结构化地组织了应用程序的功能,使得
用户能够快速找到并执行所需操作。
- 简化复杂操作:对话框能够引导用户完成复杂操作,如文件选择、确认重要操作等。
缺点
- 开发复杂性:对话框和菜单的设计和实现可能会增加开发的复杂性,尤其是在需要处理复杂逻辑时。
- 易用性问题:过多或过复杂的菜单和对话框设计可能会影响用户体验,导致用户迷失或感到困惑。
测试用例
为了验证自定义确认对话框的功能,我们编写了以下测试用例。
测试代码
public class CustomDialogTest {
public static void main(String[] args) {
JFrame frame = new JFrame("Custom Dialog Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JButton testButton = new JButton("Test Dialog");
testButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
CustomConfirmDialog dialog = new CustomConfirmDialog(frame, "Confirm", "Do you want to proceed?");
dialog.setVisible(true);
if (dialog.isConfirmed()) {
System.out.println("User confirmed action.");
} else {
System.out.println("User canceled action.");
}
}
});
frame.setLayout(new FlowLayout());
frame.add(testButton);
frame.setVisible(true);
}
}
测试结果预期
在运行测试代码时,应看到一个带有“Test Dialog”按钮的窗口。点击按钮后,将显示一个确认对话框,用户可以选择“是”或“否”。选择“是”后,控制台应输出“User confirmed action.”的消息,选择“否”后,控制台应输出“User canceled action.”。
案例执行结果
根据如上的测试用例,作者在本地进行测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加其他的测试数据或测试方法,以便于进行熟练学习以此加深知识点的理解。
测试代码分析
接着我将对上述代码逐句进行一个详细解读,希望能够帮助到同学们,能以最快的速度对其知识点掌握于心,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,如鱼得水。所以如果有基础的同学,可以略过如下代码解析,针对没基础的同学,还是需要加强对代码的逻辑与实现,方便日后的你能更深入理解它并常规使用不受限制。
通过该测试,我们验证了自定义确认对话框的功能,并确保了用户选择的正确处理。该对话框可以在应用程序中用于确认用户的关键操作,如删除文件、退出程序等。
这段代码是一个Java Swing应用程序,用于测试自定义确认对话框 CustomConfirmDialog 的功能。以下是代码的逐行解读:
-
包声明:
package com.demo.javase.day93_2;定义了类的包名。 -
导入语句: 导入了Swing组件、事件处理接口以及布局管理器。
-
类定义:
public class CustomDialogTest定义了一个名为CustomDialogTest的公共类。 -
主方法:
public static void main(String[] args)是程序的入口点。 -
创建JFrame:
JFrame frame = new JFrame("Custom Dialog Test");创建了一个名为 "Custom Dialog Test" 的JFrame实例。 -
设置默认关闭操作:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置窗口的默认关闭操作为退出程序。 -
设置窗口大小:
frame.setSize(300, 200);设置窗口的初始大小。 -
创建测试按钮:
JButton testButton = new JButton("Test Dialog");创建了一个名为 "Test Dialog" 的按钮,用于触发对话框的显示。 -
添加动作监听器:
testButton.addActionListener(...)为测试按钮添加了一个ActionListener。- 当按钮被点击时,创建一个
CustomConfirmDialog对话框实例,并设置其可见性为true。 - 通过
dialog.isConfirmed()方法检查用户是否点击了 "Yes" 按钮确认操作。 - 根据用户的选择,在控制台打印相应的消息。
- 当按钮被点击时,创建一个
-
设置窗口布局:
frame.setLayout(new FlowLayout());设置窗口的布局管理器为流式布局。 -
添加按钮到窗口:
frame.add(testButton);将测试按钮添加到窗口中。 -
使窗口可见:
frame.setVisible(true);使窗口可见。
当这段程序运行时,将显示一个包含 "Test Dialog" 按钮的窗口。点击按钮后,将触发 CustomConfirmDialog 对话框的显示。用户可以选择 "Yes" 或 "No" 来确认或取消操作。根据用户的选择,程序会在控制台打印 "User confirmed action." 或 "User canceled action." 消息。
请注意,这段代码中 CustomConfirmDialog 类没有给出,但可以推断它是一个自定义的确认对话框类,具有 isConfirmed 方法来获取用户的确认结果。此外,这段代码假定 CustomConfirmDialog 类的构造函数接受一个 JFrame 对象、一个字符串标题和一个字符串消息作为参数。
小结
在本次深入探索Java GUI编程的旅程中,我们聚焦于对话框与菜单——这两个在提升用户体验中扮演着至关重要角色的组件。通过精心设计的对话框,我们学会了如何以一种更为直接和友好的方式与用户进行交流,无论是展示信息、获取输入还是确认操作。同时,菜单的引入为应用程序提供了一个清晰而高效的功能导航结构,使用户能够轻松访问到程序的各项功能。
总结
随着本次学习的结束,我们不仅掌握了对话框与菜单的实现技巧,还理解了它们在实际开发中的重要性和应用方式。以下是几个关键点的总结:
-
对话框的多样性:从简单的信息提示到复杂的输入收集,
JOptionPane和自定义对话框展示了Java在处理用户交互时的灵活性和强大功能。 -
菜单的结构化:通过
JMenuBar、JMenu和JMenuItem,我们学会了如何构建层次清晰、易于操作的菜单系统,它不仅组织了程序的功能,也提升了用户的使用体验。 -
实际案例的启示:通过文本编辑器的案例,我们看到了对话框和菜单如何在实际应用中协同工作,为用户提供了一个完整的工作流程。
-
自定义组件的创新:自定义对话框的实现让我们认识到,除了使用现成的组件外,我们还可以根据自己的需求创造出独特的交互元素。
-
用户体验的关注:在整个学习过程中,我们始终将用户体验放在首位,无论是对话框的设计还是菜单的布局,都力求简洁、直观和易用。
-
持续实践的重要性:通过编写测试用例并运行它们,我们验证了代码的功能和健壮性,这是软件开发中不可或缺的一环。
通过本次学习,我们不仅获得了知识和技能,更重要的是,我们学会了如何将这些知识应用到实际开发中,创造出既美观又实用的用户界面。希望每位同学都能够在Java GUI编程的道路上不断进步,开发出更多优秀的应用程序,以满足用户的需求并超越他们的期待。
下期预告:GUI编程-绘图与图形处理
在下一期的文章中,我们将探讨Java GUI编程中的绘图与图形处理。绘图是创建图形用户界面的重要组成部分,通过绘图,你可以实现各种自定义的图形效果,从简单的形状到复杂的图像处理。我们将介绍Java中的 Graphics 和 Graphics2D 类,以及如何在Java应用程序中实现动态的图形效果。敬请期待!
ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看如下的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能实现财富自由的佬儿。「赠人玫瑰,手留余香」,咱们下期拜拜~~
附录源码
如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
☀️建议/推荐你
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
📣关于我
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 20w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。