目录
public static void main(String[] args)
前言
Java是一种广泛应用的编程语言,具有简单、面向对象、跨平台等特点。它由Sun Microsystems(现在是Oracle Corporation)于1995年 5 月推出,并在全球范围内得到了广泛的应用和使用。Java的设计目标之一是让开发人员能够编写一次代码,随后在不同的操作系统和硬件平台上运行。
Java语言具有丰富的类库和强大的功能,适用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序和嵌入式系统等。它支持面向对象的编程范式,通过类和对象的概念来组织和管理代码,使得代码更加可维护、重用性高,并提供了封装、继承和多态等特性。
Java还具备内存管理和垃圾回收机制,可以自动管理对象的内存分配和释放,减少了程序员需要手动处理内存的负担。此外,Java还提供了丰富的安全性和可靠性特性,如异常处理机制、访问权限控制和线程管理等,以确保程序的稳定性和安全性。
总之,Java是一门功能强大、灵活性高、可跨平台的编程语言,被广泛用于各种应用程序的开发。无论是初学者还是专业开发人员,都可以通过学习和应用Java来实现自己的编程需求。
推荐阅读:JDK 11 在线中文手册
我的第一个 JAVA 程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
注意:
String args[] 与 String[] args 都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。
接下来我会逐行的解释其中代码的含义
-
public class HelloWorld
- public: 关键字,用于声明一个公共的访问权限修饰符。在Java中,public表示该类、方法或变量可以被其他类访问。
- class: 关键字,用于声明一个类。在Java中,一个Java程序可以由多个类组成,每个类代表着一种对象的定义和行为。
- HelloWorld: 标识符,类的名称。在这个例子中,HelloWorld是一个类,它包含了程序的入口方法main。
-
public static void main(String[] args)
public static void main(String[] args) 是Java程序的入口方法。当Java虚拟机运行程序时,它会首先查找并执行main方法。类似于C语言中的main()函数,只有具有main()方法的Java程序才能被Java虚拟机运行,它是规定的格式。
- public:表示该方法的访问权限,public表示任何地方都可以引用该方法,这样Java虚拟机就能找到main()方法并运行Java程序。
- static:表示该方法是静态方法,不依赖于类的实例对象,属于类本身,在类加载时main()方法也被加载到内存中。
- void:表示main()方法不返回任何值。
- main:是约定俗成的方法名,是规定的。
- String[] args:用于从控制台接收参数。
-
System.out.println
System.out.println是Java语言中的一个方法,可以方便地将数据输出到控制台进行调试、输出结果等操作。
- System: 类名,是Java标准库中提供的一个类。System类提供了与系统相关的功能,如标准输入、标准输出等。
- out: 是System类的静态成员变量,代表标准输出流。通过out可以使用print和println等方法向控制台输出信息。
- println: 方法名,用于将指定的数据打印到标准输出流并换行。在这个例子中,println被用来输出"Hello World"到控制台。
Java简介
Java最初由Sun Microsystems公司开发,并于1995年正式推出。后来,Sun Microsystems被Oracle(甲骨文)公司收购,Java也成为Oracle公司的产品。
Java分为三个体系:
- Java SE(Java Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解决方案。JavaSE是三个平台中最核心的部分,JavaEE和JavaME都是从JavaSE的基础上发展而来的,JavaSE平台中包括了Java最核心的类库,如集合、IO、数据库连接以及网络编程等。
- Java EE(Java Platform Enterprise Edition) 企业版,是为开发企业级应用程序提供的解决方案。Java EE可以被看作一个技术平台,该平台用于开发、装配以及部署企业级应用程序,主要包括Servlet、JSP、JavaBean、JDBC、EJB、Web Service等技术。
- Java ME(Java Platform Micro Edition) 小型版,是为开发电子消费产品和嵌入式设备提供的解决方案。JavaME主要用于小型数字电子设备上软件程序的开发。例如,为家用电器增加智能化控制和联网功能,为手机增加新的游戏和通讯录管理功能。此外,Java ME还提供了HTTP等高级Internet协议,使移动电话能以Client/Server方式直接访问Internet的全部信息,提供高效率的无线交流。
从2005年6月开始,Sun公司取消了版本名称中的数字"2",J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。这个改变是为了简化命名并突出Java作为平台的整体性质。
主要特性
Java是一种面向对象的编程语言,它具有以下主要特性:
-
简单性:Java采用了相对简单且易学的语法和语义,使得开发人员可以更容易地编写、阅读和维护代码。
-
面向对象:Java支持面向对象编程范式,包括封装、继承和多态。它提供类、对象、接口等概念,利于构建可重用、模块化和可扩展的代码结构。
-
平台无关性:Java通过Java虚拟机(JVM)实现了平台无关性。它的源代码被编译成字节码,然后在不同平台上的JVM上运行。这意味着一次编写,到处运行,只需适配不同的JVM即可在多个平台上运行。
-
可靠性:Java强调程序的健壮性和错误处理能力。它提供了自动内存管理(垃圾回收)、异常处理机制和类型检查,有助于减少程序中的错误和异常情况。
-
安全性:Java提供了安全管理器和沙箱机制,以确保应用程序在受控的环境中运行。它可以限制代码的访问权限,防止恶意行为和未经授权的操作。
-
高性能:Java通过即时编译器和优化技术提供了良好的性能。虽然它不是与原生编程语言相比的最高性能语言,但在大多数应用场景下仍具备足够的性能。
-
多线程支持:Java直接支持多线程编程,提供了线程的创建、同步和通信机制。这使得开发人员可以更轻松地编写并发程序,实现任务的并行执行和资源的有效利用。
-
大型标准库:Java拥有一个丰富的标准库,提供了各种常用类和工具,涵盖了输入输出、网络编程、数据结构、图形界面等方面。这使得开发人员能够快速构建复杂的应用程序。
以上是Java的主要特性,它们共同为Java提供了强大的开发能力和广泛的应用领域。
Java 开发工具
个人推荐两款开发工具:Eclipse、 IntelliJ IDEA (网址放在里面了,点击既可下载)
Eclipse的优点:
- 免费开源:Eclipse是一个免费且开源的集成开发环境(IDE),任何人都可以免费使用和修改它的源代码。
- 多语言支持:Eclipse支持多种编程语言,包括Java、C/C++、Python等,使其成为跨平台开发的理想选择。
- 插件生态系统:Eclipse拥有庞大而活跃的插件生态系统,提供了一系列功能强大的插件,可根据个人需求进行定制和扩展。
- 强大的调试工具:Eclipse提供了强大的调试工具,如断点调试、变量监视等,方便开发者进行代码调试和排错。
Eclipse的缺点:
- 性能问题:Eclipse在处理大型项目时可能会出现性能不佳的情况,特别是在启动速度和响应时间上。
- 学习曲线较陡:对于初学者来说,Eclipse的学习曲线可能相对较陡。其复杂的界面和配置选项可能导致初学者感到困惑。
- 编辑器功能相对简单:Eclipse的编辑器功能相对简单,与一些其他IDE相比,可能缺少某些高级编辑功能和快捷操作。
IntelliJ IDEA的优点:
- 强大的智能代码编辑功能:IntelliJ IDEA提供了智能代码补全、自动重构、代码导航等强大的编辑功能,显著提高了开发效率。
- 出色的静态代码分析和错误检查:IntelliJ IDEA具有出色的静态代码分析和错误检查能力,在编码过程中能够及时发现潜在的问题并给出建议。
- 全面的集成开发环境:IntelliJ IDEA提供了完整的集成开发环境,包括版本控制、构建工具、调试器等,方便开发者进行全方位的开发工作。
- 优秀的插件生态系统:IntelliJ IDEA拥有丰富的插件生态系统,社区提供了众多插件来满足不同开发需求。
IntelliJ IDEA的缺点:
- 商业软件:相对于Eclipse,IntelliJ IDEA是一款商业软件,使用某些高级功能可能需要购买许可证。
- 较高的硬件要求:IntelliJ IDEA对计算机硬件的要求较高,在较低配置的电脑上可能运行较慢。
- 学习曲线较陡:和Eclipse一样,IntelliJ IDEA也有一个较陡的学习曲线,尤其是对于初学者来说。
综上所述,Eclipse和IntelliJ IDEA都是强大的开发工具,在不同的项目和个人偏好下有各自的优劣势。选择适合自己需求的IDE取决于你的项目类型、编程语言以及个人喜好和使用经验。
Java 基本语法
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
Java 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
Java 关键字
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 扩充、继承 | |
final | 最终值、不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地、原生方法(非 Java 实现) | |
new | 创建 | |
static | 静态 | |
strictfp | 严格浮点、精准浮点 | |
synchronized | 线程、同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | super | 父类、超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 |
注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
Java 注释
Java注释是用于在代码中添加说明、解释或文档的特殊注解。Java提供了三种类型的注释:
- 单行注释:以双斜线(//)开头,在一行代码的末尾添加注释。单行注释不会被编译器处理,可用于对代码进行简短的解释或标记。
- 多行注释:以斜线和星号(/)开始,以星号和斜线(/)结束。可以跨越多行,用于添加较长的注释内容。
- 文档注释:以斜线和两个星号(/**)开始,以星号和斜线(*/)结束。文档注释用于生成API文档,用于描述类、方法、字段的作用、使用说明等。可以使用标准的HTML标签来格式化文档注释。
示例:
public class HelloWorld {
/* 这是第一个Java程序
* 它将输出 Hello World
* 这是一个多行注释的示例
*/
public static void main(String[] args){
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}
Java 源程序与编译型运行区别
在Java中,源代码需要进行编译后才能运行。以下是Java源程序运行和编译型运行的区别:
-
源程序运行:
- 源程序指的是纯文本形式的Java代码文件,以
.java
为扩展名。 - 在源程序运行时,Java虚拟机(JVM)会将源代码逐行解释执行,即时编译并执行相应的操作。
- 这意味着在每次运行程序时,都需要经过解释器逐行解释代码,这可能导致一定的性能损失。
- 源程序指的是纯文本形式的Java代码文件,以
-
编译型运行:
- 在编译型运行中,源程序需要经过编译器进行编译,生成可执行的字节码文件,以
.class
为扩展名。 - 编译过程将源代码转换为平台无关的字节码,而不是特定于某个操作系统的机器码。
- 生成的字节码文件可以在任何支持Java虚拟机的平台上运行。
- 编译过程只需执行一次,生成的字节码文件可以重复使用,并且可以通过JIT(即时编译器)进一步优化执行速度。
- 在编译型运行中,源程序需要经过编译器进行编译,生成可执行的字节码文件,以
因此,Java源程序需要通过编译器将其转换为字节码文件,然后再由Java虚拟机执行该字节码文件。这种分离编译和运行的方式使得Java具有跨平台性和灵活性,但也需要额外的编译步骤。