Java轻松学(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-27 20:11:21

点击下载

作者:(美) 布赖森·佩恩(Bryson Payne)

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Java轻松学

Java轻松学试读:

前言

Java被用于全球各地的数十亿台设备中。从移动应用到桌面软件,从最大的企业设备到最小的个人设备,它们背后都是Java在提供动力。学生、IT专业人士以及任何有志于从事编程事业的人都将发现,Java是必须学会的。作为从事了将近20年Java教学的计算机科学教授,我编写本书旨在帮助你像我学习编程时一样,通过开发实际项目来学习Java。我发现,开发有趣、引人入胜且值得分享的实际应用和游戏,是学习编程的最佳方式。在本书中,你将创建简单的猜数游戏、用于与朋友交换消息的Secret Messages应用以及交互式绘图应用BubbleDraw。你不需要有任何编程经验,但如果你学习过其他语言,也可通过这种实践方法更快地掌握Java。

为何要学习编程

首先是工作需要。根据美国劳工统计局的数据,在10个增长最快、薪水最高的就业领域中,与计算相关的占了7个。在全球各地,程序员都很抢手,未来几年的需求量为数百万。程序员不管身处何方,只要能连上网就能赚钱。

然而,收入高、工作有保障并非学习编程的唯一原因。编程就是解决问题,而这年头需要更多能解决问题的人。你可编写让人彼此联系以及帮助他们完成工作的应用;可催生新的商业形式乃至全新的市场;可消除壁垒,向个人、行业乃至全球提供帮助,还能带来从未有过的机会。由于网络和智能手机无处不在,你编写出应用后就可与数十亿人分享。

Dropbox创始人Drew Houston指出,编程是“最有可能让我们成为超人的技能”,而视频游戏开发公司Valve的联合创始人Gabe Newell说,知道如何编程让人“在他人看来就像拥有魔法”。计算机无处不在——存在于日常生活中的每台设备、每个系统、每个网络中,而代码是驱动计算机发挥作用的动力。学习编程就是学习如何在高科技时代茁壮成长。

为何要学习Java

很多人都认为Java是头号编程语言,其原因有多个。首先,几乎你想象得到的每种设备都使用了它,从台式机和笔记本电脑到智能电视。同样的Java代码既可在Windows系统中运行,也可在macOS和Linux系统中运行。

其次,Java被公司用来运行一些最庞大的企业应用。Java是一种面向对象的编程语言,让软件工程师能够开发用于各种领域的大型应用,从制造到销售,从人力资源到财会。

再次,在全球各地的大学中,Java是最受欢迎的语言之一,学习它可迅速跟上程序员同仁的步伐。

无论你学习编程是因为兴趣爱好,还是出于副业或全职工作的需要,选择Java都能让你快速而轻松地上手。如果你从未学过编程语言,Java将是你的首选语言;如果你有编程经验,Java也非常值得你去学习。

本书涵盖的内容

下面概述一下本书各章的内容。

第1章将引导你安装并设置Java、Eclipse和Android Studio,你还将使用交互式shell——JShell编写第一个Java命令。

在第2章,你将编写第一个应用——猜数游戏,这是一个基于文本的命令行程序,让用户猜测一个1~100的随机数。在第3章,你将把猜数游戏升级为基于窗口的桌面应用,并添加包含标签、文本框和可单击按钮的图形用户界面(GUI)。

在第4章,你将创建第一个Android移动应用,并在其中重用前两章给猜数游戏编写的大部分代码。在第5章,你将对这个移动版猜数游戏进行多方面润色,其中包括添加设置菜单以及记录最高得分。

在第6章,你将创建应用Secret Messages,这是一个基于文本的程序,使用凯撒加密法对消息进行加密。在第7章,你将把这个应用升级为GUI的——添加一个滑条,让用户能够快速破解凯撒加密。在第8章,你将创建移动版Secret Messages应用,它提供了分享功能,让用户只需单击按钮就能通过E-mail、短信或社交媒体与朋友分享消息。

在第9章,你将着手创建本书最具视觉震撼力的应用——BubbleDraw,让用户能够在屏幕上绘制色彩缤纷的气泡。在第10章,你将给这个应用添加动画,让气泡四处飘散,并在到达屏幕边缘后往回弹。在第11章,你将添加多点触控功能,让用户能够同时在多个地方绘制气泡,并最终将其打造成一个外观专业、乐于同朋友分享的应用。

最后,附录A提供了一些小贴士,帮助你在Eclipse和Android Studio中编写Java程序时进行调试以及避免常见的错误。

需要哪些工具

在本书中,你将学习使用编程工具Eclipse和Android Studio,它们是最流行的Java开发工具,因此阅读完本书后,你马上就能编写真正的应用。最重要的是,它们都是免费的!

只要有运行Windows、macOS或Linux的台式机或笔记本电脑,并能够上网,你就可开始阅读本书。即便没有Android手机和平板电脑,你也能开发移动应用,因为Android Studio自带了免费的Android设备模拟器,可用来测试应用。当然,如果你有Android手机或平板电脑,就能直接在上面运行移动应用。

在线资源

本书所有应用的源代码都可从官网(https://www.nostarch.com/learnjava/)免费下载。如果你喜欢一对一的详尽教学视频,可前往http://www.udemy.com/java-the-easy-way/注册在线课程,该课程将引导你循序渐进地完成每个示例和每行代码。注册该课程时,使用优惠码BOOKHALFOFF可打5折。注册该在线课程后,你可随时提问或直接给我发消息。

从现在做起

学习Java编程有百利而无一害,现在就开始吧!编程是打开通往全新世界大门的钥匙,而学习Java是迈向新职业和新未来的第一步。我的大学学生有一个共同之处,那就是他们都迈出了第一步:编写第一行代码,再编写第一个程序,再不断地学习和成长。这些你也能做到。

中国古语有云:“往者不谏,来者可追。”无论你是学生还是打算换个职业,现在学习编程都正当其时。

致谢

如果没有No Starch Press编辑团队的大力支持,本书不可能付梓。这里要特别感谢Bill Pollock、Tyler Ortman、Riley Hoffman、Jan Cash、Serena Yang、Amanda Hariri和Julia Borden,感谢他们不辞辛苦地编辑、审阅和营销,还有从各个方面帮助我改进本书。

感谢Bryan Fagan出色的技术审阅。

感谢我现在和以前的学生激励我不断创作出有趣又引人入胜的内容,尤其是Shah Rahman、Susan Rahman、Justin Turner、Diane Turner、Jacob Elliott、Brian Murray、Aaron Walker、Robert Brown、Trent Deal、Seth Park、Simon Singh、Andrew Miller、Ctrl-Alt-Del机器人小组、Jackson Grant、Quintin Kerns、Grace Halley、Jack Halley、Matthew Harpur和David Knight。还要感谢来自150个国家的注册我在线课程的学生,尤其是Hayden Redd和Bob Watson。

感谢给人以启迪的同事和朋友,是他们不断激励我做最好的自己:Markus Hitz、Chuck Robertson、Irene Kokkala、Tamirat Abegaz、Antonio Sanz Montemayor、Don Watkins、Eddie Mienie、Rose Procter、Ron Larson、Victor Parker、Keith Antonia、Billy Wells、Jim Goldy、James Daniel和Craig Gentry。

感谢岳父Norman Petty,他对技术的热情唯有对家人的爱能出其右。感谢继父Dale Carver总能在百忙之中抽出时间欣赏我的3D打印配件。最要感谢的是我美丽的妻子Bev以及出色的儿子Alex和Max,感谢他们在我三年内编写两本图书期间无穷的耐心。

这里要特别感谢Kalen Cole。Kalen在11岁时就抱着我编写的第一本图书 Teach Your Kids to Code自学编程,还送给我颇具创意的礼物——他自己编写的代码行。Kalen,加油!每个孩子在逐渐认识到自己是谁、要成为什么样的人后,都应该以你为榜样。  第 1章 起步本章,你将首先在计算机上安装Java、Eclipse和Android Studio,再在交互式命令行shell——JShell中尝试执行一些命令,以熟悉基本的Java编程知识。

Java是一门功能强大的多平台编程语言,可免费下载并安装到Windows、macOS和Linux系统中。作为业界标准的集成开发环境(integrated development environment,IDE),Eclipse工具包可用于快速而轻松地开发Java应用程序。Android Studio是一个使用Java开发Android移动应用的开发环境,让你能够开发用于手机、平板电脑等设备的移动游戏和应用。1.1 Java支持Windows、macOS和Linux

Java的优点之一是,你编写的Java程序可在任何计算机上运行,只要它安装了Java虚拟机(Java Virtual Machine,JVM)软件[有时也被称为Java运行时环境(Java Runtime Environment,JRE)]。JVM技术让你只需编写程序一次,就可在使用任何操作系统(Windows、macOS、Linux、Android等)的设备上运行它。

这种理念看似平淡无奇,但使用其他大多数编程语言时,你要么为Windows、macOS、Linux和智能手机编写不同的代码,要么针对不同的操作系统编译不同的版本。JVM是一种运行时环境,让你无需这样做。

图1-1显示了同一个图形Java应用程序在Windows、macOS和Ubuntu Linux系统上的运行情况。图1-1 在三种不同的操作系统(Windows、macOS和Linux)中运行同样的Java代码

这个简单而强大的概念是Java被全球各地的个人和企业采用的原因之一。1.2 安装Java 8 for Developers和Java 9 for Developers

Java开发包(Java Development Kit,JDK)是供开发人员(程序员)使用的Java版本,让你能够编写和编译Java应用程序,并将其与朋友分享、部署到企业环境中或在任何设备上运行。

我们将同时安装第8版和第9版的JDK,这样既可获得第8版被广泛使用带来的好处,又可使用第9版提供的最新功能。

为安装JDK 8,请执行如下步骤。

(1) 访问http://jdk.java.net/8/。

(2) 单击单选按钮Accept License Agreement。

(3) 在JDK下载列表中找到你使用的操作系统,并单击相应的链接。如果你使用的操作系统为Windows或Linux,请选择64位版本。

(4) 双击下载到文件夹Downloads中的JDK文件以安装JDK。

为安装JDK 9,请访问http://jdk.java.net/9/,再重复JDK 8安装过程的第2~4步。注意 有关详尽的分步安装视频,请参阅与本书配套的在线课程(http://www.udemy.com/java-the-easy-way/)。

这就是需要做的所有准备工作,现在你可以从基于文本的命令行或终端编译并运行Java程序了。但我们还想使用Java来创建类似于图1-1所示的图形用户界面(graphical user interface,GUI)应用程序,为此我们将安装集成开发环境Eclipse。1.3 安装Eclipse IDE for Java Developers

Eclipse是最流行的Java编程IDE之一,它还是开源的,这意味着个人和企业都可免费使用,同时有欣欣向荣的开源社区不断地改进和支持它。还有很多其他的Java开发IDE,但就开发Java应用程序而言,Eclipse以易于使用著称。Eclipse安装起来也非常容易。

为安装Eclipse,请访问http://www.eclipse.org/downloads/,根据你使用的操作系统下载相应的安装程序(如图1-2所示)再运行它。本书编写期间,最新版本为Eclipse Oxygen。图1-2 根据你使用的操作系统下载相应的Eclipse IDE安装程序

你将看到一个类似于图1-3所示的菜单,请选择Eclipse IDE for Java Developers并单击Install。务必选择Eclipse IDE for Java Developers(Java EE没有本书将使用的一些功能)。图1-3 在Eclipse安装程序菜单中选择Eclipse IDE for Java Developers

安装可能需要几分钟才能完成。1.4 配置Eclipse

下面来配置Eclipse,使其更像专业开发环境:安装WindowBuilder Editor;选择对程序员友好的颜色方案和字体。

请单击Eclipse图标来启动它。Eclipse启动时,通常会让你指定工作区的位置——所有Java项目都将存储在这里,如图1-4所示。你可使用默认位置(在Windows系统中,为C:\Users\\eclipse-workspace\;在macOS系统中,为/Users//Documents/eclipse-workspace/;在Linux系统中,为/home//eclipse-workspace/),也可给Java工作区文件夹指定自定义位置。图1-4 Eclipse首先会询问你要将Java项目存储在什么地方

如果你没什么偏好,可使用默认位置eclipse-workspace。不管你选择的是什么位置,都请记住它,因为你的所有Java项目都将存储在这里。如果你选中复选框“Use this as the default and do not ask again”,Eclipse Launcher窗口就不会在你每次启动Eclipse时都出现。如果你要使用多个工作区,就不要选中这个复选框,这样可在启动Eclipse时轻松地在不同工作区之间切换。修改Eclipse使其支持Java 9如果Eclipse无法启动,就还需要修改一个地方。编写本书期间,Java 9推出没多长时间,虽然Eclipse Oxygen和更高的版本支持Java 9,但有些版本需要修改配置文件eclipse.ini才能支持Java 9。为完成这种修改,请执行如下步骤。(1) 找到Eclipse安装文件夹。● 在Windows系统中,可右击Eclipse快捷方式并选择“打开文件位置”。文件eclipse.ini与程序文件eclipse.exe位于同一个文件夹。● 在macOS系统中,启动Finder,并找到文件夹Applications中的应用程序Eclipse,然后按住control键并单击应用程序图标Eclipse,再选择“显示包内容”。依次打开“内容”和Eclipse文件夹,你将在文件列表中看到eclipse.ini。● 在Linux系统中,进入你的主(home)文件夹,并打开eclipse/java-oxygen/ eclipse,你将在其中找到eclipse.ini。(2) 右击(或按住control键并单击)文件eclipse.ini,选择“打开方式”,再选择“记事本”、TextEdit或其他文本编辑器。(3) 在文件eclipse.ini末尾添加如下内容:--add-modules=ALL-SYSTEM(4) 将eclipse.ini存盘,再启动Eclipse。从现在开始,Eclipse应该能够正确地启动。

首次启动Eclipse时,你将看到一个欢迎屏幕。根据你使用的Eclipse版本,这个屏幕可能包含一些很有用的示例项目和教程,也可能更简单。如果你愿意,可随便单击做些探索。探索完毕后,请单击Welcome选项卡右上角的X将其关闭。1.4.1 安装WindowBuilder Editor

我们要对Eclipse做的最重要的升级是安装WindowBuilder Editor,它让你能够创建多窗口应用程序。为此,你只需将按钮、标签和文本框等GUI元素拖放到应用程序的图形预览中。

有些版本的Eclipse安装了WindowBuilder Editor,但我们将执行安装或更新步骤,为第3章开始创建GUI应用程序做好准备。

首先,请访问http://www.eclipse.org/windowbuilder/并单击Download。在下载页面中,找到与你使用的Eclipse版本匹配的WindowBuilder版本(对Eclipse Oxygen来说,为4.7版),再右击(或按住control键并单击)相应的链接,并复制链接地址,如图1-5所示。图1-5 找到最新版WindowBuilder Editor的下载链接并复制其地址

回到Eclipse并选择菜单Help ▶ Install New Software。在文本框Work with中,粘贴WindowBuilder Editor的下载URL(对Eclipse Oxygen来说,为http://download.eclipse.org/windowbuilder/WB/integration/4.7/),再单击按钮Add...。在出现的对话框中,在文本框Name中输入WB,如图1-6所示。图1-6 使用Eclipse菜单项Install New Software来添加WindowBuilder Editor

单击按钮OK,等安装窗口中出现复选框WindowBuilder后,单击按钮Select All安装需要的所有WindowBuilder组件。不断单击Next按钮,并在被询问时接受许可协议,再单击按钮Finish。

这个软件可能需要几分钟才能安装完毕——Eclipse右下角有进度指示器。安装完毕后,将询问你是否要重启Eclipse。请单击Restart Now以完成WindowBuilder的整个安装过程。

下面来做些微调——修改背景色、文本颜色和字体,让Eclipse中的代码更容易阅读。1.4.2 定制Eclipse的外观

安装必要的软件后,还需定制Eclipse的外观。为此,在Windows和Linux系统中,可选择菜单Window ▶ Preferences;在macOS系统中,可选择Eclipse ▶ Preferences。

例如,你可能想修改主题(调色板)和文本编辑器使用的字号。根据你的显示器尺寸以及编程环境,主题和字号可能对可读性、舒适程度乃至效率带来重大的影响。

在Preferences菜单中,展开General并选择Appearance,你将看到Theme(主题)选项。你可选择喜欢的主题,如Classic(淡灰色背景和黑色字体)或Dark(黑色背景和色彩丰富的字体)。我喜欢主题Dark,因为其字体颜色比黑色背景浅,无论是在显示器还是投影屏幕上都更容易看清楚。

在General ▶ Appearance ▶ Colors and Fonts中,可修改字号。请在右边的Colors and Fonts窗格中,选择Basic ▶ Text Font,再单击Edit按钮,这将打开Font(字体)对话框。请选择对你来说容易看清的字体,我喜欢Courier New或Consolas。推荐你将字号设置为18~20,并将字体样式设置为Bold(粗体)。Font对话框将根据你选择的字体、字号和样式显示样本,如图1-7所示。图1-7 Colors and Fonts首选项(左)和Font对话框(右)

设置好首选项后,单击按钮OK返回到Eclipse主工作区。等到第2章你开始在Java文本编辑器中编写代码时,将会发现首选项设置生效了。1.5 安装用于开发移动应用的Android Studio

Android Studio是官方提供的Android移动应用开发环境,让你能够使用Android原生编程语言Java来设计和编写移动应用。与Java和Eclipse一样,Android Studio也可免费下载、安装和使用。Android Studio体量庞大,下载并安装它需要的时间从几分钟到几小时不等,这取决于你的网络连接速度。

为下载Android Studio,请访问http://developer.android.com/studio/并单击Download Android Studio,如图1-8所示。请阅读并同意许可条款,再单击Download Android Studio for 。图1-8 Android Studio是官方的Android移动应用开发环境

请按说明完成安装过程。安装期间可能下载其他的软件开发包(software development kit,SDK)组件,而下载完所有组件后,可能还需要几分钟才能安装完毕。1.6 使用JShell熟悉Java

搭建好编程环境后,我们使用Java交互式解释器JShell来检查安装情况。JShell非常适合用来了解Java的工作原理,因为它在你输入代码后立即提供反馈。在Java 9之前,Java程序员必须输入完整的程序,再编译并运行,才能看到结果。现在有了JShell,我们输入单行Java代码(如System.out.println("Hello,Java!")并按回车键后,就能在屏幕上看到输出,如图1-9所示。图1-9 Java 9中的JShell让你能够在交互式命令行shell中快速尝试代码

在JShell中可执行任何合法的Java语句,这让它非常适合用来学习基本的Java编程知识。下面就来看看。1.6.1 运行JShell

你可从命令行运行JShell,也可创建快捷方式并通过它来运行JShell。这里将同时介绍这两种方法,以防有一种方法对你来说不管用。

首先,你必须安装JDK 9。要确定是否安装了JDK 9,可在命令行运行一个命令。

要在Windows、macOS或Linux系统中启动命令行界面,可像下面这样做。● 在Windows系统中,这样打开命令提示符:单击“开始”按钮,

在搜索框中输入cmd并按回车键或单击命令提示符图标。● 在macOS系统中,打开Launchpad并在搜索框中输入terminal,

再单击应用程序图标Terminal。● 在Linux系统中,搜索terminal,再单击应用程序图标Terminal。

此时将出现一个命令提示窗口。在提示符下输入java –version,Java将指出安装的是哪个JDK版本。在Windows系统中,你将看到类似于下面的输出:C:\Users\Payne> java -versionjava version "9-ea"Java(TM) SE Runtime Environment (build 9-ea+153)Java HotSpot(TM) 64-Bit Server VM (build 9-ea+153, mixed mode)

在macOS或Linux系统中,你将看到类似于下面的输出:Payne:~ payne$ java -versionjava version "1.9.0_33"Java(TM) SE Runtime Environment (build 1.9.0_33)...

只要输出像上面这样指出安装的Java版本为9或1.9,就可运行JShell了。如果你要从命令行运行它,可继续阅读下面的“从命令行运行JShell”。如果输出中显示的是更早的Java版本,如Java 1.8,请按1.2节的介绍安装JDK 9。如果安装JDK 9后,前述命令的输出依然未包含版本9,或者你更喜欢使用快捷方式运行JShell,请跳到“从快捷方式运行JShell”。01. 从命令行运行JShell要从命令提示符运行JShell,可在其中输入jshell并按回车。

Java将显示JShell欢迎消息和提示符,它们在Windows系统中类

似于下面这样:C:\Users\Payne> jshell| Welcome to JShell -- Version 9-ea| For an introduction type: /help introjshell>在macOS或Linux系统中,消息和提示符类似于下面这样:Payne:~ payne$ jshell| Welcome to JShell -- Version 9-ea| For an introduction type: /help introjshell>如果出现了提示符jshell>,你就可直接进入1.6.2节。如果安

装JDK 9后命令jshell依然不管用,请尝试执行下一小节介绍的步

骤。02. 从快捷方式运行JShell如果你无法从命令行启动JShell,或者你想从桌面快捷方式

启动它,请按下面的步骤进入JDK 9安装目录下的文件夹bin,再

找到JShell并创建快捷方式。文件夹名称bin是binaries(二进制

文件)的简写;所谓二进制文件指的是使用计算机语言(只包含

0和1)编写的程序。注意 遗憾的是,在Linux系统中,这种方法不一定管用,但命令行方法应该管用。JShell位于下面的目录中。a. Windows系统:C:\Program Files\Java\jdk-9\bin\jshell.exe。b. macOS系统:/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/ Home/bin/jshell。在你的计算机上,JDK 9安装目录可能是jdk-1.9.x,而不是

jdk-9。请进入JDK 9安装目录下的文件夹bin,并找到文件JShell,

如图1-10所示。图1-10 在Windows系统(左)和macOS系统中,JDK 9安装目录下文件夹bin中的程序文件JShell你可双击JShell文件的图标来启动JShell,也可创建一个快

捷方式,这样就可直接从桌面启动JShell了。a. 在Windows系统中,右击jshell.exe并选择“发送到”▶“桌面快捷方式”。b. 在macOS系统中,按住control键并单击文件jshell,再选择“创建别名”。将出现一个名为jshell alias的文件,请将其拖放到桌面。现在,无论什么时候想启动JShell,都只需双击桌面上的图

标,然后就可以编写Java代码了。1.6.2 在JShell中使用Java表达式

表达式是值(如数字或文本)和运算符的任何组合,条件是其结果为另一个值。运算符执行加减乘除等运算;在Java中,用来表示加减乘除运算的符号分别为+、-、*和/。我们来尝试一个简单的数学表达式。在JShell提示符下输入2+2并按回车:jshell> 2+2$1 ==> 4

JShell指出,表达式2+2的值为4。$1是一个临时变量,JShell创建这样的变量来存储值;在这里,变量$1用于临时存储4,以便你以后使用。要获悉变量的值,可在JShell中输入它。例如,如果你现在输入$1,JShell将指出$1存储的值为4:jshell> $1$1 ==> 4

再来尝试一个表达式。这次我们合并两个文本字符串。字符串是用引号括起的字符,用于显示单词、名称和其他文本。要合并字符串,可使用运算符+:jshell> "Your" + "Name"$3 ==> "YourName"

如你所见,又创建了一个临时变量,这里是$3。$后面的数字指出了相应的表达式是在第几行输入的。这是我输入的第三个代码片段,因此JShell将"YourName"存储在变量$3中。

另外请注意,Java拼接两个字符串(或者说将它们相加)时,不会在它们之间添加空格。如果你要在拼接的两个字符串之间添加空格,必须将其包含在双引号内,如下所示:jshell> "Your" + " " + "Name"$4 ==> "Your Name"

只要是合法的Java表达式,就可在JShell中计算它。我们再来尝试几个表达式。要编辑以前输入的语句,可按向上箭头键,JShell将显示你输入的最后一条语句,让你能够对其进行编辑。编辑完毕后,可按回车键再次运行它。不断按向上箭头键,可遍历以前输入的所有语句,直到到达你输入的第一行。1.6.3 在JShell中声明Java变量

计算由简单值组成的表达式很好,但你通常想将值存储在变量中,以便以后能够使用。JShell会不断地替我们自动创建变量,如前一节的$1和$3,但你也可自己创建(声明)变量。01. 数字变量我们来创建一个名为x的整数变量,并将值42存储到其中。

Java使用类型为int的变量来存储整数值,因此请在JShell提示符

下输入int x = 42:jshell> int x = 42x ==> 42在Java中,等号(=)为赋值运算符,即用于给变量赋值。

JShell做出响应,让你知道变量x包含的值为42。现在,如果你

要使用这个值,只需引用变量x即可。我们来看看x * 2(x乘以2)

等于多少:jshell> x * 2$6 ==> 84Java将星号(*)用作乘法运算符,而JShell告诉你x * 2等于

84。但获取x的值并将其与2相乘时,修改了x的值吗?为获悉这

一点,我们输入x:jshell> xx ==> 42变量x的值没变,还是42。这意味着使用变量存储的值时,

不会修改它的值。那么如何修改变量存储的值呢?只需再次使用赋值运算符。

请在JShell提示符下输入x = x + 7:jshell> x = x + 7x ==> 49我们获取x的值,将其与7相加,并将结果存储到变量x中。

从现在开始,每当你询问x的值时,都将得到49,直到你再次修

改它。你想什么时候修改变量的值就可什么时候修改,这正是它

们被称为变量的原因所在。下面来尝试几个不同类型的变量。前面看过了整数值,下面

来尝试一个小数(浮点数)。Java使用类型为double(意思是双

精度浮点数)的变量来存储小数,因此我们创建一个名为meters

的double变量,并在其中存储小数值1.83:jshell> double meters = 1.83meters ==> 1.83对Java来说,小数处理起来与整数一样容易。我们来做点数

学运算,将米转换为厘米:jshell> double centimeters = meters * 100centimeters ==> 183.0我们将meters的值乘以100,并将结果存储到变量

centimeters中。Java还支持其他几种数字类型,但int和double是最常用的。

每当你遇到没有见过的类型时,都可启动JShell并尝试在其中使

用它们。02. 字符串变量类型为String的变量用于存储文本字符串。我们来定义一个

名为myName的String变量,并在其中存储一个姓名,如下所示(你可存储你的姓名):jshell> String myName = "Bryson Payne"myName ==> "Bryson Payne"与前面给数字变量赋值一样,我们也使用等号来赋值。注意 在Java中,变量、方法和类的名称是区分大小写的。全小写的myname不同于全大写的MYNAME,而这两个都不同于myName。在Java中,约定(通行的做法)是使用骆驼拼写法,即名称中每个单词的首字母都大写(第一个单词除外),如myName或thisIsASillyName ButShowsCamelCase,这让每个首字母看起来都像驼峰。对于类名,除采用骆驼拼写法外,还将第一个字母也大写。下面来使用存储在变量myName中的值。假设你获得了证书

或学位,需要在你的姓名后面添加一些字符,如下所示:jshell> myName + ", PhD"$12 ==> "Bryson Payne, PhD"请注意,这里没有使用赋值运算符,因此存储在myName中

的值应该还是你的姓名,而不包含新增的字符。下面来修改存储在变量myName中的值,在你的姓名前加上

正式的头衔,就像在信封或邀请函中那样:jshell> myName = "Dr. " + myNamemyName ==> "Dr. Bryson Payne"JShell显示了存储在变量myName中的新值。下一节将继续

使用数字变量和字符串变量,并介绍如何在Java程序中将值输出

到屏幕上。1.6.4 在Java中打印输出

到目前为止,我们都这样计算表达式:在JShell中输入它们以查看结果。但在实际编程中,情况通常不是这样的。在Java程序中,当你逐行输入代码时,在屏幕上看不到任何反馈。

要将内容打印到屏幕上,可使用打印函数,如System.out.println(),它将一行输入打印到系统控制台(即屏幕)。如果你没有关闭JShell,可像下面这样打印x的值:jshell> System.out.println(x)49

如果这样做时出错,请使用语句int x = 49重新声明变量x,再执行刚才的打印语句。

注意,现在JShell显示的不是x ==> 49,这是因为你并没有让它计算表达式。println()语句让JShell打印括号内的值(这里为变量x),因此JShell只显示49。

下面来尝试打印字符串,为此请输入下面的语句:jshell> System.out.println("Hello, " + myName)Hello, Dr. Bryson Payne

只要现在依然可使用前一节声明的变量myName,Java就会向你发出问候。

每当需要将信息打印到屏幕上供用户查看时,都可使用System.out.println()语句,它打印你指定的内容。1.6.5 JShell命令

JShell使用起来很容易,你可能都不愿离开,但你终究需要去做其他的工作,如使用Java编写激动人心的桌面和移动应用。下面来看看JShell提供的命令,包括退出JShell的命令。

在JShell提示符下输入/help并按回车:jshell> /help

JShell将列出它支持的所有特殊命令。每个命令都以斜杠(/)打头,这指出我们要与JShell程序(而不是Java)交流。下面列出了JShell支持的部分命令:| /list [|-all|-start] -- list the source you have typed| /edit -- edit a source entry referenced by name or id| /save [-all|-history|-start] -- save snippet source to a file| /open -- open a file as source input| /vars [|-all|-start] -- list the declared variables and their values| /imports -- list the imported items| /exit -- exit jshell| /reset -- reset jshell| /history -- history of what you have typed| /help [|] -- get information about jshell

请尝试其中一些命令,如/list(它列出你已输入的源代码)。注意,必要时JShell会在行尾加上分号——Java使用分号来分隔程序中的语句。命令/history显示你输入的所有内容,其中包括命令,如/help、/list乃至/history。

你在第2章编写Java程序时,将在文件中进行,这要求你反复存盘并在需要时重新打开文件。然而,在JShell中,一旦你关闭JShell窗口,输入的所有内容都将消失——除非你将其保存。所幸JShell提供了保存、打开和编辑代码片段的功能。要将你在JShell中创建的代码存盘,可使用命令/save并指定文件存储位置:jshell> /save ~/Desktop/filename.txt

波浪字符(~)表示你的用户目录,因此上述命令将把你从打开JShell(或最后一次执行命令/reset)开始输入的所有代码,存储到桌面的一个文件中。如果你查看桌面,将看到这个新文件。

要打开文件,可使用/open命令并告诉JShell到哪里去查找文件:jshell> /open ~/Desktop/filename.txt

JShell将打开这个文件并运行其中的代码。

每当你要将编写的代码片段保存供以后使用时,都可使用/save将其保存,再在以后启动JShell后使用/open来加载它们。

要开始新的代码片段,可使用命令/reset。JShell将只保存你在执行命令/reset后输入的代码,但你随时都可打开已保存的文件。请尝试下面的代码,这个简单的示例演示了如何保存文件、重置和打开文件:❶ jshell> /reset | Resetting state.❷ jshell> System.out.println("Hello, Java!") Hello, Java! jshell> System.out.println("My name is Bryson, nice to meet you!") My name is Bryson, nice to meet you!❸ jshell> /save ~/Desktop/myJava.txt❹ jshell> /reset | Resetting state.❺ jshell > /open ~/Desktop/myJava.txt❻ Hello, Java! My name is Bryson, nice to meet you!注意 带数字的圆圈标出了重要的代码行,但它们并不是代码的组成部分。

首先,你需要重置JShell❶,以免保存之前输入的代码。重置后,就可编写程序了;这里的程序包含两条打印语句❷。接下来,你将这个程序保存到桌面❸。即便重置JShell❹后,依然可以使用命令/open❺加载在命令/save前输入的两行代码,并运行它们❻。你可使用/edit来修改这些代码,并在修改完毕后再次使用/save将其保存。

无论代码片段包含多少行,JShell都能够存储并重新加载它。

探索完JShell后,可使用命令/exit将其关闭:jshell> /exitGoodbye

JShell很有礼貌,离开时会跟你说再见。1.7 小结

在本章中,你不仅安装了Java、Eclipse和Android Studio,还开始学习Java了——在JShell中尝试各种命令。对无处不在的Java来说,JShell是一项激动人心的改进。无论是对初学者还是久经沙场的开发人员来说,JShell都是一个绝妙的工具。

对编程新手来说,JShell消除了学习基本Java命令的壁垒,可方便他们进行探索。对经验丰富的程序员来说,JShell让他们能够快速测试代码片段,并在屏幕上立即看到结果。作为教员和程序员,JShell的面世让我激动万分,这对Java的未来意义重大,同时数百万的程序员也将受益于这组重要的新工具。

你为开发Java桌面和移动应用搭建好了环境,学习了如何在JShell中测试代码。你还对后面编写Java桌面和移动应用时将用到的众多编程概念有了一定的认识。下面概述了你在本章完成的工作:● 安装Java JDK 8和Java JDK 9;● 安装Eclipse IDE for Java Developers和WindowBuilder Editor;● 安装用于开发移动应用的Android Studio;● 从命令行以及从文件夹JDK9/bin运行JShell;● 在JShell中计算包括数字和字符串的Java表达式;● 在Java中声明用于存储整数、小数和字符串的变量;● 使用System.out.println()将输出打印到屏幕;● 使用/reset、/edit、/save、/open和/exit等JShell命令;● 在JShell中保存和打开文件。

在下一章,我们将创建第一个完整的Java应用程序——猜数游戏。在随后的几章中,我们将创建基于文本的程序、桌面应用程序及其Android移动版。

在这个过程中,将使用你在本章通过JShell学到的编程概念,这包括表达式、变量、输出等。无论你是第一次还是第800次编写程序,也无论你是为完成工作而编写桌面应用程序还是出于好玩而编写移动游戏,前述元素都不可或缺。

万事俱备,我们进入第2章撸起袖子干吧!  第 2章 创建猜数游戏下面来使用Java编写一个有趣又好玩的游戏——猜数游戏。我们将把这个游戏编写成命令行应用程序,即基于文本的程序,如图2-1所示。这个程序让用户猜1~100的数字,用户每次做出猜测后,程序都将指出他猜大了、猜小了还是猜对了。图2-1 基于文本的猜数游戏

知道这个游戏的工作原理后,你只需完成每个步骤的编码工作即可。我们将首先制订粗略的计划,再编写这个游戏的极简版本。对目标心中有数并知道游戏的玩法后,你就能带着目的轻松地学习编码技能,还能在编写好游戏后立即把玩一番。2.1 游戏步骤规划

我们来考虑一下,要让猜数游戏正确运行,需要完成哪些编码步骤。这款游戏的基本版本需要做如下事情。

(1) 生成一个1~100的随机数,让用户去猜。

(2) 显示一条提示语(即一行文本),让用户猜测这个数是多少。

(3) 接受用户的猜测。

(4) 将用户猜测的数字与生成的随机数进行比较,看用户猜测的数字大了、小了还是正确。

(5) 将结果显示到屏幕上。

(6) 不断让用户去猜测,直到猜对为止。

(7) 询问用户是否要接着玩。

我们将从这个基本结构着手。在本章后面的编程练习2中,你将再添加一项功能——告诉用户猜了多少次才猜对。2.2 新建Java项目

在Eclipse中开发新Java应用程序时,首先要做的是创建一个项目。为此,可选择菜单File ▶ New ▶ Java Project(也可选择菜单File ▶ New ▶ Project,再在New Project向导中选择Java ▶ Java Project),这将打开New Java Project对话框,如图2-2所示。图2-2 猜数游戏的New Java Project对话框

在文本框Project name中输入HiLo。请注意,在Java中大小写很重要,我们将养成将项目名、文件名和类名的首字母大写的习惯,因为这是Java惯例。另外,我们还将使用骆驼拼写法,这里为HiLo,因为Hi和Lo是两个单词。保留其他设置不变,并单击Finish按钮。根据你使用的Eclipse版本,可能询问你是否要打开Java透视图。在Eclipse中,透视图是为特定语言配置的工作区。如果被这样询问,请单击Yes,告诉Eclipse你希望将工作区配置成方便使用Java进行编程的样子。2.3 创建HiLo类

Java是一种面向对象的编程语言。面向对象的编程语言使用类来设计可重用的代码片段。类犹如模板,让创建对象(即类实例)的工作更轻松。如果说类是饼干模子,那么对象就是饼干。与饼干模子一样,类也是可重用的,因此创建类后,就可反复使用它来创建对象——想创建多少就创建多少。

这里的猜数游戏只有一个类文件,它创建一个猜数游戏对象,其中包含游戏所需的全部代码。我们将把这个类命名为HiLo。大小写很重要,而类名HiLo遵守了多个Java命名约定。通常,类名的第一个字母都大写,HiLo遵守了这种约定。另外,在组成类名的单词之间,不能有空格、连字符或特殊字符。最后,对于包含多个单词的类名,我们使用骆驼拼写法:每个单词的首字母都大写,如HiLo、GuessingGame和BubbleDrawApp。

为创建新类HiLo,首先在Eclipse工作区左边的Package Explorer窗格中找到文件夹HiLo。单击左边的箭头将这个文件夹展开,你将看到一个名为src(表示source code,即源代码)的子文件夹。包含Java程序的所有文本文件都将放在这个文件夹中。

右击文件夹src并选择New ▶ Class,如图2-3所示。图2-3 在猜数游戏中新建一个类文件

这将打开New Java Class对话框,如图2-4所示。在文本框Name中输入HiLo。在“Which method stubs would you like to create?”部分,选中复选框“public static void main(String[] args)”,这告诉Eclipse我们要编写方法main(),这样Eclipse将包含方法main()的存根(stub,或骨架),我们可在其中填充所需的代码。方法是位于对象或类中的函数;要将应用程序作为独立的程序运行,方法main()必不可少。图2-4 将新建的Java类命名为HiLo并指定要创建方法main()

在New Java Class对话框中单击Finish按钮,你将看到一个名为HiLo.java的新文件,其中包含如代码清单2-1所示的代码。这个Java文件是猜数游戏的轮廓,我们将通过编辑它来编写这个游戏。代码清单2-1 Eclipse为猜数游戏类HiLo生成的代码❶ public class HiLo { ❷ public static void main(String[] args) { // TODO Auto-generated method stub } }

这些代码都是Eclipse创建的。HiLo类是公有的❶,这意味着可从命令行或终端运行它。

Java使用大括号({和})将语句编组。左大括号({)指出了构成Hilo类体的语句块的起始位置,而右大括号(})指出了语句块的结束位置。在这个类中,包含方法main()❷,它是执行这个类时将运行的方法。

在定义方法main()的大括号内,是一个注释行,它以两个斜杠(//)打头。注释是供人类阅读的,会被计算机忽略,因此可使用注释来指出代码的作用或添加说明。你可将代码清单2-1中的TODO注释删除。2.3.1 生成随机数

这个游戏的第一项编程任务是生成一个随机数。为此,我们将使用Math类,它包含一个方法,可用于生成0.0~1.0的随机浮点数(小数)。我们将把这个小数转换为1~100的整数。Math是一个内置类,包含很多很有用的数学函数,如高级科学计算器中的函数。

在方法main()中,添加如代码清单2-2所示的注释和代码行(新增的代码为黑色,既有的代码为灰色)。代码清单2-2 生成1~100的随机数的代码public class HiLo { public static void main(String[] args) { // 生成要让用户去猜的随机数 int theNumber = (int)(Math.random() * 100 + 1); }}

首先,需要创建一个变量,用于存储要让用户去猜的随机数。由于这个游戏将让用户猜测1~100的整数,我们将这个变量的类型声明为int(整数),并将其命名为theNumber。等号(=)将一个值赋给新变量theNumber。我们使用内置函数Math.random()生成一个0.0~1.0(不含)的随机数。为将取值范围扩大到0.0~100.0(不含),我们将这个随机数乘以100。然后,我们再加1,将取值范围改为1.0~101.0(不含)。

上述语句中的(int)被称为强制类型转换,将数字从小数类型转换为整数。在这里,将删除小数部分,得到一个1~100的整数。接下来,将整个数字(用户要猜的数字)存储到变量theNumber中。最后,我们添加一个分号(;),指出语句到此结束。

现在,可添加一条System.out.println()语句,将生成的数字打印出来: int theNumber = (int)(Math.random() * 100 + 1); System.out.println( theNumber ); }}

添加这行代码后,可运行这个程序,它将生成并打印一个数字。请单击菜单栏下方的绿色Run按钮,以编译并运行这个程序,如图2-5所示。你也可以选择菜单Run ▶ Run。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载