Java 中文官方教程 2022 版(十一)(2)

简介: Java 中文官方教程 2022 版(十一)

Java 中文官方教程 2022 版(十一)(1)https://developer.aliyun.com/article/1486353

要运行此测试,请将?i)foo输入为正则表达式。这个错误是程序员在嵌入式标志表达式(?i)中忘记开括号的常见情况。这样做将产生以下结果:

Enter your regex: ?i)
There is a problem with the regular expression!
The pattern in question is: ?i)
The description is: Dangling meta character '?'
The message is: Dangling meta character '?' near index 0
?i)
^
The index is: 0

从这个输出中,我们可以看到语法错误是在索引 0 处的悬空元字符(问号)。缺少的开括号是罪魁祸首。

Unicode 支持

原文:docs.oracle.com/javase/tutorial/essential/regex/unicode.html

从 JDK 7 版本开始,正则表达式模式匹配已扩展功能以支持 Unicode 6.0。

  • 匹配特定代码点
  • Unicode 字符属性

匹配特定代码点

您可以使用形式为\uFFFF的转义序列匹配特定的 Unicode 代码点,其中FFFF是您想匹配的代码点的十六进制值。例如,\u6771匹配东方的汉字。

或者,您可以使用 Perl 风格的十六进制表示法指定一个代码点,\x{...}。例如:

String hexPattern = "\x{" + Integer.toHexString(codePoint) + "}";

Unicode 字符属性

每个 Unicode 字符除了其值之外,还具有某些属性或特性。您可以使用表达式\p{*prop*}匹配属于特定类别的单个字符。您可以使用表达式\P{*prop*}匹配属于特定类别的单个字符。

支持的属性类型有脚本、区块和“通用”类别。

脚本

要确定代码点是否属于特定脚本,您可以使用script关键字或sc的简写形式,例如,\p{script=Hiragana}。或者,您可以在脚本名称前加上字符串Is,例如\p{IsHiragana}

Pattern支持的有效脚本名称是UnicodeScript.forName接受的那些。

区块

可以使用block关键字或blk的简写形式指定一个区块,例如,\p{block=Mongolian}。或者,您可以在区块名称前加上字符串In,例如\p{InMongolian}

Pattern支持的有效区块名称是UnicodeBlock.forName接受的那些。

通用类别

类别可以用可选前缀Is指定。例如,IsL匹配 Unicode 字母的类别。类别也可以通过使用general_category关键字或简写形式gc来指定。例如,大写字母可以使用general_category=Lugc=Lu来匹配。

支持的类别是由Character类指定的Unicode 标准版本中的类别。

其他资源

原文:docs.oracle.com/javase/tutorial/essential/regex/resources.html

现在您已经完成了关于正则表达式的这节课,您可能会发现您的主要参考资料将是以下类的 API 文档:PatternMatcherPatternSyntaxException

对于正则表达式构造的行为更精确的描述,我们建议阅读 Jeffrey E. F. Friedl 的书籍精通正则表达式

问题和练习:正则表达式

原文:docs.oracle.com/javase/tutorial/essential/regex/QandE/questions.html

问题

  1. java.util.regex包中有哪三个公共类?描述每个类的目的。
  2. 考虑字符串字面值"foo"。起始索引是多少?结束索引是多少?解释这些数字的含义。
  3. 普通字符和元字符之间有什么区别?举例说明。
  4. 如何让一个元字符表现得像一个普通字符?
  5. 一组字符被方括号括起来叫什么?它的作用是什么?
  6. 这里有三个预定义的字符类:\d\s\w。描述每一个,并使用方括号重写它们。
  7. 对于每个\d\s\w,写出两个简单的表达式,匹配相反的字符集。
  8. 考虑正则表达式(dog){3}。识别两个子表达式。这个表达式匹配什么字符串?

练习

  1. 使用反向引用编写一个表达式,只有当一个人的名字和姓氏相同时才匹配该人的名字。

检查你的答案。

路径:部署

原文:docs.oracle.com/javase/tutorial/deployment/index.html

