目录
第1章 成为程序员 1.1 选择编程语言 1.2 告诉计算机做什么 1.3 程序的工作原理 1.4 为什么程序不能正常工作 1.5 选择 Java编程工具 1.6 安装 Java开发工具 1.7 总结 1.8 问与答 1.9 测验 1.9.1 问题 1.9.2 答案 1.10 练习 第2章 编写第一个程序 2.1 编写程序所需的工具 2.2 创建 Saluton 程序 2.3 开始输入程序 2.3.1 class语句 2.3.2 main语句的作用 2.3.3 大括号 2.4 在变量中存储信息 2.5 保存编写好的程序 2.6 将程序编译为 class文件 2.7 修复错误 2.8 运行 Java程序 2.9 总结 2.10 问与答 2.11 测验 2.11.1 问题 2.11.2 答案 2.12 练习 第3章 Java之旅 3.1 第一站:Oracle 3.2 去 Java学校 3.3 在 JavaWorld 用午餐 3.4 在 NASA仰望天穹 3.5 回归正题 3.6 到 Java Boutique 去问路 3.7 在手机上运行 Java 3.8 总结 3.9 问与答 3.10 测验 3.10.1 问题 3.10.2 答案 3.11 练习 第4章 理解Java程序的工作原理 4.1 创建应用程序 4.2 向应用程序传递参数 4.3 创建 applet 4.4 总结 4.5 问与答 4.6 测验 4.6.1 问题 4.6.2 答案 4.7 练习 第5章 在程序中存储和修改信息 5.1 语句和表达式 5.2 指定变量类型 5.2.1 整数和浮点数 5.2.2 字符和字符串 5.2.3 其他数值类型的变量 5.2.4 布尔型变量 5.3 给变量命名 5.4 在变量中存储信息 5.5 运算符 5.5.1 变量的递增与递减 5.5.2 运算符优先级 5.6 使用表达式 5.7 总结 5.8 问与答 5.9 测验 5.9.1 问题 5.9.2 答案 5.10 练习 第6章 使用字符串来交流 6.1 在字符串中存储文本 6.2 在程序中显示字符串 6.3 在字符串中使用特殊字符 6.4 拼接字符串 6.5 将其他变量用于字符串中 6.6 字符串的高级处理 6.6.1 比较两个字符串 6.6.2 确定字符串的长度 6.6.3 改变字符串的大小写 6.6.4 查找字符串 6.7 导演及演员名单 6.8 总结 6.9 问与答 6.10 测验 6.10.1 问题 6.10.2 答案 6.11 练习 第7章 使用条件测试进行判断 7.1 if语句 7.1.1 小于和大于的比较 7.1.2 相等和不等 7.1.3 使用块语句组织程序 7.2 if-else 语句 7.3 switch语句 7.4 条件运算符 7.5 观察时钟 7.6 总结 7.7 问与答 7.8 测验 7.8.1 问题 7.8.2 答案 7.9 练习 第8章 使用循环重复执行操作 8.1 for循环 8.2 while 循环 8.3 do-while 循环 8.4 退出循环 8.5 给循环命名 8.6 测试计算机的运行速度 8.7 总结 8.8 问与答 8.9 测验 8.9.1 问题 8.9.2 答案 8.10 练习 第9章 使用数组存储信息 9.1 创建数组 9.2 使用数组 9.3 多维数组 9.4 对数组进行排序 9.5 对字符串中的字符计数 9.6 总结 9.7 问与答 9.8 测验 9.8.1 问题 9.8.2 答案 9.9 练习 第10章 创建第一个对象 10.1 面向对象编程的工作原理 10.2 对象示例 10.3 什么是对象 10.4 理解继承 10.5 建立继承层次 10.6 转换对象和简单变量 10.6.1 简单变量的类型转换 10.6.2 对象类型转换 10.6.3 在简单变量和对象之间进行转换 10.6.4 自动封装和拆封 10.7 创建对象 10.8 总结 10.9 问与答 10.10 测验 10.10.1 问题 10.10.2 答案 10.11 练习 第11章 描述对象 11.1 创建变量 11.2 创建类变量 11.3 用方法来创建行为 11.3.1 声明方法 11.3.2 参数不同的类似方法 11.3.3 构造函数 11.3.4 类方法 11.3.5 方法中变量的作用域 11.4 将一个类放在另一个类中 11.5 使用关键字this 11.6 使用类方法和类变量 11.7 总结 11.8 问与答 11.9 测验 11.9.1 问题 11.9.2 答案 11.10 练习 第12章 充分利用现有对象 12.1 继承的威力 12.1.1 继承行为和属性 12.1.2 覆盖方法 12.2 建立继承 12.3 使用现有的对象 12.4 将相同类型的对象存储到 Vector 中 12.5 创建子类 12.6 总结 12.7 问与答 12.8 测验 12.8.1 问题 12.8.2 答案 12.9 练习 第13章 创建简单的用户界面 13.1 Swing 和抽象窗口工具包 13.2 使用组件 13.2.1 窗口和框架 13.2.2 按钮 13.2.3 标签和文本框 13.2.4 复选框 13.2.5 组合框 13.2.6 文本区域 13.2.7 面板 13.3 创建自己的组件 13.4 总结 13.5 问与答 13.6 测验 13.6.1 问题 13.6.2 答案 13.7 练习 第14章 用户界面的布局 14.1 使用布局管理器 14.1.1 GridLayout管理器 14.1.2 BorderLayout管理器 14.1.3 BoxLayout管理器 14.1.4 使用Insets将组件隔开 14.2 应用程序的界面布局 14.3 总结 14.4 问与答 14.5 测验 14.5.1 问题 14.5.2 答案 14.6 练习 第15章 响应用户输入 15.1 让程序监听 15.2 设置要监听的组件 15.3 处理用户事件 15.3.1 复选框和组合框事件 15.3.2 键盘事件 15.3.3 启用和禁用组件 15.4 完善图形应用程序 15.5 总结 15.6 问与答 15.7 测验 15.7.1 问题 15.7.2 答案 15.8 练习 第16章 创建复杂的用户界面 16.1 滚动窗格 16.2 滑块 16.3 变更监听器 16.4 使用图像图标和工具栏 16.5 总结 16.6 问与答 16.7 测验 16.7.1 问题 16.7.2 答案 16.8 练习 第17章 创建交互式Web程序 17.1 标准applet方法 17.1.1 在applet窗口中绘画 17.1.2 初始化applet 17.1.3 启动和停止applet 17.1.4 销毁applet 17.2 将applet放到Web页面中 17.3 创建applet 17.3.1 在applet窗口中绘画 17.3.2 测试SalutonApplet程序 17.4 从Web页面传递参数 17.5 在applet中接收参数 17.6 在applet中处理参数 17.7 使用object标记 17.8 总结 17.9 问与答 17.10 测验 17.10.1 问题 17.10.2 答案 17.11 练习 第18章 处理程序中的错误 18.1 异常 18.1.1 在try-catch块中捕获异常 18.1.2 捕获多种不同的异常 18.1.3 出现异常后进行处理 18.1.4 抛出异常 18.1.5 忽略异常 18.2 抛出和捕获异常 18.3 总结 18.4 问与答 18.5 测验 18.5.1 问题 18.5.2 答案 18.6 练习 第19章 创建线程程序 19.1 线程 19.1.1 降低程序的速度 19.1.2 创建线程 19.2 使用线程 19.2.1 声明类 19.2.2 创建变量 19.3 从init( )开始 19.4 在创建URL时捕获错误 19.5 在paint( )方法中处理屏幕更新 19.6 启动线程 19.6.1 运行线程 19.6.2 停止线程 19.7 处理鼠标单击 19.8 循环显示链接 19.9 总结 19.10 问与答 19.11 测验 19.11.1 问题 19.11.2 答案 19.12 练习 第20章 读写文件 20.1 流 20.1.1 文件 20.1.2 从流中读取数据 20.1.3 缓冲输入流 20.2 将数据写入流中 20.3 读写配置属性 20.4 总结 20.5 问与答 20.6 测验 20.6.1 问题 20.6.2 答案 20.7 练习 第21章 读写XML数据 21.1 创建XML文件 21.2 读取XML文件 21.3 读取 RSS 聚合内容(Syndication Feeds) 21.4 总结 21.5 问与答 21.6 测验 21.6.1 问题 21.6.2 答案 21.7 练习 第22章 利用JAX-WS开发Web服务 22.1 定义服务端点接口 使用注解来简化Java代码 22.2 创建服务实现Bean 22.3 发布Web服务 22.4 使用Web服务描述语言文件 22.5 创建Web服务客户端 22.6 总结 22.7 问与答 22.8 测验 22.8.1 问题 22.8.2 答案 22.9 练习 第23章 创建Java2D图形 23.1 使用Font类 23.2 使用Color类 23.3 创建自定义颜色 23.4 绘制直线和形状 23.4.1 绘制直线 23.4.2 绘制矩形 23.4.3 绘制椭圆和圆 23.4.4 绘制弧线 23.5 绘制饼图 23.6 总结 23.7 问与答 23.8 测验 23.8.1 问题 23.8.2 答案 23.9 练习 第24章 编写Android app 24.1 Android简介 24.2 创建 Android app 24.2.1 剖析一个Android新项目 24.2.2 创建app 24.2.3 安装Android模拟器 24.2.4 创建调试配置 24.3 运行app 24.4 设计真实的app 24.4.1 组织资源 24.4.2 配置app的Manifest文件 24.4.3 设计用户界面 24.4.4 编写Java代码 24.5 总结 24.6 问与答 24.7 测验 24.7.1 问题 24.7.2 答案 24.8 练习 附录A 使用NetBeans IDE A.1 安装NetBeans A.2 创建新项目 A.3 创建新的Java类 A.4 运行应用程序 A.5 修复错误 附录B Java资源 B.1 可以考虑的其他书 B.2 Oracle公司的 Java官方站点 B.3 其他Java站点 B.3.1 本书英文版的配套网站 B.3.2 Café au Lait B.3.3 Workbench B.3.4 Java 7 Developer Blog B.3.5 其他Java博客 B.3.6 InformIT B.3.7 Stack Overflow B.3.8 Java Review Service B.3.9 JavaWorld杂志 B.3.10 Developer.com’s Java Directory 附录C 本书站点 附录D 设置Android开发环境 D.1 起步 D.2 安装Eclipse D.3 安装 Android SDK D.4 安装在Eclipse中使用的Android插件 D.5 设置你的手机 其他 版权

