创建你的第一个 Java 程序

文本编辑器或名为 HelloWorld.javaIDE 中创建一个新文件。然后将此代码块粘贴到文件中并保存:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

在 Ideone 上运行

注意: 为了让 Java 将其识别为 public class(而不是抛出编译时错误 ),文件名必须与 .java 扩展名的类名(在本例中为 HelloWorld)相同。之前还应该有一个 public 访问修饰符。

命名约定建议 Java 类以大写字符开头,并采用驼峰格式(每个单词的首字母大写)。这些公约建议不要使用下划线(_)和 $$)。

要编译,打开终端窗口并导航到 HelloWorld.java 目录:

cd /path/to/containing/folder/

注意: cd 是更改目录的终端命令。

输入 javac,然后输入文件名和扩展名,如下所示:

$ javac HelloWorld.java

即使安装了 JDK 并且能够从 IDE ex 运行程序,也很常见错误'javac' is not recognized as an internal or external command, operable program or batch file.eclipse 等由于默认情况下路径未添加到环境中。

如果你在 Windows 上得到这个,要解决,首先尝试浏览你的 javac.exe 路径,它最有可能在你的 C:\Program Files\Java\jdk(version number)\bin。然后尝试用下面运行它。

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java

以前当我们调用 javac 时,它与上面的命令相同。只有在这种情况下,你的知识才知道 javac 所在的位置。现在让我们告诉它,这样你就不必每次都输入整个路径。我们需要将此添加到我们的 PATH

要在 Windows XP / Vista / 7/8/10 中编辑 PATH 环境变量:

  • 控制面板⇒系统⇒高级系统设置
  • 切换到高级选项卡⇒环境变量
  • 系统变量中,向下滚动以选择路径⇒编辑

**你不能撤消这个,**所以要小心。首先将现有路径复制到记事本。然后,为了获得 javac 的精确路径,请手动浏览到 javac 所在的文件夹,然后单击地址栏然后复制它。它应该看起来像 c:\Program Files\Java\jdk1.8.0_xx\bin

变量值字段中,粘贴所有现有目录的 IN FRONT ,然后是分号(;)。请勿删除任何现有条目。

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]

现在这应该解决。

对于 Linux 为基础的系统尝试在这里

注:javac 命令调用 Java 编译器。

然后编译器将生成一个名为 HelloWorld.class字节码文件,该文件可以在 Java 虚拟机(JVM)中执行 。Java 编程语言编译器 javac 读取用 Java 编程语言编写的源文件,并将它们编译成 bytecode 类文件。或者,编译器还可以使用 Pluggable Annotation Processing API 处理源文件和类文件中的注释。编译器是命令行工具,但也可以使用 Java Compiler API 调用。

要运行程序,请输入 java,然后输入包含 main 方法的类的名称(在我们的示例中为 HelloWorld)。请注意 .class 如何省略:

$ java HelloWorld

注:java 命令运行的 Java 应用程序。

这将输出到你的控制台:

Hello World!

你已经成功编写并构建了第一个 Java 程序!

注意: 为了识别 Java 命令(javajavac 等),你需要确保:

  • 安装了 JDK(例如 OracleOpenJDK 和其他来源)
  • 你的环境变量已正确设置

你需要使用 JVM 提供的编译器(javac)和执行程序(java)。要找出已安装的版本,请在命令行中输入 java -versionjavac -version。程序的版本号将打印在终端中(例如 1.8.0_73)。

仔细看看 Hello World 计划

Hello World 程序包含一个文件,该文件由 HelloWorld 类定义,main 方法和 main 方法中的语句组成。

public class HelloWorld {

class 关键字开始名为 HelloWorld 的类的类定义。每个 Java 应用程序至少包含一个类定义( 有关类的更多信息 )。

    public static void main(String[] args)  {

这是一个入口点方法(由其名称和 public static void main(String[]) 的签名定义),JVM 可以从中运行你的程序。每个 Java 程序都应该有一个。它是:

  • public:意思是该方法也可以从程序之外的任何地方调用。有关详细信息,请参阅可见性
  • static:意味着它存在并且可以自己运行(在类级别而不创建对象)。
  • void:意思是它没有返回值。注意: 这与 C 和 C++不同,其中返回代码如 int(Java 的方式是 System.exit() )。

这个主要方法接受:

  • Strings 的数组 (通常称为 args)作为参数传递给 main 函数(例如来自命令行参数 )。

几乎所有这些都是 Java 入口点方法所必需的。

非必需部件:

  • 名称 args 是一个变量名,所以它可以被称为你想要的任何东西,虽然它通常被称为 args
  • 它的参数类型是数组(String[] args)还是 VarargsString... args)并不重要,因为数组可以传递给 varargs。

注意: 单个应用程序可能有多个包含入口点(main)方法的类。应用程序的入口点由作为 java 命令的参数传递的类名确定。

在 main 方法中,我们看到以下语句:

        System.out.println("Hello, World!");

让我们逐个元素地分解这个陈述:

元件 目的
System 这表示后续表达式将调用 java.lang 类中的 System 类。
. 这是一个点运算符。点运算符使你可以访问类成员 1 ; 即它的字段(变量)及其方法。在这种情况下,此点运算符允许你引用 System 类中的 out 静态字段。
out 这是包含标准输出功能的 System 类中 PrintStream 类型的静态字段的名称。
. 这是另一个点运算符。此点运算符提供对 out 变量中 println 方法的访问。
println 这是 PrintStream 类中方法的名称。此方法特别将参数的内容打印到控制台中,然后插入换行符。
( 此括号表示正在访问某个方法(而不是字段),并开始将参数传递给 println 方法。
Hello, World! 这是作为参数传递给 println 方法的 String 文字。每个末尾的双引号将文本分隔为 String。
) 此括号表示传递给 println 方法的参数的关闭。
; 这个分号标志着声明的结束。

注意: Java 中的每个语句都必须以分号结尾(;)。

然后关闭方法体和类体。

    }  // end of main function scope
}      // end of class HelloWorld scope 

这是展示 OO 范例的另一个例子。让我们为一个足球队建模一个(是的,一个!)成员。可以有更多,但我们将讨论当我们到达数组。

首先,让我们定义我们的 Team 类:

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}

现在,让我们定义我们的 Member 类:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}

为什么我们在这里使用 private?好吧,如果有人想知道你的名字,他们应该直接问你,而不是伸手掏腰带拿出你的社保卡。这个 private 做了类似的事情:它阻止外部实体访问你的变量。你只能通过 getter 函数返回 private 成员(如下所示)。

将所有内容放在一起,然后添加前面讨论过的 getter 和 main 方法,我们有:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}

输出:

Aurieel
light
10
1

在 ideone 上运行

Test 类中的 main 方法再次成为我们程序的入口点。如果没有 main 方法,我们就无法告诉 Java 虚拟机(JVM)从哪里开始执行程序。

1 - 因为 HelloWorld 类与 System 类几乎没有关系,所以它只能访问 public 数据。