Java 富互联网应用程序(RIA)是具有类似桌面应用程序特征的应用程序,但是通过互联网部署。Java RIA 可以作为 Java 小程序或 Java Web Start 应用程序开发和部署。

  • 小程序 - Java 小程序在浏览器环境中运行。Java 插件软件控制 Java 小程序的执行和生命周期。
  • Java Web Start 应用程序 - Java Web Start 应用程序首次通过浏览器启动。随后可以通过桌面快捷方式启动。一旦下载了 Java Web Start 应用程序并且用户接受了其安全证书,它的行为几乎像一个独立的应用程序。

基于组件的架构用于富互联网应用程序

在过去,决定将 Java 富互联网应用程序作为小程序在浏览器内部部署,还是作为 Java Web Start 应用程序在浏览器外部部署,可能会显著影响应用程序的设计。有了最新的 Java 插件,这个决定变得简单多了。

传统上,应用程序在 main 方法中构建其用户界面,包括顶级 Frame。这种编程风格阻碍了应用程序在浏览器中的重新部署,因为它假定应用程序创建自己的 Frame。在浏览器中作为小程序运行时,小程序是应该容纳应用程序用户界面的顶级容器。不需要顶级 Frame

在设计 Java 富互联网应用程序时,请使用基于组件的架构。尝试将其功能组织成一个或多个可以组合在一起的组件。在这种情况下,“组件”一词指的是 AWT Component 类的子类、Swing JComponent 类或另一个子类的 GUI 元素。例如,您可以有一个顶级 JPanel,其中包含其他 UI 组件(如更多嵌套的 JPanels 和文本字段、组合框等)。通过这种设计,将核心功能部署为小程序或 Java Web Start 应用程序变得相对容易。

要部署为 Java 小程序,只需将核心功能封装在 AppletJApplet 中,并添加必要的浏览器特定功能。要部署为 Java Web Start 应用程序,请将功能封装在 JFrame 中。

选择 Java 小程序和 Java Web Start 应用程序之间

富互联网应用程序决策指南包含详细信息,帮助您决定将代码部署为 Java 小程序还是 Java Web Start 应用程序。

自包含应用程序替代方案

自包含应用程序提供了一种部署选项,不需要浏览器。用户在本地安装您的应用程序,并类似于本机应用程序运行它。自包含应用程序包括运行应用程序所需的 JRE,因此用户始终拥有正确的 JRE。

本教程讨论了 RIA 和自包含应用程序的开发和部署。请查看新功能,了解客户端 Java 运行时环境(JRE)软件各个版本引入的功能。

支持工具

课程:Java 小程序

原文:docs.oracle.com/javase/tutorial/deployment/applet/index.html

本课程讨论了 Java 小程序的基础知识,如何开发与环境交互丰富的小程序,以及如何部署小程序。

Java 小程序是一种特殊类型的 Java 程序,可以由启用了 Java 技术的浏览器从互联网上下载并运行。小程序通常嵌入在网页中,并在浏览器的上下文中运行。小程序必须是 java.applet.Applet 类的子类。Applet 类提供了小程序与浏览器环境之间的标准接口。

Swing 提供了 Applet 类的一个特殊子类,名为 javax.swing.JApplet。应该使用 JApplet 类来构建使用 Swing 组件构建其图形用户界面(GUI)的所有小程序。

浏览器的 Java 插件软件管理小程序的生命周期。

使用 Web 服务器来测试本课程中的示例。不建议使用本地小程序,当 Java 控制面板中的安全级别设置为高或非常高时,本地小程序将被阻止。


注意: 要运行小程序,请在 Microsoft Edge 上使用 IE 模式。请参阅Microsoft Edge + Internet Explorer mode: Getting Started guide



注意: 请确保您的客户端机器上至少安装了Java SE Development Kit (JDK) 6 update 10版本,然后再继续。您将需要此版本才能查看示例丰富的互联网应用程序并在不中断的情况下阅读后续章节。


开始使用小程序

原文:docs.oracle.com/javase/tutorial/deployment/applet/getStarted.html