Java初级教程

Java入门经典
第4章 理解Java程序的工作原理

本章介绍如下内容:

应用程序的工作原理;

组织应用程序;

向应用程序传递参数;

applet的工作原理;

组织applet;

将applet放置到Web页面中。

在Java编程中需要做出的一个重要决策是,程序将在哪里运行。有些程序将在用户的计算机上运行,其他程序将作为Web页面的一部分运行。

在本地计算机上运行的 Java 程序被称为应用程序,而在 Web 页面上运行的程序被称为applet。本章将介绍为何这种差别很重要。

4.1 创建应用程序

你在第2章编写的Saluton程序就是一个Java程序。接下来,你需要创建另外一个应用程序,用来计算一个数的平方根,然后将该值显示出来。

在NetBeans中打开Java24项目 ,开始创建一个新应用程序。

1.选择File->New File,打开New File Wizard。

2.选择“Java”分类,然后选择“Empty Java File”文件类型,然后单击Next按钮。

3.输入类名“Root”,然后单击Finish按钮。

NetBeans将创建Root.java应用程序,并在源代码编辑器中打开一个空文件,以便用户输入代码。输入程序清单4.1所示的所有代码,注意不要输入行号以及行号后面的冒号。行号的目的是方便对程序的某些部分进行描述或引用。输入完毕后,单击工具栏中的 Save All button按钮保存文件。

