Java 是一种通用的编程语言,以某种方式用于几乎所有涉及计算机的行业。 Java 最强大的功能是它在 Java 虚拟机 (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 条评论