Java核心技术卷I基础知识3.1 一个简单的Java应用程序

简介:

第3章 Java的基本程序设计结构

▲  一个简单的Java应用程序     ▲  字符串


▲  注释                      ▲  输入输出


▲  数据类型               ▲  控制流


▲  变量                      ▲  大数值


▲  运算符                  ▲  数组


 

现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序。我们从现在开始将介绍Java应用程序设计。本章主要介绍程序设计的基本概念(如数据类型、分支以及循环)在Java中的实现方式。

非常遗憾,需要告诫大家,使用Java编写GUI应用程序并不是一件很容易的事情,编程者需要掌握很多相关的知识才能够创建窗口、添加文本框以及能响应的按钮等。介绍基于GUI的Java应用程序设计技术与本章将要介绍的程序设计基本概念相差甚远,因此本章给出的所有示例都是为了说明一些相关概念而设计的“玩具式”程序,它们仅仅使用终端窗口提供输入输出。

最后需要说明,对于一个有C++编程经验的程序员来说,本章的内容只需要浏览一下,应该重点阅读散布在正文中的C/C++注释。对于具有使用Visual Basic等其他编程背景的程序员来说,可能会发现其中的绝大多数概念都很熟悉,但是在语法上有比较大的差异,因此,需要非常仔细地阅读本章的内容。


3.1 一个简单的Java应用程序


下面看一个最简单的Java应用程序,它只发送一条消息到控制台窗口中:

 

这个程序虽然很简单,但所有的Java应用程序都具有这种结构,还是值得花一些时间来研究。首先,Java区分大小写。如果出现了大小写拼写错误(例如,将main拼写成Main),程序将无法运行。

下面逐行地查看一下这段源代码。关键字public称为访问修饰符(access modif?ier),这些修饰符用于控制程序的其他部分对这段代码的访问级别。在第5章中将会更加详细地介绍访问修饰符的具体内容。关键字class表明Java程序中的全部内容都包含在类中。这里,只需要将类作为一个加载程序逻辑的容器,程序逻辑定义了应用程序的行为。在第4章中将会用大量的篇幅介绍Java类。正如第1章所述,类是构建所有Java应用程序和applet的构建块。Java应用程序中的全部内容都必须放置在类中。

关键字class后面紧跟类名。Java中定义类名的规则很宽松。名字必须以字母开头,后面可以跟字母和数字的任意组合。长度基本上没有限制。但是不能使用Java保留字(例如,public或class)作为类名(保留字列表请参看附录A)。

标准的命名规范为(类名FirstSample就遵循了这个规范):类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写(这种在一个单词中间使用大写字母的方式称为骆驼命名法。以其自身为例,应该写成CamelCase)。

源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。因此,存储这段源代码的文件名必须为FirstSample.java(再次提醒大家注意,大小写是非常重要的,千万不能写成f?irstsample.java)。

如果已经正确地命名了这个文件,并且源代码中没有任何录入错误,在编译这段源代码之后就会得到一个包含这个类字节码的文件。Java编译器将字节码文件自动地命名为FirstSample. class,并与源文件存储在同一个目录下。最后,使用下面这行命令运行这个程序:

 

(请记住,不要添加.class扩展名。)程序执行之后,控制台上将会显示“We will not use ‘Hello,World’!”。

当使用

 