接下来展示的 HelloWorld 小程序是一个显示字符串"Hello World"的 Java 类。

//


注意: 如果你看不到示例运行,可能需要在浏览器中启用 JavaScript 解释器,以便部署工具包脚本能够正常运行。


以下是 HelloWorld 小程序的源代码:

import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
public class HelloWorld extends JApplet {
    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel lbl = new JLabel("Hello World");
                    add(lbl);
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }
}

这样的小程序通常由浏览器中的Java 插件软件管理和运行。

下载源代码以进一步进行实验。

定义一个小程序子类

原文:docs.oracle.com/javase/tutorial/deployment/applet/subclass.html

每个 Java 小程序都必须定义AppletJApplet类的子类。在 Hello World 小程序中,这个子类被称为HelloWorld。以下是HelloWorld类的源代码。

import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
public class HelloWorld extends JApplet {
    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel lbl = new JLabel("Hello World");
                    add(lbl);
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }
}

Java applets inherit significant functionality from the Applet or JApplet class, including the capabilities to communicate with the browser and present a graphical user interface (GUI) to the user.

一个将使用来自 Swing(Java 的 GUI 工具包)的 GUI 组件的小程序应该扩展javax.swing.JApplet基类,它提供了与 Swing 的 GUI 设施最佳集成。

JApplet提供了一个根窗格,它与 Swing 的JFrameJDialog组件具有相同的顶层组件结构,而Applet只提供了一个基本面板。有关如何使用此功能的更多详细信息,请参见如何使用根窗格。

一个小程序可以扩展java.applet.Applet类,当它不使用 Swing 的 GUI 组件时。

里程碑方法

原文:docs.oracle.com/javase/tutorial/deployment/applet/appletMethods.html

Applet类为小程序执行提供了一个框架,定义了系统在里程碑发生时调用的方法。里程碑是小程序生命周期中的重要事件。大多数小程序会覆盖其中一些或全部方法以适当地响应里程碑。

init 方法

init方法适用于不需要太长时间的一次性初始化。init方法通常包含通常放在构造函数中的代码。小程序通常没有构造函数的原因是在调用其init方法之前不能保证其具有完整的环境。保持init方法简短,以便您的小程序可以快速加载。

start 方法

每个在初始化后执行任务(除了直接响应用户操作)的小程序必须覆盖start方法。start方法启动小程序的执行。从start方法快速返回是一个良好的实践。如果需要执行计算密集型操作,最好为此目的启动一个新线程。

stop 方法

大多数覆盖start方法的小程序也应该覆盖stop方法。stop方法应该暂停小程序的执行,这样当用户不查看小程序页面时,它就不会占用系统资源。例如,显示动画的小程序在用户不查看时应该停止尝试绘制动画。

destroy 方法

许多小程序不需要覆盖destroy方法,因为它们的stop方法(在destroy之前调用)将执行关闭小程序执行所需的所有任务。但是,destroy方法适用于需要释放额外资源的小程序。


注意: 尽量保持destroy方法的实现尽可能简短,因为不能保证该方法会完全执行。在长destroy方法完成之前,Java 虚拟机可能会退出。


小程序的生命周期

原文:docs.oracle.com/javase/tutorial/deployment/applet/lifeCycle.html

小程序可以对以下重大事件做出反应:

  • 它可以初始化自身。
  • 它可以开始运行。
  • 它可以停止运行。
  • 它可以执行最终清理,为即将卸载做准备。

本节介绍了一个新的小程序Simple,它使用了所有这些方法。与 Java 应用程序不同,小程序不需要实现main方法。

这是Simple小程序。

//


注意: 如果您看不到示例运行,请确保在浏览器中启用 JavaScript 解释器,以便部署工具包脚本能够正常运行。


以下是Simple小程序的源代码。该小程序在其生命周期中遇到重要里程碑时会显示描述性字符串,例如当用户首次访问包含小程序的页面时。