程序清单4.1 Root.java的完整文本

该Root程序完成如下任务:

第3行:在变量number中存储整数225。

第4~8行:显示该整数及其平方根。第7行的Math.sqrt(number)语句显示平方根。

如果你准确无误地输入了程序清单 4.1 中的代码(包含了每一个标点符号,而且字母大小写没有问题),则可以在 NetBeans中单击 Run->Run File 菜单命令来运行这个文件。该程序的输出结果将显示在输出面板(窗口)中,如图4.1所示。

图4.1 Root 应用程序的输出

当运行 Java 程序时,JVM 将查找 main( )代码块,并开始处理该代码块中的 Java 语句。如果 Java 程序中没有 main( )代码块,则 JVM 将提示有错误。

4.2 向应用程序传递参数

你可以使用java这个应用程序(会调用JVM)在命令行运行Java程序。当你在NetBeans中运行程序时,NetBeans会在幕后使用这个java程序。当以命令方式来运行Java程序时,JVM将装载该应用程序。而且命令可能会包含额外的信息,如下例所示。

发送给程序的额外信息称为参数。第一个参数(如果有的话)和应用程序名称之间用一个空格隔开,参数之间也用一个空格隔开。在上面的例子中,参数是readme.txt和/p。

如果想在参数内部包含一个空格,则必须将该参数使用引号括起来,如下例所示。