运行已编译的程序时,Java虚拟机将从指定类中的main方法开始执行(这里的“方法”就是Java中所说的“函数”),因此为了代码能够执行,在类的源文件中必须包含一个main方法。当然,也可以将用户自定义的方法添加到类中,并且在main方法中调用它们(第4章将讲述如何自定义方法)。

      注释:根据Java语言规范,main方法必须声明为public(Java语言规范是描述Java语言的官方文档。可以从网站http://docs.oracle.com/javase/specs上阅读或下载)。

不过,当main方法不是public时,有些版本的Java解释器也可以执行Java应用程序。有个程序员报告了这个bug。如果感兴趣的话,可以在网站http://bugs.java.com/ bugdatabase/ index.jsp上输入bug号码4252539查看。这个bug被标明“关闭,不予修复。”Sun公司的工程师解释说:Java虚拟机规范(在http://docs.oracle.com/javase/specs/jvms/se8/html)并没有要求main方法一定是public,并且“修复这个bug有可能带来其他的隐患”。好在,这个问题最终得到了解决。在Java SE 1.4及以后的版本中强制main方法是public的。

从上面这段话可以发现一个问题的两个方面。一方面让质量保证工程师判断在bug报告中是否存在问题是一件很头痛的事情,这是因为其工作量很大,并且工程师对Java的所有细节也未必了解得很清楚。另一方面,Sun公司在Java开源很久以前就把bug报告及其解决方案放到网站上让所有人监督检查,这是一种非常了不起的举动。某些情况下,Sun甚至允许程序员为他们最厌恶的bug投票,并用投票结果来决定发布的下一个JDK版本将修复哪些bug。

需要注意源代码中的括号{ }。在Java中,像在C/C++中一样,用大括号划分程序的各个部分(通常称为块)。Java中任何方法的代码都用“{”开始,用“}”结束。

大括号的使用风格曾经引发过许多无意义的争论。我们的习惯是把匹配的大括号上下对齐。不过,由于空白符会被Java编译器忽略,所以可以选用自己喜欢的大括号风格。在下面讲述各种循环语句时,我们还会详细地介绍大括号的使用。

我们暂且不去理睬关键字static void,而仅把它们当作编译Java应用程序必要的部分就行了。在学习完第4章后,这些内容的作用就会揭晓。现在需要记住:每个Java应用程序都必须有一个main方法,其声明格式如下所示:

 

      C++注释:作为一名C++程序员,一定知道类的概念。Java的类与C++的类很相似,但还是有些差异会使人感到困惑。例如,Java中的所有函数都属于某个类的方法(标准术语将其称为方法,而不是成员函数)。因此,Java中的main方法必须有一个外壳类。读者有可能对C++中的静态成员函数(static member functions)十分熟悉。这些成员函数定义在类的内部,并且不对对象进行操作。Java中的main方法必须是静态的。最后,与C/C++一样,关键字void表示这个方法没有返回值,所不同的是main方法没有为操作系统返回“退出代码”。如果main方法正常退出,那么Java应用程序的退出代码为0,表示成功地运行了程序。如果希望在终止程序时返回其他的代码,那就需要调用System.exit方法。

接下来,研究一下这段代码:

 

一对大括号表示方法体的开始与结束,在这个方法中只包含一条语句。与大多数程序设计语言一样,可以将Java语句看成是这种语言的句子。在Java中,每个句子必须用分号结束。特别需要说明,回车不是语句的结束标志,因此,如果需要可以将一条语句写在多行上。

在上面这个main方法体中只包含了一条语句,其功能是:将一个文本行输出到控制台上。

在这里,使用了System.out对象并调用了它的println方法。注意,点号(·)用于调用方法。Java使用的通用语法是

 

这等价于函数调用。

在这个示例中,调用了println方法并传递给它一个字符串参数。这个方法将传递给它的字符串参数显示在控制台上。然后,终止这个输出行,使得每次调用println都会在新的一行上显示输出。需要注意一点,Java与C/C++一样,都采用双引号分隔字符串。(本章稍后将会详细地讲解有关字符串的知识)。

与其他程序设计语言中的函数一样,在Java的方法中,可以没有参数,也可以有一个或多个参数(有的程序员把参数叫做实参)。对于一个方法,即使没有参数也需要使用空括号。例如,不带参数的println方法只打印一个空行。使用下面的语句来调用:

 

      注释:System.out还有一个print方法,它在输出之后不换行。例如,System.out.print(“Hello”)打印“Hello”之后不换行,后面的输出紧跟在字母“o”之后。

相关文章
|
2天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
19 0
|
1天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
26 0
|
1天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
1天前
|
Java API
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
|
1天前
|
并行计算 算法 安全
Java从入门到精通:2.1.3深入学习Java核心技术——掌握Java多线程编程
Java从入门到精通:2.1.3深入学习Java核心技术——掌握Java多线程编程
|
1天前
|
IDE Java 开发工具
Java从入门到精通:1.3.1实践编程巩固基础知识
Java从入门到精通:1.3.1实践编程巩固基础知识
|
2天前
|
Java
Java基础知识整理,驼峰规则、流程控制、自增自减
在这一篇文章中我们总结了包括注释、关键字、运算符的Java基础知识点,今天继续来聊一聊命名规则(驼峰)、流程控制、自增自减。
34 3
|
2天前
|
Java 开发者
Java基础知识整理,注释、关键字、运算符
在日常的工作中,总会遇到很多大段的代码,逻辑复杂,看得人云山雾绕,这时候若能言简意赅的加上注释,会让阅读者豁然开朗,这就是注释的魅力!
37 11
|
2天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。