Java语言入门

Download java eBook

备注

Java编程语言是......

  • 通用 :它旨在用于在各种应用程序域中编写软件,并且缺少任何特定域的专用功能。

  • 基于类 :其对象结构在类中定义。类实例始终具有在其类定义中指定的那些字段和方法(请参阅类和对象 )。这与JavaScript等非基于类的语言形成对比。

  • 静态类型 :编译器在编译时检查是否遵守变量类型。例如,如果方法需要String类型的参数,那么在调用方法时该参数实际上必须是一个字符串。

  • 面向对象 :Java程序中的大多数东西都是类实例,即状态(字段)和行为的捆绑(对数据进行操作并形成对象与外部世界的接口的方法)。

  • 可移植 :它可以在任何具有javac平台上javac ,生成的类文件可以在任何具有JVM的平台上运行。

Java旨在让应用程序开发人员“编写一次,随处运行”(WORA),这意味着编译的Java代码可以在支持Java的所有平台上运行,而无需重新编译。

Java代码被编译为字节码( .class文件),而后者又由Java虚拟机(JVM)解释。理论上,由一个Java编译器创建的字节码应该在任何JVM上以相同的方式运行,即使在不同类型的计算机上也是如此。 JVM可能(并且在实际程序中)将选择编译为本机机器命令,经常执行字节码的部分。这称为“即时(JIT)编译”。

Java版本和版本

Sun / Oracle定义了三个Java版本:

  • Java标准版(SE)是专为一般用途而设计的版本。
  • Java Enterprise Edition(EE)添加了一系列用于在Java中构建“企业级”服务的工具。 Java EE 单独介绍
  • Java Micro Edition(ME)基于Java SE的子集,旨在用于资源有限的小型设备。

Java SE / EE / ME版本有一个单独的主题。

每个版本都有多个版本。 Java SE版本如下所示。

安装Java

有关安装Java(标准版)的单独主题。

编译和运行Java程序

有以下单独的主题:

下一步是什么?

以下是继续学习和理解Java编程语言的主题链接。这些主题是Java编程的基础知识,可帮助您入门。

测试

虽然Java对标准库中的测试没有任何支持,但是有第三方库旨在支持测试。两个最受欢迎的单元测试库是:

其他

  • 设计模式中介绍了Java的设计模式
  • 为Android编程是覆盖在Android的
  • Java EE中介绍了Java Enterprise Edition技术。
  • 甲骨文的JavaFX技术覆盖的JavaFX

1.在“ 版本”部分中, 生命周期结束(免费)日期是Oracle将停止向其公共下载站点发布Java SE的更多更新的日期。需要持续访问关键错误修复和安全修复程序以及Java SE常规维护的客户可以通过Oracle Java SE支持获得长期支持

版本

Java SE版本代码名称寿命终止(免费1发布日期
Java SE 9(早期访问) 没有 未来 2017年7月27日
Java SE 8 蜘蛛未来 2014年3月18日
Java SE 7 海豚 2015年4月14日 2011-07-28
Java SE 6 野马 2013年4月16日 2006-12-23
Java SE 5 2009-11-04 2004-10-04
Java SE 1.4 梅林在2009-11-04之前 2002-02-06
Java SE 1.3 红隼在2009-11-04之前 2000年5月8日
Java SE 1.2 操场在2009-11-04之前 1998-12-08
Java SE 1.1 没有 在2009-11-04之前 1997年2月19日
Java SE 1.0 橡木在2009-11-04之前 1996年1月21日

创建您的第一个Java程序

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

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

在Ideone上运行

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

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

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

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

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

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

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

将错误'javac' is not recognized as an internal or external command, operable program or batch file. 相当常见的'javac' is not recognized as an internal or external command, operable program or batch file. 即使您已经安装了JDK 并且能够从IDE ex运行该程序。 eclipse 等因为默认情况下路径没有添加到环境中。

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

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

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

要在Windows XP / Vista / PATH 编辑PATH 环境变量:

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

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

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

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

现在这应该解决。

对于基于Linux的系统,请尝试此处

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

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

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

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

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

这将输出到您的控制台:

你好,世界!

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

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

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


仔细看看Hello World计划

该“Hello World”程序包含一个文件,其中包含一个的HelloWorld 类定义,一个main 方法,和里面的声明main 方法。

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

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

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

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

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

这个主要方法接受:

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

非必需部件:

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

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

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

public class HelloWorld {
    public static void main(String[] args) {
        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中的每个语句都必须以分号( ; )结尾。

然后关闭方法体和类体。

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

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

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

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

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

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

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

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

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

输出:

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

在ideone上运行

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


1 - 因为HelloWorld 类与System 类关系不大,所以它只能访问public 数据。

Stats

13735 Contributors: 176
Tuesday, July 18, 2017
许可下: CC-BY-SA

不隶属于 Stack Overflow
Rip Tutorial: info@zzzprojects.com

下载电子书