在该例中,TextDisplayer在运行时,具有 3 个参数:readme.txt、/p 和“Page Title”。第3个参数中的引号可以防止java程序将Page和Title视为两个独立的参数。

可以向Java应用程序传递任意数目的参数。然而,要使用这些参数,必须在应用程序中编写处理参数的语句。

为了解参数在应用程序中是如何工作的,在Java24项目中创建一个新类,步骤如下所示。

1.选择 File->New File。

2.在 New File Wizard 对话框中,分别选择“Java”分类和“Empty Java File”文件类型。

3.将该类命名为“BlankFiller”,然后单击Finish按钮。

在源代码编辑器中输入程序清单4.2中的代码,然后保存。编译该程序,如果出现错误,请进行改正。

程序清单4.2 BlankFiller.java的完整代码

该程序编译成功,并可以运行。但是如果你使用菜单命令 Run->Run File 来运行该程序,将会得到一个看起来很复杂的错误,如下所示。

Output

之所以会发生该错误,是因为该程序在运行时,期待着接接收到 3 个参数。你可以在NetBeans中通过对项目进行自定义,来指定参数。

1.选择菜单命令Run->Set Project Configuration->Customize,打开Project Properties对话框。

2.在 Main Class 文本框中输入“BlankFiller”。

3.在Arguments字段中,输入“retromingent purple lactose-intolerant”,然后单击OK按钮。

由于你自定义了项目,因此在运行该程序时会有所不同。选择菜单命令 Run->Run Main Project。应用程序将使用你指定的参数,作为形容词来填充一句话,如下面的输出所示。

Output

返回 Project Properties 对话框,然后将自己选择的 3 个形容词指定为参数,而且要确保至少包含3个参数。

参数是一种自定义程序行为的简单方法。参数存储在称为数组的变量中。第9章将会讲到数组。

在定制程序的行为方面,参数很有用。参数经常用于配置程序,使其以特定的方式运行。Java将参数存储在数组中,数组是一组相关的变量,这些变量存储的信息类型相同。数组将在第9章介绍。

4.3 创建 applet

当 Java 语言在面世之时,它最吸引人的特性就是 applet,即在 Web 页面上运行的 Java程序。只要Web浏览器能够处理Java程序,它就可以运行applet。你可以使用appletviewer来测试applet,appletviewer是包含在JDK中的一个工具,NetBeans对其提供支持。

applet的结构与应用程序不同。与应用程序不同,applet没有main()代码块。applet分为几个代码区域,而且这几个代码区域根据applet中所发生的行为被相应的处理。其中两个代码区域是 init()代码块和 paint()代码块。init()是 initialization(初始化)的简写,其作用处理 applet 初次运行时所需要的设置。paint()用来显示需要显示的内容。

为了查看Root应用程序的applet版本,新建一个名为RootApplet.java的空文件,并输入程序清单4.3所示的代码,再将其存盘。

程序清单4.3 RootApplet.java程序代码

这个程序中的一些语句与Root应用程序相同,其主要区别在于组织结构:main()块被init()块和paint()块代替。

注意:

本章的示例程序主要用于向读者介绍 Java 程序的组成结构。本章的主要目的是编译程序并看看它们运行的情况。这些程序的其他方面将在随后的章节进行详细介绍。

当在NetBeans中运行(选择Run->Run File)这个applet程序时,它将被载入到appletviewer工具,如图4.2所示。