import java.applet.Applet;
import java.awt.Graphics;
//No need to extend JApplet, since we don't add any components;
//we just paint.
public class Simple extends Applet {
    StringBuffer buffer;
    public void init() {
        buffer = new StringBuffer();
        addItem("initializing... ");
    }
    public void start() {
        addItem("starting... ");
    }
    public void stop() {
        addItem("stopping... ");
    }
    public void destroy() {
        addItem("preparing for unloading...");
    }
    private void addItem(String newWord) {
        System.out.println(newWord);
        buffer.append(newWord);
        repaint();
    }
    public void paint(Graphics g) {
  //Draw a Rectangle around the applet's display area.
        g.drawRect(0, 0, 
       getWidth() - 1,
       getHeight() - 1);
  //Draw the current string inside the rectangle.
        g.drawString(buffer.toString(), 5, 15);
    }
}

注意: 在此示例中,Applet 类被扩展,而不是 Swing JApplet 类,因为 Swing 组件不需要添加到此小程序中。


加载小程序

由于小程序被加载,您应该看到文本“初始化…启动…”。小程序加载时,会发生以下情况:

  • 创建小程序控制类的一个实例(Applet子类)。
  • 小程序初始化自身。
  • 小程序开始运行。

离开并返回到小程序的页面

当用户离开页面,例如前往另一页时,浏览器会停止并销毁小程序。小程序的状态不会被保留。当用户返回页面时,浏览器会初始化并启动小程序的新实例。

重新加载小程序

当您刷新或重新加载浏览器页面时,当前小程序实例会被停止和销毁,并创建一个新实例。

退出浏览器

当用户退出浏览器时,小程序有机会在浏览器退出之前停止自身并执行最终清理。

下载源代码以进一步实验Simple 小程序示例。

Applet 的执行环境

原文:docs.oracle.com/javase/tutorial/deployment/applet/appletExecutionEnv.html

Java applet 在浏览器的上下文中运行。浏览器中的 Java 插件软件控制 Java applet 的启动和执行。浏览器还有一个 JavaScript 解释器,用于运行网页上的 JavaScript 代码。本主题描述了 Java 平台标准版 6 更新 10 中发布的 Java 插件软件的行为。

Java 插件

Java 插件软件为每个 Java applet 创建一个工作线程。它在 Java Runtime Environment (JRE)软件的一个实例中启动 applet。通常,所有 applet 在同一个 JRE 实例中运行。Java 插件软件在以下情况下启动新的 JRE 实例:

  • 当 applet 请求在特定版本的 JRE 中执行时。
  • 当 applet 指定自己的 JRE 启动参数时,例如堆大小。如果新 applet 的要求是现有 JRE 的子集,则新 applet 使用现有 JRE,否则启动新的 JRE 实例。

如果满足以下条件,applet 将在现有 JRE 中运行:

  • applet 所需的 JRE 版本与现有的 JRE 匹配。
  • JRE 的启动参数满足 applet 的要求。

以下图表显示了 applet 在 JRE 中的执行方式。

Java 插件和 JavaScript 解释器的交互

Java applet 可以调用网页中存在的 JavaScript 函数。JavaScript 函数也允许调用同一网页上嵌入的 applet 的方法。Java 插件软件和 JavaScript 解释器协调 Java 代码到 JavaScript 代码的调用以及 JavaScript 代码到 Java 代码的调用。

Java 插件软件是多线程的,而 JavaScript 解释器在单个线程上运行。因此,为了避免线程相关问题,特别是当多个 applet 同时运行时,请保持 Java 代码和 JavaScript 代码之间的调用简短,并尽量避免往返。查看以下主题以了解 Java 代码和 JavaScript 代码之间的交互更多信息:

  • 从 Applet 调用 JavaScript 代码
  • 从 JavaScript 代码调用 Applet 方法

开发 Applet

原文:docs.oracle.com/javase/tutorial/deployment/applet/developingApplet.html

使用基于组件的架构设计的应用程序可以开发为 Java applet。考虑具有基于 Swing 的图形用户界面(GUI)的 Java applet 的示例。通过组件化设计,GUI 可以使用更小的构建块或组件构建。以下是用于创建 applet GUI 的一般步骤:

  • 创建一个名为MyTopJPanel的类,它是javax.swing.JPanel的子类。在MyTopJPanel类的构造函数中布置您的 applet 的 GUI 组件。
  • 创建一个名为MyApplet的类,它是javax.swing.JApplet的子类。
  • MyAppletinit方法中,实例化MyTopJPanel并将其设置为 applet 的内容窗格。

