Java 是一种通用的编程语言,几乎在每个涉及计算机的行业中都有应用。Java 最强大的功能在于它运行在 Java 虚拟机 (JVM) 中,JVM 是一种将 Java 代码转换为与您的操作系统兼容的字节码的层。只要您的操作系统存在 JVM,无论该操作系统是在服务器上(或者就此而言是无服务器),还是在台式机、笔记本电脑、移动设备或嵌入式设备上,Java 应用程序都可以在其上运行。
这使得 Java 成为程序员和用户的流行语言。程序员知道他们只需要编写一个版本的软件,就可以得到一个可以在任何平台上运行的应用程序,而用户知道应用程序可以在他们的计算机上运行,而无需考虑他们使用的操作系统。
许多语言和框架都是跨平台的,但没有一种能提供相同级别的抽象。使用 Java,您的目标是 JVM,而不是操作系统。对于程序员来说,当面对多个编程挑战时,这是阻力最小的路径,但只有当您知道如何编写 Java 程序时,它才有用。如果您刚开始接触 Java 编程,以下是您需要了解的七个基本技巧。
但首先,如果您不确定是否已安装 Java,您可以在终端(例如 Bash 或 PowerShell)中运行以下命令来查找
$ java --version
openjdk 12.0.2 2019-07-16
OpenJDK Runtime Environment 19.3 (build 12.0.2+9)
OpenJDK 64-Bit Server VM 19.3 (build 12.0.2+9, mixed mode, sharing)
如果您收到错误或没有任何返回,那么您应该安装 Java 开发工具包 (JDK) 以开始 Java 开发。或者,如果您只需要运行 Java 应用程序,请安装 Java 运行时环境 (JRE)。
1. Java 包
在 Java 中,相关的类被分组到一个包中。当您下载 JDK 时获得的基本 Java 库被分组到以 java 或 javax 开头的包中。包的功能类似于计算机上的文件夹:它们为相关元素提供结构和定义(在编程术语中,称为命名空间)。可以从独立的程序员、开源项目和商业供应商处获得额外的包,就像可以为任何编程语言获得库一样。
当您编写 Java 程序时,您应该在代码顶部声明一个包名。如果您只是编写一个简单的应用程序来开始使用 Java,您的包名可以像您的项目名称一样简单。如果您使用 Java 集成开发环境 (IDE),如 Eclipse,它会在您启动新项目时为您生成一个合理的包名。
package helloworld;
/**
* @author seth
* An application written in Java.
*/
否则,您可以通过查看包的路径相对于项目的广泛定义来确定包的名称。例如,如果您正在编写一组类来辅助游戏开发,并且该集合名为 jgamer,那么您可能在其中有几个独特的类。
package jgamer.avatar;
/**
* @author seth
* An imaginary game library.
*/
您包的顶层是 jgamer,它内部的每个包都是后代,例如 jgamer.avatar 和 jgamer.score 等等。在您的文件系统中,结构反映了这一点,jgamer 是包含文件 avatar.java 和 score.java 的顶层目录。
2. Java 导入
作为一名多语言程序员,您最有趣的体验之一是尝试跟踪您是在哪种编程语言中include、import、use、require 还是 其他术语 来引用库。记录一下,Java 在导入代码所需的库时使用 import 关键字。
package helloworld;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author seth
* A GUI hello world.
*/
导入的工作原理基于环境的 Java 路径。如果 Java 不知道 Java 库存储在系统上的哪个位置,则导入将无法成功。只要库存储在系统的 Java 路径中,导入就可以成功,并且可以使用库来构建和运行 Java 应用程序。
如果库预计不会在 Java 路径中(例如,因为您自己编写库),则可以将库与您的应用程序捆绑在一起(在许可证允许的情况下),以便导入按预期工作。
3. Java 类
Java 类使用关键字 public class 以及与其文件名镜像的唯一类名来声明。例如,在项目 helloworld 的文件 Hello.java 中
package helloworld;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author seth
* A GUI hello world.
*/
public class Hello {
// this is an empty class
}
您可以在类中声明变量和函数。在 Java 中,类中的变量称为字段。
4. Java 方法
Java 方法本质上是对象内的函数。它们被定义为 public(意味着可以被任何其他类访问)或 private(限制其使用),基于预期的返回数据类型,例如 void、int、float 等等。
public void helloPrompt(ActionEvent event) {
String salutation = "Hello %s";
string helloMessage = "World";
message = String.format(salutation, helloMessage);
JOptionPane.showMessageDialog(this, message);
}
private int someNumber (x) {
return x*2;
}
当直接调用方法时,它通过其类和方法名称引用。例如,Hello.someNumber 引用 Hello 类中的 someNumber 方法。
5. 静态 (Static)
Java 中的 static 关键字使代码中的成员可以独立于包含它的对象进行访问。
在面向对象编程中,您编写的代码充当“对象”的模板,这些“对象”在应用程序运行时生成。例如,您不编写特定的窗口,而是基于 Java 中的窗口类(并由您的代码修改)的窗口实例。由于您编写的任何内容在应用程序生成其实例之前都“不存在”,因此大多数方法和变量(甚至嵌套类)在创建它们所依赖的对象之前都无法使用。
但是,有时您需要在应用程序创建对象之前访问或使用对象中的数据(例如,应用程序无法生成红球,除非首先知道该球应该是红色的)。对于这些情况,可以使用 static 关键字。
6. Try 和 Catch
Java 非常擅长捕获错误,但只有在您告诉它该怎么做时,它才能优雅地恢复。在 Java 中尝试执行操作的级联层次结构以 try 开始,回退到 catch,并以 finally 结束。如果 try 子句失败,则调用 catch,最后,总是会有 finally 来执行一些明智的操作,而不管结果如何。这是一个例子
try {
cmd = parser.parse(opt, args);
if(cmd.hasOption("help")) {
HelpFormatter helper = new HelpFormatter();
helper.printHelp("Hello <options>", opt);
System.exit(0);
}
else {
if(cmd.hasOption("shell") || cmd.hasOption("s")) {
String target = cmd.getOptionValue("tgt");
} // else
} // fi
} catch (ParseException err) {
System.out.println(err);
System.exit(1);
} //catch
finally {
new Hello().helloWorld(opt);
} //finally
} //try
这是一个健壮的系统,旨在避免不可恢复的错误,或者至少为您提供向用户提供有用反馈的选项。经常使用它,您的用户会感谢您的!
7. 运行 Java 应用程序
理论上,通常以 .java 结尾的 Java 文件可以使用 java 命令运行。但是,如果应用程序很复杂,那么运行单个文件是否会产生任何有意义的结果是另一个问题。
要直接运行 .java 文件
$ java ./Hello.java
通常,Java 应用程序以 Java 存档 (JAR) 文件形式分发,以 .jar 结尾。JAR 文件包含一个清单文件,指定主类、有关项目结构的一些元数据以及运行应用程序所需的所有代码部分。
要运行 JAR 文件,您可能可以双击其图标(取决于您如何设置操作系统),或者您可以从终端启动它
$ java -jar ./Hello.jar
Java 适合所有人
Java 是一种强大的语言,并且由于 OpenJDK 项目和其他倡议,它是一个开放规范,允许 IcedTea、Dalvik 和 Kotlin 等项目蓬勃发展。学习 Java 是为在各种行业工作做好准备的好方法,更重要的是,有很多使用它的绝佳理由。
3 条评论