图4.2 在 appletviewer 中运行的RootApplet applet

applet要比应用程序略微复杂,原因是它必须要在Web页面上运行,而且要与浏览器中的其他页面元素共存。第17章将会对其详细讲解。

appletviewer工具在测试时非常有用,但是它会给人们留下有关applet的错误印象。applet不能像 Java 程序那样在自己的窗口中运行。相反,需要像文本、照片、图形那样将它放到Web页面中,从而与页面的其他部分无缝集成。

图4.3所示为在Web页面上运行的RootApplet。applet窗口是那个白框,显示的是该程序的输出:the square root of 255 is 15。该页面中的标题、文本段,以及那张灯泡照片都是Web页面的普通元素。

图4.3 Web页面中的RootApplet载入到Google Chrome浏览器中

Java applet 可以像该项目的输出一样,是静态的,但这对 Java 语言来说则是暴殄天物。applet 通常用来显示的是动态内容,比如实时的股票行情、聊天室中的聊天内容,以及视频游戏等。

4.4 总结

在本章中,读者创建了一个Java应用程序和一个applet,这两种程序在编写和运行方式上有多个重要的差别。

接下来的几章将继续介绍应用程序,让读者成为经验更丰富的Java程序员。应用程序的测试比较容易,因为它不需要创建Web页面来进行查看;而且应用程序的创建也很容易,同时它的功能也更强大。

4.5 问与答

问:传递给Java应用程序的所有参数都必须是字符串吗?

答:应用程序在运行时,Java将所有参数都转换为字符串进行存储。要使用整型或其他非字符串参数,必须将其进行转换,这将在第11章介绍。

问:既然 applet 是在 Web 页面中运行,应用程序可以在任何地方运行,那么 Java Web Start启动的Java程序是什么呢?

答:Java Web Start 是一个从 Web 浏览器启动 Java 应用程序的方法。用户通过单击 Web页面上的一个链接来运行程序。与先下载,后运行安装向导,然后再启动的桌面程序相比,这种方式无疑更为简便。

尽管应用程序是从浏览器中运行的,但是 Java Web Start 程序仍然是应用程序,而不是applet。应用程序永远都是最新的,因为它在每次运行时,都是通过 Web 从程序提供者那里下载到的。

Google Web Toolkit(GWT)是一组用于Web编程的开源工具,它可以将Java程序转换为JavaScript,从而使得它在Web浏览器中运行时速度更快、更可靠,而且还不需要JVM的介入。

4.6 测验

请回答下面的问题,以测试对本章内容的掌握程度。

4.6.1 问题

1.哪种类型的Java程序可以在浏览器内部运行?

a.applet。

b.应用程序。

c.两者都不可以。

2.JVM表示什么意思?

a.Journal of Vacation Marketing。

b.Jacksonville Veterans Memorial。

c.Java Virtual Machine。

3.如果你在给Java应用程序传递信息的方式上与他人发生争议,那么争议的焦点是什么?

a.关于字符串的争论。

b.关于参数的争论。

c.关于功能的争论。

4.6.2 答案

1.a.applet作为Web页面的一部分运行,而应用程序可以在任何地方运行。

2.a、b 或 c.这是一个脑筋急转弯。这3个选项都可以用JVM来表示。但是Java Virtual Machine则是读者在接下来的20章中需要牢记的。

3.b.应用程序以参数的方式接受信息。

4.7 练习

要应用有关applet和应用程序的知识,建议完成下面的练习:

根据Root应用程序,编写一个可以显示625的平方根的NewRoot应用程序。

根据Root应用程序,编写一个NewRoot应用程序,使它可以显示作为参数输入的那个值的平方根。

有关完成这两个练习的Java程序,请访问本书的配套网站www.java24hours.com。

没有精选讨论主题。

全部讨论主题 查看精选主题

没有讨论主题。
😃 😅 😆 😁 😂 😊 😄 😠 😩 😲 😞 😵 😰 😒 😍 😤 😜 😝 😋 😘 😚 😷 😳 😢 😭 😨 😣 😡 😌 😖 😔 😱 😪 😏 😓 😥 😫 😉 👊 👍 👆 👇 👈 👉 👋 👏 👌 👎 👐 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