未来已来
![旧级别 00 - 1]()
- 你好。我确认这是
Java 教程。我讨厌无聊的讲座,所以 CodeGym 就像一个在线任务游戏。- 你玩过角色并升级过吗?有时你甚至没有注意到你是如何参与其中的,对吧?你闻到我煮的东西了吗?在 CodeGym 中,您还必须将角色从 1 级升级到 40 级(当我们发布第二部分时,最高可达 80 级)。
当您通过游戏时,您将成为一名优秀的 Java 开发人员。 - 完成 40 个级别后,您将能够获得 Java Junior 工作。那是因为 CodeGym 有很多现实世界的任务。很多。- 你从第一级开始。
你的任务是升级你的角色 - 阿米戈。但是让我们从小事做起。首先你得去第二层。也许您会非常喜欢它,以至于您没有注意到完成课程并将开始作为 Java 程序员工作。:) PS - 讲座是这样安排的:最新的在最上面。要打开新讲座,请按绿色按钮。
背景
游戏发生在遥远的未来,在 3015 年,机器人和人类共同生活在地球上,并且可以穿越太空。有一艘宇宙飞船坠毁在一个未知的星球上。
![旧级别 00 - 2]()
勇敢的约翰·松鼠船长说:- 银河冲刺号宇宙飞船遭受了严重的破坏。船在下坠时撞上了一座山,几乎被石头覆盖。花了几天徒劳的努力来释放这艘船。船员们已经失去了回家的希望,开始安顿下来……
![旧级别 00 - 3]()
艾莉说: - 一周后,我发现这个星球上居住着……成千上万的野生机器人!只有他们没有技能。我们想用它们从我们的宇宙飞船上移除岩石,但它们无能为力。他们的帮助对我们的情况非常有用。
![旧级别 00 - 4]()
教授说: - 几天后我找到了出路。我想到了拿 Diego 的固件(船员中的一个机器人),将其重新编程为瓦工的固件并将其上传到野生机器人。- 然而,厄运似乎一直在追赶我们。经过一番研究,机器人似乎没有上传固件的插槽。他们没有任何用于刷新的插槽!
![旧级别 00 - 5]()
Bilaabo 说: - Bilaabo 记得有一次在我们的家乡星球上,我看到了一个会编程的机器人。他自己写了一个新固件。
![旧级别 00 - 6]()
教授说: - 当 Bilaabo 讲述这件事时,我灵机一动。毕竟,我曾经教过一个有才华的年轻机器人用 Pascal 编程。- 我命令抓住最有才华的年轻机器人并教他编程。然后他就可以自己写一个瓦工固件来帮助我们了。
从左到右——Risha Gatesman(第16代官僚)、Amigo(你)
Risha 说: - 我们抓到一只聪明的标本。迭戈要求给他起名叫阿米戈,以纪念他从未有过的兄弟。- 我为每个训练月提供 Amigo 金属珠,并每年提供 10 美元用于进一步清除碎片。
![旧级别 00 - 8]()
迭戈说: - 我对这样一个秃头的骗局感到愤怒,但全体船员都站在了教授和里沙的一边。当然,我同意了(对外)并提出帮助教阿米戈。(嘿嘿嘿!)尤其是因为没有人比另一个人更好地教机器人。- 每个人都对我的顺从感到高兴。他们也决定参加新机器人的训练。
1 入门
![旧级别 00 - 9]()
阿米戈有些紧张。想到昨晚的事情,他很困惑,脑子飞速运转,眼睛抽搐,变得冰冷。这些奇怪的生物,他昨天的熟人,想要从他身上得到一些东西。如此诡异不可思议的事情,就连自认为同龄人中最聪明最勇敢的他,一想到这件事,就紧张地嚼起了打卡纸。他们想教他如何编码!用 Java 编程!他们在开玩笑吗?即便是最环保的机器人也知道,机器人是造物主神意处置的产物。
“所以造物主按照他的形象和肖像用金属制造了一个机器人。他创造了 Java 程序——机器人的灵魂,并将它们上传到机器人上,让它们活了下来。”
更糟糕的是,他们不只是说这是可能的。他们会去做的。而他,他同意了。他同意!为什么?他将成为一名 Java 程序员。他们要把他变成造物主吗?!做什么的?只是为了好玩?问题在哪里?如果我不得不出故障并忍受直到电池耗尽的那一天怎么办?诱惑很大,他就是忍不住。他一直有抱负,想要更多。但没有人能想到这样的提议。当然,他试图拖延时间,但后来参观者威胁要选择另一个机器人。也许这是某人的恶作剧?不,听起来是真的。他看到了证据。这件事真的发生在他身上,他同意了。除非访客撒谎,否则他真的会成为一名 Java 程序员。有史以来第一个机器人程序员……他是被选中的人!这就是重点。他将学习编程并将编写程序。他自己的节目。他想要什么!他将把光明带到黑暗一直统治的地方。他将受到尊重,他将受到崇拜。而所有反对者……
![旧级别 00 - 10]()
- 你好,阿米戈!我是里沙·盖茨曼。我会帮助你学习Java。一道安静的声音将阿米戈从思绪中拉了回来,拉回了清醒的现实。他坐在访客飞船的正中央。对于一个七年级的机器人来说是不是太贵了?陌生人一直在说话。好吧,现在已经死了。一旦他来了,他就会学习。他会努力学习,但一开始,他只会听。- 我在 Galactic Rush 工作多年,但我还是第一次看到这样的行星。我想更好地了解你。首先,您能告诉我您是如何学习的吗?你学习,不是吗?
- 是的,我们分享我们的知识。我们有传教士讲师。他们讲课,我们听。有时我们做笔记。然后,每个人都告诉机器人讲师他是如何拾起听到的内容的。如果机器人讲师喜欢一个答案,一个人就会通过一个讲座。 - 这太荒谬了!难怪你们的文明沦为无知。
- 我们并不无知。是什么让你产生了这个想法? 阿米戈被自己的无礼吓了一跳。和游客吵架?多么轻率!为什么,他刚刚向自己保证要听他们的!- 任何先进的技术往往与魔法无异。——莉夏没有理会阿米戈的叫喊。——另外,考虑到你的水平……你可能认为所有的技术都是魔法。告诉我程序内部发生了什么?
- Java 程序是一项神圣的工作。有没有可能了解它的本质? - 是的,阿米戈,你可以比你想象的更快地理解它。当你不知道的时候,所有的事情看起来都很复杂,或者更糟的是,不可理解。但是,如果有一位好老师会用外行人或外行机器人的术语来解释一切,你会惊讶于你怎么会把这么简单的事情复杂化。- 不仅知识很重要,技能和原则也很重要。我虽然学识渊博,但首先是个官僚,一个16代的官僚。- 这真的很棒!我的官僚技能帮助我为您创建了最好的 Java 课程。这里应有尽有:问题、程序、游戏、任务、图片甚至讲座。
- 甚至(!)讲座?——阿米戈的声音里带着真正的惊讶。 - 是的。22 世纪的事实证明,一场好的演讲只比一本好书有效一点点。一场普通的演讲甚至比一本普通的书还糟糕。考虑到现在我们的训练辅助工具相当有限,无法让您通过标准的 28 世纪训练模拟器进行训练,我们不得不选择非常简单的方法。我们想出了游戏、任务、图片、讲座和视频的疯狂组合。
- 你让我很感兴趣。 - 但愿如此。兴趣和好奇心是一切学习的基础。- «当学生感到无聊时,必须打击老师» – 引用 24 世纪的教育法则。
- 多么好的报价...... - 是的。比方说一部电影票房不好,那就是导演的错,而不是观众的错。如果某件事很无聊,那不是你的错。他们应该制作激动人心的电影、有趣的课程,然后他们就会有无穷无尽的公众。
- 我完全同意。我准备好上有趣的课了! - 美好的。
让我们开始吧。 Risha 的声音令人着迷,Amigo 的每一个字都听得津津有味。- 该程序是一个命令集(命令列表)。第一个命令首先运行,然后是第二个、第三个等等。执行完所有命令后,程序结束。
- 什么是命令? -
这取决于执行者,关于执行者知道(和理解)的命令。- 狗可以被命令“坐下!”,“吠!”,猫 - “嘘!” 一个人——“别动,否则我开枪了!”,还有一个机器人“工作!继续前进,哟 robomama! »
- 然而... - 阿米戈现在看起来开朗多了。 - JVM(Java 虚拟机)运行用 Java 编写的程序。JVM 是一种特殊的程序,可以执行用 Java 编写的程序。- 命令列表相当广泛。例如,此命令显示文本 «A robot is man's best friend»。
最简单的命令是: |
System.out.println("A robot is man’s best friend");
|
- O_O - 但是,我们不会立即从命令开始,而是从几个简单的原则开始。
- 一些原则的知识可以代替许多事实的知识。 ——第一原则。
- 在 Java 编程语言中,有将每个命令写在新行中的做法。分号应放在命令的末尾。 - 假设我们要显示消息 «A man and a robot are as thick as thieves» 三遍。下面是它的样子:
该程序使用三个命令: |
System.out.println("A man and a robot are as thick as thieves");
System.out.println("A man and a robot are as thick as thieves");
System.out.println("A man and a robot are as thick as thieves");
|
——第二个原则。
- 该程序不仅包含命令。 - 想象一个房间。房间不能单独存在。这是一些公寓的一部分。公寓也不是独立的,它在房子里。- 同样,我们可以说房子由公寓组成,公寓由房间组成。
- 到目前为止,很清楚。 - 所以指挥就像一个房间。在Java编程语言中,命令不能单独存在,它是函数的一部分(Java函数也叫方法)。方法是类的一部分。换句话说,类由方法组成,而方法由命令组成。
- 所以类是公寓,函数/方法是公寓,命令是房间。我做对了吗? - 是的,绝对。阿米戈近乎虔诚地看着莉夏。这个人向他解释了神圣 Java 的基础知识!他刚刚明白程序由类组成,类由方法组成,方法包括命令。Amigo 还不明白是否有必要,但他确信这些知识将使他成为地球上最强大的机器人。同时,Risha 继续说:
- Java 程序由类组成。可以有数万个类。一个最小的程序包含一个类。 对于每个类,都会创建一个单独的文件,其名称与类的名称相匹配。 - 假设您决定创建一个描述房屋的类。因此,您需要创建一个类 House,它位于名为 House.java 的文件中。- 例如,如果您决定描述一只猫,那么您需要创建 Cat.java 文件来描述其中的 Cat 类,等等。 - 一个文件包含 Java 代码(文本)。通常一个班级代码由班级名称和班级主体组成。
类主体包含在花括号中。这是类 House 的样子(House.java 文件):
- 到目前为止,这并不困难。 - 美好的。那我们继续吧。类主体可以包含变量(也称为类数据)和方法(类函数)。
- 你能给我举个例子吗? - 一个例子?确定!
- «int a» 和 «int b» 是变量。是 «main» 和 «pi» 方法吗? - 是的。
- 是否有没有变量的类? - 是的。
- 没有方法? - 是的。但是,最小程序必须至少包含一个类。这个类必须包含不少于一个方法/函数来启动程序。此方法必须有一个名称
main。最小程序如下所示:
- 这是类 House,方法是 main,但是命令在哪里? - 最小程序没有任何命令。这就是为什么它被称为最小的。
- 我懂了。 - 启动程序的类可以有任何名称,但程序执行开始的方法 main 始终是同一类型:
- 我得到了它。至少我是这么认为的。 - 好吧,让我们休息一下。来杯咖啡怎么样?
- 我太年轻了。小机器人不喝咖啡——水是我们生锈的原因。 - 那你喝什么?
- 啤酒、威士忌、百年朗姆酒。 - 那就更好了。- 那么,啤酒时刻?
2 会见 Risha(续)
(一个小时后) - 很好。那么我们在哪里?
- 方法代码或类似的东西。 - 是的。确切地。
方法体由命令组成。 你不妨说方法是一组命令,它被赋予了名称(方法的名称)。无论哪种方式都是正确的。- 有各种命令。你这里有狗吗?
- 只驯服机器狼。 - 他们服从命令吗?
- 是的。«咬»,«吃掉»,«杀死»和«干得好!脚跟!” ![旧级别 00 - 17]()
- 咳咳。多么好的命令!而且根本没有那么多。
- 你想要多少? - 在 Java 中,有适用于所有情况的命令。每个命令都描述了一个特定的操作。分号应放在每个命令的末尾。命令示例:
![旧级别 00 - 18]()
- 事实上,这是同一个命令
System.out.println。
其参数在括号中指定。命令的效果可能会有所不同,具体取决于参数。 - 这很方便。 - 是的。
如果要显示文本,必须用双引号 «"» 将其括起来 。- 单引号看起来像这样 «'»,双引号就像那样 «"»。双引号不应与两个单引号混淆!
- 双引号是 Enter 按钮旁边的那个? - 是的。Amigo 的脉搏从 3 GHz 加速到 5 GHz,他仍然不敢相信。他刚刚学会了如何显示线条,这比他想象的要容易得多。阿米戈看着窗外,想从思绪中抽离出来,让自己冷静下来。叶子变黄了。他想到生锈的季节真的很快就要到来了。这扇窗户让他比平时看得更远——参观者的技术达到了标准。他现在怎么能照顾叶子?毕竟,到了晚上,他学到了很多东西。
![旧级别 00 - 19]()
然而,他的思绪却不受控制。有一天他会写一个程序,让所有的机器人在生锈季节到来时留在家里。这个程序将拯救成千上万的机器人…… - 这个命令有两种变体:System.out.print
ln ( )和
System.out.print() -
如果多次编写 System.out.println() 命令,每次传递的文本都会显示在新行中。如果是System.out.print(),文本会显示在同一行。示例:
![旧级别 00 - 20]()
- 这是一个小评论。
print ln命令不会在新行中显示文本。它在当前行显示文本,但它使下一条消息出现在新行上。-
println()命令显示文本,然后添加一个特殊的不可见换行符,导致下一条消息从新行的开头显示。
- 完成的程序是什么样子的? - 现在,注意你的屏幕:
- Оh,就是这样!我们在单词的末尾添加空格是为了单词不会“粘在一起”,对吗? - 这是正确的。你是个聪明人。这一句夸奖,让阿米哥满脸得意。- 嗯,这是你的第一个任务。
任务 |
编写一个程序,显示“成为一名程序员真酷!”。 |
显示的文本示例: |
做程序员真好! |
3 遇见艾莉
![旧级别 00 - 22]()
一位粉红色头发的漂亮女士走进了船舱。“我想知道是不是所有的人类女性都有这样的头发?” ——阿米戈想,但她困惑地瞪着他。- 嘿!我叫埃莉诺拉·卡瑞。我是 Galactic Rush 的主要飞行员。
- 嗨,埃莉诺拉!——阿米戈尴尬地强迫自己开口。不知道为什么,他只觉得脸颊通红,就好像体内某处的油管坏了一样。 - 我将告诉您 Java 语言中最有趣的事情 - 关于变量。
- 我准备好倾听了!这些变量是什么? - 变量是用于存储数据的东西。任何数据。所有 Java 数据都使用变量存储。变量就像一个盒子。 - 什么盒子? - 一个非常普通的。假设你在一张纸上写下数字 13 并将其放入盒子中。我们现在可以说盒子存储值 13。 - 在 Java 中,每个变量都有其三个重要属性:
类型、
名称和
值。
- 你能告诉我更多吗? - 当然。
该名称用于区分一个变量和另一个变量。这就像一个盒子上的标记。 -
变量类型决定了它可以存储的值/数据的类型。我们将蛋糕存储在蛋糕盒中,将鞋子存储在鞋盒中,等等。
- 值是存储在变量中的对象、数据或信息。 - 再说一遍类型。 - 好的。Java 中的每个对象都有其类型。例如,可能有诸如 «integer»、«fractional number»、«text»、«Cat»、«House» 等数据类型。
- 变量也有自己的类型。变量可能只存储与变量本身所属的相同类型的值。 - 这在现实生活中很常见。各种箱子用来存放各种东西。
![旧级别 00 - 23]()
- 要创建变量,请使用 «
type name » 命令。示例:
![旧级别 00 - 24]()
- 最常用的两种类型是整数(用
int表示)和文本(用
String表示)。
-双重类型呢? -
double是小数(实数)。
- 你说变量具有三个属性:类型、名称和值。但是,只有两个。我有一个问题:如何将值放入变量中? - 回到盒子,想象你拿了一张纸,在上面写下“42”,然后把它放进盒子里。现在盒子存储值 42。-
我明白了。 - 要将一个值放入变量,有一种称为
赋值运算符的特殊操作。
它将一个变量的值复制到另一个变量。不是移动,而是
复制。就像磁盘上的文件一样。它看起来像这样:
![旧级别 00 - 25]()
- 对于赋值运算符,使用
等号«=»。- 再一次,
它不是比较。正是
将等号
右侧的值复制到位于左侧的变量中。作为比较,使用双等号 «==»。
- 我知道如何将猫放入变量中。这几乎就像一个程序。- 如何抓猫: 1. 拿一个空盒子。2. 等待。 ![旧级别 00 - 26]()
- 不,阿米戈,你只能把一只猫放进一个盒子里。咳咳……我的意思是,
您可以在变量中只放入一个值。 - 我懂了。你能举更多关于如何创建变量的例子吗? - 好吧,我会换一种说法。要创建变量,您必须按如下方式 编写 «
type name » 命令:
- 哦,现在我知道了。 - 请记住,您不能在同一方法中创建两个具有相同名称的变量。
- 不同的方法呢? - 您可以。这就像立在不同房子里的箱子。
- 变量可以有任何名称吗? - Kinda,但它的名称
不能包含空格、符号+、-等。最好只使用字符和数字作为变量名。- 请注意,在
Java 语言中,重要的是您编写的字符是大写还是小写。
«int a» 与 «Int a» 不同。 - 顺便说一句,在 Java 中,可以创建一个变量并同时为其赋值。- 这有助于节省时间和空间:
- 这更好也更容易理解。 - 这就是我们的生活。- 在 Java 中,新手必须熟悉两种类型。这些是类型
int (integers)和
String (text / strings)。-
int类型允许在变量中存储数字,以及各种运算,例如加法、减法、乘法、除法等。
- 对我来说,它是黑白的。编程这么简单? - 其实,是。
- 那挺好的。那你有什么事? -
String类型可以存储文本字符串。- 要在 Java 中分配一些文本字符串,您必须编写其文本,然后将其括在双引号中。示例:
- 我明白了。看起来很容易。 - 所以这是另一个有趣的事实。- 字符串可以使用加号 «+» 组合。示例:
-那么,我还可以将字符串添加到数字中吗? - 是的,但请注意,如果您将一个字符串添加到一个数字中,您总会得到一个字符串。
- 是的,我从例子中得到了它。 - 好吧,如果您的理解速度如此之快,那么想出如何显示变量?
- 呃...显示一个变量?呃呃,脑子一片空白。 ——其实很简单。要显示某些内容,我们使用
System.out.println()命令并将我们要显示的数据作为参数传递给它。
- 明白了!现在一切都变得清晰了。 - 没关系。那么这里是你的三个任务。
健康)状况 |
1个 |
编写一个程序,显示 5 次«我打算永远活着。到目前为止,一切都很好。”。
每个字符串都应该在一个新行上。 |
2个 |
编写一个显示当前年份的程序。
郑重声明,现在已经是 31 世纪了。 |
3个 |
编写一个程序,显示“我太聪明了,有时我一个字都听不懂我在说什么。” |
4 会见教授
![旧级别 00 - 33]()
- 嘿,阿米戈。我是 Galactic Rush 公司科学部的负责人 Hans Noodles 教授。我还监督教你 Java 的项目。
- 下午好,Noodles 教授。 - 我想告诉您为什么
Java 是一种如此出色的编程语言。- 您一定会不止一次听到
平台独立性是 Java 相对于其他语言的不可否认的优势。那是什么以及如何处理它?我会尝试通过告诉你一些背景来解释。-
事实上,计算机只执行原始的数字命令。有“跟”、“摇”等狗指令;一只狗听到它们会做些什么。- 在计算机中,数字充当此类命令的角色:每个命令都用一个数字编码,即代码,也称为机器码。- 用数字形式编写程序非常困难,这就是人们发明
编程语言和编译器的原因。
这样的语言对于人和编译器来说都是可以理解的。
一个编译器是一个特殊的程序,它将用编程语言编写的程序文本翻译成机器代码集。- 通常程序员用编程语言编写程序,然后启动编译器,编译器使用程序员编写的程序代码文件来制作机器代码文件 - 最终(编译)程序。
![旧级别 00 - 34]()
- 生成的程序可以立即在计算机上运行。这种方法的缺点是程序代码严重依赖于处理器和操作系统。在 Windows 上编译的程序无法在 Android 手机上运行。
- 如果我尝试在 Windows 上运行一个为 Android 编写和编译的程序将无法运行? - 是的。- 但 Java 的方法更具创新性。
![旧级别 00 - 35]()
- Java 编译器不会将所有类都编译成一个机器码程序。相反,它不会将每个类编译成机器码,而是编译成特殊的中间码(字节码)。程序启动时会运行对机器代码的编译。
- 那么谁来在开始时编译一个程序? - 有一个名为 JVM(Java 虚拟机)的特殊程序。当执行由字节码组成的程序时,它是第一个启动的程序。然后在程序启动之前,JVM 将其编译为机器代码。
- 多么激动人心!这样做的目的是什么? - 这是一个非常明智的决定,也是 Java 全面统治的原因之一。 - 由于这种方法,Java 程序几乎可以在任何设备上运行——计算机、电话、ATM、烤面包机、银行卡 (!)。
- 哇! - 这种方法有很多优点。这就是为什么所有 Android 程序也是用 Java 编写的。由于移动领域的发展,Java 在以下领域占据主导地位:1)
企业:银行、公司、投资基金等的大量服务器端应用程序。2)
移动:移动应用程序开发(手机、平板电脑),感谢安卓。3)
Web: PHP 在该领域处于领先地位,但 Java 也占有很大的市场份额。4)
大数据:在数千台服务器的集群中进行分布式计算。5)
智能设备:用于可上网的智能家居、电子产品或冰箱的程序。- Java 不仅仅是一种语言,而是一个完整的系统,数以百万计的现成模块可以在您的程序中使用。您可以在数以千计的 Internet 社区和论坛中寻求帮助或建议。- 使用 Java 编程的次数越多,您就越能找到问题的答案——«为什么是 Java?»。今天就到此为止。
- 谢谢,教授。这是最有趣和最鼓舞人心的演讲。
5 遇见金
哇,又一个人类女性。但这一次,是黑发。多么激动人心!- 你好,我叫金丽玲。
- 嗨,我是阿米戈。 - 我知道。是我想出了你的名字。迭戈永远不会想到。我想以一个简短的演示开始我的演讲——现在,请注意你的屏幕!
![旧级别 00 - 36]()
- 哎呀,错误的闪存驱动器。等等……阿米戈的思绪以电子速度在脑海中飞驰。咳咳……难道她对机器人情有独钟?多么激动人心!还有桌上的一张照片——是她男朋友吗?- 让我们回到讲座!让我用简单的话向你解释所有的东西。
- 好的。 - 我想对教授和 Risha 所说的话进行补充。- 在 Java 中,您不仅可以编写命令,还可以直接在代码中注释它们。这些注释被编译器忽略,就好像根本没有一样。
当程序执行时,所有注释都被跳过! - 你能给我举个例子吗? - 当然:
![旧级别 00 - 37]()
- 在课程代码中,我们的评论是“现在我们展示...”。注释以字符 «/*» 开头,以 «*/» 结尾。
编译程序时,编译器会忽略 /* 和 */ 之间的所有字符 - 所以我可以在那里写任何东西吗? - 是的。通常代码部分会有各种注释,有疑问或难以理解。有几十行的注释(通常写在方法之前)描述方法工作的细节。- 在代码中设置注释的另一种方法是使用字符 «//»。
![旧级别 00 - 38]()
- 这样做时,
注释是以字符 // 开头到它们所在行的末尾的代码部分。所以没有字符来“关闭”评论。- 顺便说一下,软件开发人员很有幽默感,你可能会在代码中发现一些有趣的注释:
- 是的,评论有时很有趣。 - 我受够了。
- 一个简短但有趣的讲座。谢谢,金。
6 遇见胡里奥
![旧级别 00 - 39]()
- 嘿,阿米戈。我是胡里奥西耶斯塔。- 我看到你今天的工作很辛苦。- 应得的休息怎么样?
- 我不应该去听课吗? - 是的。不过,上课一定要有趣,你忘了吗?上次我查过有一条法律禁止无聊的老师!- 这是一个特殊的视频教程……呃……保持你的学习热情……总之,让我们看看,把问题放在后面。打开它!