Java编程入门(2.6):编程环境

2.6 编程环境

尽管 Java 是一种高级语言,但是在不同环境中,Java程序的创建、编译和编辑是有很大差异的。有两种基本的方法: 一种是命令行环境,用户输入命令然后计算机响应,还有一种是集成开发环境(IDE),用户使用键盘、鼠标和用户图形界面进行交互。对于 Java 编程环境,虽然只有一种常用的命令行环境,不过还有些不错的 IDEs ,比如 Eclipse、NetBeans 和 BlueJ。在本节中,关于 Java 编程环境我无法给出完整或明确的信息,但我会提供足够的信息,让你可以编译并运行这本教科书上的例子。(强烈建议读者去阅读、编译和运行示例。源代码可以从本书的网页:http://math.hws.edu/javanotes下载。)

有一点要记住的是,完全没必要花钱学习 Java 编程(当然,除了购买计算机)。你需要的一切,都能免费从网上下载到。

2.6.1 开发工具包

用于 Java 编程的基本系统通常被称为 JDK(Java 开发工具包)。它是 Java SE 的一部分,Java SE 就是 Java “标准版”(Java EE 用于服务器,Java ME 用于移动设备)。需要注意的是 Java SE 有两个版本,一个是开发工具版(JDK),还有一个运行环境版本(JRE)。JRE 可以用来运行 Java 程序,但是不允许使用它来编译你自己的 Java 程序。JDK 包含了 JRE,也可以让你编译程序。使用本教材我们需要一个 JDK 。

Java 由 Sun Microsystems 公司开发,该公司现在是 Oracle 公司的一部分。Oracle 开发了适用于各个平台的 JDK,Windows、Mac OX 和 Linux,在 Java 网站上能免费下载。许多 Windows 系统的计算机已经安装了 Java 运行环境了,不过你可能需要安装 JDK。一些版本的 Linux 默认安装了 JDK 或者在其他的安装介质上包含了 JDK。Mac OS 目前不预装 JDK。如果需要下载安装 JDK,确保 JDK 的版本是 Java7、Java8或者更新的版本。2014年夏季,可以从 http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载到。

如果你的计算机上正确的安装了 JDK,那你可以使用命令行环境编译和运行 Java 程序。 使用 IDE 也需要 JDK,不过可能在下载 IDE 的时候已经包含了。

2.6.2 命令行环境

许多现代计算机用户觉得命令行环境是相当陌生而且不直观的。它与大多数人习惯的用户图形界面有很大的不同。不过,稍加练习后再使用基本的命令行环境会变得十分高效。

使用命令行环境,你需要打开一个能输入命令的窗口。在 Windows 系统中,你可以通过运行一个叫 cmd 的程序来打开命令窗口。(在 Windows 7 中,点击“开始/所有程序/附件/命令提示符 ”。 在 Windows 8 中,同时按下 “开始+X”键,弹出“开始菜单”,然后选择“命令提示符” 。) 在 Mac OS 中,想要运行终端程序,可以在应用程序文件夹内实用程序文件夹中找到。在 Linux 中有多种方法,旧的程序叫 xterm,建议在应用程序菜单中寻找“终端”。

无论使用哪种类型的计算机,当你打开一个命令窗口,它将以某种形式显示一些提示信息。在命令提示符后键入命令,然后按回车键。计算机将执行该命令,然后在命令窗口中显示输出信息,然后又重新显示提示,你可以输入下一个命令。命令行环境中核心概念之一就是包含键入命令的文件的当前目录。(“目录”和”文件夹”是同一个意思)。通常情况下,当前目录的名称是命令提示符的一部分。你可以通过键入命令 dir (在 Windows) 或 ls (在 Linux 和 Mac OS) 来显示当前目录中的文件列表。当首次打开的窗口时,当前目录是你的主目录,你所有的文件都存储在该位置。你可以使用 cd 命令加上你想要使用的目录名称来更改当前的目录。例如,若要更改到您的 Desktop 目录,键入命令 cd Desktop,然后按回车。

你应该创建一个目录(就是一个文件夹),专门存放 Java 工作。例如,在 home 目录下创建一个名为 javawork 的目录。你可以在计算机 GUI 环境下创建;另外一种方法就是打开一个命令行窗口,进入到你想要创建新目录的目录下,然后输入命令 mkdir javawork。当你想要编程的时候,打开一个命令窗口,使用 cd 命令进入到工作目录下。当然,你可以有多个工作目录来进行你的 Java 工作; 按照你喜欢的方式来管理文件就行。

使用Java中,最基本的命令是 javac 和 java; javac 用来编译 Java 源代码, java 用来运行独立的 Java 应用程序。如果你的计算机正确的安装了 JDK,当你在命令行中输入这两个命令是可以正确识别出来的。 试试使用 java -version 和 javac -version 这两个命令,可以显示 你安装的 Java 是什么版本的。如果你得到的是“Command not found”这样的信息,那肯定是 Java 没有正确的安装。如果 “java” 命令正常运行了,但是 “javac” 却不正常,那应该是安装了 Java Runtime ,而不是 开发套件(Development Kit)。(在 Windows系统上,安装完 JDK ,你需要修改 Windows PATH 环境变量,才能正常使用这些 命令。有关如何执行此操作的信息,可以在 Oracle 下载网站上查看 JDK 安装说明。)

测试 javac 命令,将 TextIO.java 文件复制到你的工作目录下。(如果你从网站上下载了这本书,你可以在 source 目录下找到这个文件;你可以在计算机 GUI 环境下使用复制和粘贴功能将这个文件放到工作目录中。或者,你可以在本书的网站到找到 TextIO.java 页面然后使用在你的浏览器中使用“另存为”命令保存到你的工作目录中。)输入命令:

<code>javac  TextIO.java
</code>

这将会编译 TextIO.java 文件,然后在相同的目录下生成一个名为 TextIO.class 的字节码文件。注意,如果命令执行成功了,计算机不会给你任何回应;它只会重新显示命令提示符,告诉你可以准备下一个命令了。

测试 java 命令,从这本书的源代码目录复制一个像 Interest2.java 这样的简单程序到你的工作目录中,或者直接从网站上下载。首先,使用命令

<code>javac  Interest2.java
</code>

编译这个程序。记住,TextIO 必须已经在相同的目录中,这样才能成功。然后你就可以使用命令

<code>java  Interest2
</code>

来运行该程序了。

注意,java 命令后面跟的是程序的名称 Interest2,不是 Java 源代码的文件名,也不是编译后的 class 文件名。当你使用这个命令的时候,程序就会运行。你会被要求输入一些信息,然后你要在命令窗口中输入你的答案,在命令行的末尾按回车键。当程序结束后,你将会看到命令提示符,然后就能输入另一个命令了。(注意,执行“java TextIO”命令是没有意义的,因为 TextIO 没有 main() 方法,所以执行该命令并不会像其他程序一样能运行起来。)

你可以遵循类似的步骤运行本书中所有的例子。有些示例需要辅助类,如没有main函数的 TextIO。别忘了将所需的类文件放在同一目录中,以便程序引用它们。(你可以使用.java 或.class 文件为所需的类。)

若要创建你自己的程序,你需要一个文本编辑器。文本编辑器是一个允许你创建和保存纯文本文档的计算机程序。将文档保存为纯文本,并且没有任何特殊的编码或格式信息,这是很重要的。使用 Word 处理文档并不合适,除非你另存为纯文本。一个好的文本编辑器可以使编程更加令人愉快。Linux 附带了几个不错的文本编辑器。在 Windows 中,你可以在紧要关头使用记事本,不过你肯定会希望使用更好的工具。对于 Mac OS 中,你可能会下载免费的 TextWrangler 应用程序。跨平台的话可以使用 jedit,这是一款对程序员友好的文本编辑器,本身就是用 java 编写的,可以从 www.jedit.org 免费下载。

编写程序时,你可以打开一个命令行窗口,进入存放源代码的工作目录。启动你的文本编辑器,双击图标或者从开始菜单中选择都行。将代码输入到编辑器窗口,或者直接打开一个你想要修改的源代码文件。将文件保存到你的工作目录中。请记住,Java 源代码文件的名称必须以”.java”结束,而文件名必须与该文件中定义的类的名称相匹配。 文件保存在你的工作目录,转到命令窗口并使用 javac 命令来编译它,如上文所述。如果在代码中有语法错误,命令窗口会显示这些错误。每个错误消息包含计算机发现了这个错误的文件中的行号。返回到编辑器中并尝试修复一个或多个错误,保存然后再次尝试 javac 命令编译。(建议先修复前面的一些错误,有时候修正了这些错误其他的错误也会消失。)请记住,当 javac 命令最后成功了,没有任何的消息提示。然后你可以使用 java 命令来运行你的程序,如上文所述。如果你已经编译该程序,那你想运行几次都行,并且不用重新编译。

这真的是这么简单: 保持编辑器和命令行窗口打开。编辑、 保存和编译直到你排除了所有的语法错误。(记住要将文件保存然后再编译它 — — 编译器只看到已保存的文件,而不是在编辑器窗口中的版本。)当你运行该程序时,你可能会发现它有语义错误,导致其无法正常运行。这种情况的话,你必须回到编辑/保存/编译循环来尝试查找并修复问题。

2.6.3 Eclipse

在集成开发环境中,一切你需要创建、编译和运行的程序被整合成单一的软件包,使用大多数计算机用户都熟悉的图形用户界面。现在有很多这样的 java 程序开发 IDE,从简单包装 JDK 到集成大量功能、高度复杂的应用程序。对于初学程序员来说,使用 IDE 是有些“危险”的,因为学习使用 IDE 的成本可能比学习编程的成本要高。然而,我自己编程一般使用 Eclipse,我的学生们如果对于命令行的使用有一定经验了,我会推荐给他们 Eclipse。我们讨论的更多的是 Eclipse 的细节,其他两个 IDE,NetBeans 和 BlueJ 讨论的少一些。这些 IDE 的功能对于初学程序员是非常有用的,虽然初学者会忽视它们一些高级功能。

你可以从 eclipse.org 上下载 Eclipse。它是免费的。Eclipse 本身就是用 Java 编写的。它需要 Java 运行时环境,但不是一定是 JDK,因为它包含自己的编译器。如上文所述,在安装 Eclipse 之前,你要确保计算机上安装了 JRE 或 JDK,版本为 7 或更高版本。Eclipse 有多个版本,你可以选择 “Eclipse IDE for Java Developers(Java 开发者版)。”

第一次启动 Eclipse,将会要求你指定一个工作区,这是你所有的工作存储的目录。你可以使用默认名称,或提供自己的。启动完成后,将会看到一个大的”欢迎”界面,里面有许多文档和教程链接。你可以通过单击“Welcome”旁边的”X”关闭该欢迎界面,你可以从“Help”菜单栏中选择“Welcome”回到该界面。

Eclipse GUI 由一个大的窗口划分成几个部分组成。每个部分包含一个或多个视图。例如,视图可以是一个文本编辑器,它可以是一个程序执行 i/o 操作的地方,或者它可以包含所有项目的列表。如果在一个窗口中有几个视图,可以通过选择顶部的 tab 来选择要显示的视图。每个视图显示了不同类型的信息。整个的视图集称为 Perspective。Eclipse 对于不同的任务 使用不同的 Perspective 来展现不同类型的信息,不同的视图。对于编译和运行程序来说,你只需要默认的 “Java perspective”。当你更有经验的时候,你可能需要使用”Debug perspective”,它的功能旨在帮助你查找程序中的语义错误。

Java Perspective 在窗口中间有一个面积很大的文本编辑器。这就是你创建、编写程序的地方。左边的是包资源管理器视图,其中包含你的 Java 项目和源代码文件的列表。右边的一些视图我觉得没有多大用处,建议通过名称旁边的 “X” 关掉它们。有用的几个视图可以放在窗口编辑区域下方。如果不小心关掉了其中一个重要的视图,如包资源管理器,你可以从”Window”菜单中的”Show View”子菜单中选择它。还可以从”Window”菜单中选择”Reset Perspective”,来重置整个窗口。

不管在 Eclipse 中做什么,你首先得有一个项目。若要创建一个 Java 项目,选择”File”的子菜单”New”,并选择”Java Project”。在弹出的窗口中,必须填写项目的”项目名称”,然后单击”完成”按钮。项目名称可以是任何你喜欢的东西。该项目会在”包资源管理器”视图中显示。单击项目名称旁边的小三角或加号可查看该项目的内容。假设你使用默认设置,那应该有一个名为”src”的目录,这是存放 Java 代码源文件的目录。它还包含”JRE 系统库”,这是 Java 的标准内置类的集合。

要运行本书中 TextIO 示例,必须将 TextIO.java 的源代码文件添加到你的项目。如果你已经从网站上下载了本书,你可以从源码目录中找到 TextIO.java 文件并复制。或者你可以找到网上的文件,然后使用 Web 浏览器的”另存为”命令保存到计算机上。将 TextIO 加入到你的项目最简单的方法就是先在计算机上找到源码文件,然后将文件图标拖拽到 Eclipse 你的项目名上。如果没有效果的话,可以尝试使用复制和粘贴操作:右键单击该文件图标 (在 Mac OS 上是 control-click),从弹出菜单中选择”复制”,在 Eclipse 窗口中右键单击项目的 src 文件夹,然后选择”粘贴”。(一定要将它粘贴到 src 文件夹下,而不是项目本身; 源文件夹(src)以外的文件不会被视为 Java 源代码文件)。另一个选择就是是直接到你的工作区目录里面的 src 文件夹中添加文件。然而,Eclipse 不会自动识别以这种方式添加的文件;若要使 Eclipse 找到该文件,右键单击 Eclipse 窗口中的项目名称并从弹出式菜单中选择”刷新”。一般情况下,TextIO 应该出现在项目的”src”下包名为”default package”中。一旦文件位于此列表中,可以通过双击来打开它, 它将出现在 Eclipse 窗口的编辑区中。

想要运行这本教科书上的 Java 程序,可以按照复制 TextIO.java 的方式来复制源码到你的 Eclipse 中去。要运行该程序,右键单击编辑器窗口,或者在Package Explorer视图中的文件名(或在Mac OS 中 control-click )。在弹出的菜单,进入“Run As(运行方式)”子菜单中,选择“Java Application(Java应用程序)”。该程序将被执行。如果程序写到标准输出,输出将显示在“Console(控制台)”视图,在Eclipse窗口编辑区下方区域。如果程序使用 TextIO 作为输入,必须到”控制台”视图中键入所需的输入 — — 先单击”控制台”视图,再打字输入,以便键入的字符被发送到窗口正确的位置。(有更简单的方法来运行一个程序,找到并单击在 Eclipse 的工具条中的小”Run(运行)”按钮)。请注意,在 Eclipse 中运行一个程序,它自动编译。没有单独的编译步骤。

在相同的 Eclipse 项目中你可以有多个程序,或者可以创建附加的项目来更好的组织工作。别忘了把 TextIO.java 拷贝到需要它的项目中。

在 Eclipse 中创建一个新的 Java 程序,您必须创建一个新的 Java 类。右键单击”项目资源管理器”视图中的 Java 项目名称。转到弹出菜单中的“New(新建)”子菜单,然后选择“Class(类)”。(另外,Eclipse窗口顶部工具栏有一个小图标,可以点击它快速创建一个新的 Java 类。)在打开的新窗口中输入你要创建的类的名称。类名必须是合法的 Java 标识符。注意,你需要的是类名,而不是源代码文件名称,所以不需要写 .java 后缀。本书示例使用的都是“default package(默认包)”,所以要删除 “Package.” 方框中的内容。(请参阅本节有关包更多信息的最后一节。)最后,点击“完成”按钮创建类。该类应该出现在“src”文件夹“默认包”中,它应该在编辑区自动打开,让你可以开始在程序中输入。

Eclipse 有一些功能可以辅助你方便的编写代码。它会用带锯齿的红线标示出语法错误,在某些情况下会在编辑窗口的左侧边框放置一个错误标记。如果你在错误标记或在错误本身悬停鼠标指针,错误的描述将会出现。请注意,没必要立即修正每个错误。继续完善程序有些错误会自动消失。如果错误标记显示一个小“灯泡,”Eclipse 提示你如何修正错误。点击灯泡 – 或者干脆将鼠标悬停在错误上 – 获取修复错误方案列表,然后双击选择应用该方案。例如,如果你在程序中使用未声明的变量,Eclipse 将提议你声明该变量。实际上,你可以使用此纠错功能在 Eclipse 上编写高质量的代码。不幸的是,很多修正的建议你并不理解,除非你更多的了解 Java 语言,采用你不明白的修正方案并不是一个好主意,往往会使得最后结果更糟糕。

Eclipse 还会提示拼写错误的意见,并使用锯齿红线标示出来。将鼠标悬停在错误上得到推荐的正确拼写列表。

另一个 Eclipse 重要的功能是内容辅助。内容辅助可以通过control-space键来调用。它将提供输入时刻任何可能的补全。例如,如果输入一个标识符的一部分,按Ctrl-Space,将获得开头是你键入字符的标识符的列表,使用上下方向键来选择一个列表中的项目,然后按回车键。(也可以用鼠标单击某一项以选择它,或按Escape键以关闭该列表。)如果你按control-space时只有一种补全,它将自动插入。默认情况下,当你键入一部分字符,在短暂的延迟后,内容辅助也将自动弹出。例如,如果你输入“TextIO”,停顿一秒不到的时间,你会得到在TextIO类中的所有子程序的列表。就个人而言,我觉得这个自动激活令人讨厌。你可以在 Eclipse 首选项中禁用它。( Java / Editor / Content Assist,关闭”Enable auto activation(启用自动激活)”选项)。仍可以通过Control-Space按键调用代码协助。

如果程序没有错误,可以按照上文所述的方法运行它。当你运行的时候发现了错误,很容易返回编辑器中修改然后再次运行。请注意, Eclipse 中有没有”编译”命令。项目中的源代码文件都会自动编译,每当你对其进行修改后也会自动重新编译。

2.6.4 NetBeans

另一个专业编程的IDE是NetBeans。可以从netbeans.org下载。另外,可在Oracle的Java下载页面下载 NetBeans 和 JDK 的捆绑包。

NetBeans 的使用非常类似于Eclipse。连窗口布局也和 Eclipse 窗口非常相似。在NetBeans中使用“New Peoject”命令创建项目。在弹出窗口中选择项目的类型。创建一个”Java Application(Java 应用程序)”。项目创建对话框中会有一个推荐的项目名称,你可以修改它。还有一个选项为项目创建 main class(主类),默认是选中的。如果使用该选项您应该更改类名。对于本书而言,这个名字不应该在一个“package(包)”内,也就是说不能包含句点。

一个项目会有”Source Folder(源码文件夹)”,为该项目的源代码文件的存储位置。可以将 TextIO.java 和其他的文件拖到该文件夹中,或者可以从文件系统中复制和粘贴。运行一个文件,可以右键单击该文件,并从弹出式菜单中选择”Run File”。另外 NetBeans 工具栏中也有”Run”按钮。也没有显式编译步骤。编辑窗口下方区域进行输入和输出,就和 Eclipse 一样。

当你正在编辑文件时,NetBeans 会标记你输入的错误。(记住,再次提醒,当你继续输入后许多错误会自动消失。)如果 NetBeans 编辑器的左旁注中显示一个错误标记与一个灯泡,必须单击灯泡才可获得错误的自动修复方法列表。NetBeans 也有一个叫”Code Completion”的功能,和 Eclipse 的内容辅助功能类似。只需按下Control-Space,就能获取你正在输入的补全列表。

2.6.5 BlueJ

最后,我来介绍 BlueJ,专为那些没有经验并正在学习编程的人设计的 IDE。它是比 Eclipse 或者 NetBeans 简单多了,但是它有一些功能对于学习编程确实很有帮助。BlueJ 可以从 bluej.org 下载。

在 BlueJ 中,你可以在“Project”菜单中选择“New Project”命令来开始一个项目。一个 BlueJ 项目就是一个简单的文件夹。当你创建一个项目,你必须填写一个没有创建过的文件夹名称。文件夹创建后会有一个窗口打开,以显示该文件夹中的内容。文件以图标的方式显示在BlueJ的窗口中。也可以从文件系统拖动 .java文件到该窗口,添加到项目中。它们将被拷贝到项目文件夹中,然后在窗口中显示出来。也可以直接将文件复制到项目文件夹中,但 BlueJ 不会立即显示出来,下次打开该项目时才能看到。例如,你可以用 TextIO.java 或者本书中的示例程序来试试。当你重新启动BlueJ,应该显示的是你最近编辑的一个项目,不过你可以从“Peoject”菜单中打开任何项目。

在项目窗口中有一个按钮,用于创建一个新的类。一个表示类的图标添加到窗口中,同时在项目目录创建.java源代码文件。类图标被添加到窗口中,项目文件夹中会创建一个 .java 源码文件。文件不会自动打开、编辑,编辑一个文件需要在项目窗口中双击该文件图标。编辑器会在单独的窗口中打开。(新创建的类将包含一些可能你不需要的默认代码;,你可以将它们删掉并添加 main () 函数来替代它们)。当你在 BlueJ 编辑器中输入时并不会显示错误。当编译该程序时,才会报告错误。另外,它也不能自动修复错误。它也有内容辅助功能,不过只是 Eclipse 内容辅助的低级版本。只提供类或对象中可用的子程序的列表。输入类名或对象名后通过按 Control-Space键来调取提示列表。

一个编辑器窗口包含一个编译程序的按钮。项目窗口也有编译按钮,用于编译该项目中所有的类。

要运行一个程序,它必须已经被编译。用鼠标右键单击已编译程序的图标。在弹出的菜单中,你会看到“void* main(String[] args)”。从菜单中选择该选项来运行程序。只需在弹出的对话框中点击“OK”。一个单独的窗口将被打开用于现实输入/输出。

BlueJ 中一个比较好用的功能就是可以运行子程序而不仅仅是运行 main 函数。如果一个类包含其他的子程序,右键点击该图标你会看到该列表。 一个弹出对话框允许你输入任何程序所需的参数,如果该程序是一个函数,你会在另一个对话框中看到已执行程序的返回值。这更容易测试独立的子例程。另外,你也可以使用 BlueJ 为一个类创建新对象。项目窗口底部有对象的图标,你可以鼠标右键点击该图标来获取对象中的所有子程序的列表。当然,这可能要到第五章面向对象编程才能用的上。

2.6.6 包问题

在 Java 里每个类都包含一些被称为包的东西。不明确放到哪个包的类就被放在”default”包。在本书中的、几乎所有的例子都在默认包中,我甚至不会在4.5节之前讨论任何有关包的问题。然而,一些 Ide 迫使你注意包问题。

事实上,在 Java 官方的编程指南中是不推荐使用 default(默认) 包的。不过,我已经选择使用它,因为它似乎更容易而且避免初学程序员关注所有包的问题。如果 Eclipse 或者 BlueJ 将类放进一个包中,你可以在创建类的对话框中将包名删除,这样就会使用 default 包。但是如果你在一个包中创建一个类,该源码首行将包含该包名。例如,如果一个类在一个名为 test.pkg 的包中。那么源码的第一行将是

<code>package test.pkg;
</code>

在 IDE 中,这并不会造成任何问题,除非你写的程序依赖于TextIO。非 default 包中的类无法使用 default 中的类。 要使用 TextIO 的话,你可以将 TextIO 移到你使用的非 default 包中去。这意味着源代码文件TextIO.java必须修改以指定包:如上所示必须用正确的包名称添加到该文件最开始的包声明。(如果你从默认包拖拽TextIO.java文件到非默认包中。IDE可能会自动为你修改包声明。)如果将 TextIO 添加到使用它的类相同的包,那么 TextIO 将自动成为可用的类。如果 TextIO 是在不同的包,你必须在另一个类中添加”import”语句使得 TextIO 对其可用。例如,如果 TextIO 是在 textio包,在其他源码文件顶部,package 语句声明后添加语句

<code>import textio.TextIO;
</code>

顺便说一句,如果你在命令行环境中使用包,那么会有一些问题出现。例如,如果一个类在 test.pkg 包中,那么你的工作目录中应该包含一个 test 目录,pkg 目录在 test 目录下,源码文件在 pkg 目录中。然而,当你编译或执行程序时,应该在主目录中,不在子目录中。当编译源码文件时,必须在命令中包含文件路径,在 Linux 或 Mac OS 中使用”javac test/pkg/ClassName.java”。在 Windows 上使用”javac testpkgClassName.java”。用于执行程序的命令是”java test.pkg.ClassName”,使用句点分隔类名和包名称。不过本书中的大部分示例都不用担心包的问题。

原文链接: math.hws.edu 翻译: ImportNew.com - 光光头去打酱油
译文链接: http://www.importnew.com/17156.html
[ 转载请保留原文出处、译者和译文链接。]



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部