以下部分通过使用动态树演示 applet 更详细地探讨这些步骤。如果您对 Swing 不熟悉,请参阅使用 Swing 创建 GUI 以了解更多关于使用 Swing GUI 组件的信息。

//


注意: 如果您看不到示例运行,请确保在浏览器中启用 JavaScript 解释器,以便部署工具包脚本能够正常运行。


创建顶部JPanel

创建一个是JPanel子类的类。这个顶部JPanel充当所有其他 UI 组件的容器。在下面的示例中,DynamicTreePanel类是最顶层的JPanelDynamicTreePanel类的构造函数调用其他方法来正确创建和布局 UI 控件。

public class DynamicTreePanel extends JPanel implements ActionListener {
    private int newNodeSuffix = 1;
    private static String ADD_COMMAND = "add";
    private static String REMOVE_COMMAND = "remove";
    private static String CLEAR_COMMAND = "clear";
    private DynamicTree treePanel;
    public DynamicTreePanel() {
        super(new BorderLayout());
        //Create the components.
        treePanel = new DynamicTree();
        populateTree(treePanel);
        JButton addButton = new JButton("Add");
        addButton.setActionCommand(ADD_COMMAND);
        addButton.addActionListener(this);
        JButton removeButton = new JButton("Remove");
        // ...
        JButton clearButton = new JButton("Clear");
        // ...
        //Lay everything out.
        treePanel.setPreferredSize(
            new Dimension(300, 150));
        add(treePanel, BorderLayout.CENTER);
        JPanel panel = new JPanel(new GridLayout(0,3));
        panel.add(addButton);
        panel.add(removeButton); 
        panel.add(clearButton);
        add(panel, BorderLayout.SOUTH);
    }
    // ...
}

创建 Applet

对于具有基于 Swing 的 GUI 的 Java applet,请创建一个类,它是javax.swing.JApplet的子类。不包含基于 Swing 的 GUI 的 applet 可以扩展java.applet.Applet类。

覆盖 applet 的init方法以实例化您的顶部JPanel类并创建 applet 的 GUI。DynamicTreeApplet类的init方法在 AWT 事件分发线程中调用createGUI方法。

package appletComponentArch;
import javax.swing.JApplet;
import javax.swing.SwingUtilities;
public class DynamicTreeApplet extends JApplet {
    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
        } catch (Exception e) { 
            System.err.println("createGUI didn't complete successfully");
        }
    }
    private void createGUI() {
        //Create and set up the content pane.
        DynamicTreePanel newContentPane = new DynamicTreePanel();
        newContentPane.setOpaque(true); 
        setContentPane(newContentPane);        
    }        
}

Java 中文官方教程 2022 版(十一)(3)https://developer.aliyun.com/article/1486355

相关文章
|
7月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
360 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
3月前
|
Oracle Java 关系型数据库
java 编程基础入门级超级完整版教程详解
这份文档是针对Java编程入门学习者的超级完整版教程,涵盖了从环境搭建到实际项目应用的全方位内容。首先介绍了Java的基本概念与开发环境配置方法,随后深入讲解了基础语法、控制流程、面向对象编程的核心思想,并配以具体代码示例。接着探讨了常用类库与API的应用,如字符串操作、集合框架及文件处理等。最后通过一个学生成绩管理系统的实例,帮助读者将理论知识应用于实践。此外,还提供了进阶学习建议,引导学员逐步掌握更复杂的Java技术。适合初学者系统性学习Java编程。资源地址:[点击访问](https://pan.quark.cn/s/14fcf913bae6)。
305 2
|
8月前
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
9月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
8405 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
8月前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
133 4
|
8月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
145 1
|
9月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
556 26
|
8月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
415 0
|
9月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
9月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)

热门文章

最新文章