05-洞中学士
天一大亮,你就起身,到洞外活动筋骨。大汗淋漓之后冲了个澡,吃了早饭,就琢磨该干点什么。
突然你想起这侠客岛中有个书房,有位比较有学问的学士在书房居住,于是沿路走向书房。
侠客岛的书房的房里是几个直达屋顶的大书架,上面摆满了书。这些书均是岛主从各地高价搜罗而来。诗词书画,武学秘典,无所不包。一位老者正在随意翻阅,看见你进来放下书迎了过来。
学士道:“小哥昨夜睡得可是舒服?这洞中简陋,难为小哥了。”学士行礼问道。
你忙回应道:“一切都可以,只是有几个问题搞不明白,想跟先生请教。”
学士道:“老朽在这里也是呆了二十几个年头,虽然不会武功,但是也知道这爪洼世界的一点微末,小哥尽可问我,我自当言无不尽。”
你问道:“敢问先生,这里的武功到底是什么概念?”
“在你的世界中,一说到武功,就是拳脚棍棒这些硬功夫,而在爪洼世界,拳脚棍棒可起不到什么作用,所以,功夫在这里是另外的意义了。”
“爪洼世界中有八大基本武功,对应八种功夫,四种拳脚,两种简单兵刃,两种暗器。当然还有一些兵器功夫,就不在这八大基本武功之内了。”
“这四种拳脚功夫分别为byte、short、int、long,两种简单兵刃为float、double,两种暗器是boolean、char。”
“绝大多数人善用拳法和剑法,分别对应的是int和double,偶尔也用暗器,其他特殊兵刃用的也很多,但不是想得到就能得到,需要花些时日去搜寻。”
“那么变量又是什么意义?”
“所谓变量,就像材料名称一样,符咒需要材料配合,而材料需要适量,再通过武功将适量的材料注入一种叫做内存的无形空间。”
“内存又是什么?”
“整个爪洼世界除了需要靠虚拟机来维持运行,其次就是内存最为重要。内存就像是一个盒子,里面可以装下你在符咒中用到的所有的材料。但是每种武功能够注入的材料的量也不相同。”
“比如int,它可以注入的材料的量都是整数的量,所有缺斤短两的状况,它都会做出平衡,比如你需要一种材料的量为18,如果你放入的正好是18的量,那么int就会将这18注入到内存,但是如果你只给了17.98,它就会报错,int不能把不整齐的量注入内存。”
“当然你也可以强制注入,被称为强制转换,这个我就不多说了,以后你会遇到这种事情,也就以后再说。但是有一种情况例外,当你要注入的量需要通过除法计算的时候,也很有可能产生一个不整齐的量,此时,虚拟机会将不整齐的部分舍弃,而把整数的量注入内存。”
“比如你需要一种材料a,而量为10/3,其结果为3.333无限循环,但是内存只会接收最前面的3,而后面的所有量都会被舍弃,这就是int武功的特点。”
“变量有什么需要注意的地方?”
“变量有三个重要的属性:类型,名称,值。”
“类型决定了你要通过什么武功将多少量的材料注入到内存中去,int注入整数,double注入的就可以是不整齐的小数,String就可以注入文字。”
“名称就是你需要的材料,也就是变量的名称,你也发现了,这个世界所有内容都是通过英文单词的形式处理的,只有有意义的名称才能正确的完成某件事情,见名知意是一件非常重要的事情。通常我们都是用英文单词和数字的组合来完成变量名称的定义,虽然也可以使用其他几种符号,一般都不推荐,而且数字不能作为变量名称的第一个内容,比如:1table就是错误的写法,其次还有一些爪洼世界的专属名词等也都不能使用,武功类型就是专属名词。专属名词很多,不需要你一下子都会,慢慢的你就能知道这些专属名词有什么。”
“值就不用多说了,这就是一个量的问题,没什么神秘的地方。”
老学士顿了顿,又说道:“可能有些概念超乎你所在世界的理解范围,我倒是有些题目可以给你演练一下,你试着学学看。”
老学士拿出一个空白符咒,背后写下【Compute.java】,然后就开始写咒语。
public class Compute {
public static void main(String[] args) {
int peach = 4;
int price = 3;
int avg1 = price / peach;
double avg2 = price * 1.0 / peach;
System.out.println("桃子的错误均价为:" + avg1);
System.out.println("桃子的正确均价为:" + avg2);
}
}
符咒效果 |
---|
桃子的错误均价为:0 桃子的正确均价为:0.75 |
老学士解释道:“桃子4个,3个钱买的,那么一个桃子多少钱?符咒中我们都用int分别将变量名称peach和price的量注入到了内存,这也就是赋值的过程,如果直接通过int的方式计算均价,那么就会触发int的本质:舍弃不整齐的部分,其结果就只能为0。但是如果价格为零的话,四个桃子就不用钱买了。所以我们需要通过double武功的方式注入,但是double武功又有它的特点,所以我给价格转换了格式为double类型,这样就能求得正确的答案了。这其中有一些你暂时不能理解的东西,不要紧,慢慢你就明白了。我也只不过是做了一个演示而已。”
“变量本身也不是固定的,变量所接收的值本来就是可以发生变化的,变量和变量还会整合为其他的变量,这些都跟你所在的世界是不一样的。”
public class Material {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
num1 = 20;
num2 = 30;
num1 = num1 + 10;
num2 = num1 + num2;
int num3 = num1 + num2;
}
}
“你发现了吧,变量num1的量可以随时发生改变,也可以通过自身原有的值的基础上增加更多的值,也可以把其他变量的值加入现有的变量中整合,也可以将两种相同类型的变量整合产生其他变量,这都是允许的。”
“四种拳脚功夫的类型我们也称之为整数类型,两种普通兵刃被称之为浮点类型,这六种类型是可以进行运算的,就像是加减乘除。所以,你所看到的不一定是你看到的那样简单,这需要时间理解,毕竟和你的世界有些不一样的地方。”
public class Operation {
public static void main(String[] args) {
int x = 1;
int y = x * 2;
int z = 5 * y * y + 2 * y + 3;
int a = 5;
int b = 1;
int c = (a - b) * (a + b);
int i = 64;
int j = i / 8;
int k = j / 4;
int l = k * 3;
}
}
“你应该发现一个很重要的问题,每一行咒语后面都有一个分号作为结尾,这是咒语被识别的不二法门,每一行咒语都需要分号分开,不然就无法确定哪句咒语是哪句咒语。”
“你目前所知道的String之所以我说它是特殊的武功,原因在于它很强大。它可以把任何你想说的话都作为一种值赋值给变量并且注入到内存中去。看上去和基础武功的使用差不多,但是它的强大之处需要你一点点的了解。我给你看几个String武功的使用方式。”
public class Article {
public static void main(String[] args) {
String str1 = "爪洼世界";
String str2 = "123";
String str3 = "213 + 432";
String str4 = str1 + "虚拟机";
String str5 = "";
int a = 333;
String str6 = str5 + a;
}
}
“话语,就叫做文字,也叫做文本,在爪洼世界中,文本是由字符组成,字符的实质就是暗器char,你可以简单的理解为String这种兵刃能够被分解为很多的暗器,通过你的世界的理解来说这很玄学,但是在爪洼世界这很普通。以后你会懂的。”
“String除了可以定义各种各样的文本,还可以通过加符号拼接各种文本,最终形成一句很长的文本,它包含了许多其他变量的值。最重要的是,String会合并其他类型的变量的值,将其他武功注入的内容转化为String的格式,这个特性非常重要。”
“我也教了你很多东西了,也举了很多的例子,写了很多的符咒给你看,其实你不用太在意这些内容,毕竟要接受这些内容是需要时日的,从你的世界的理论角度开始改变,这个过程不是一个轻松的过程。”
“但是我希望你记住,武功就是类型,武功的作用就是定义变量,再得到适当的值,然后将这个值赋值变量,最终通过运功将值注入内存。变量名一旦定义是一成不变的,但是他能接收不同的值,可以随时改变它所接收值,这个才是最重要的。”
“对了,还有一点要记住,总纲的类名除了见名知意,使用英文开头等规则之外,还需要第一个字母大写,类名和符咒的名字要保持一致。变量名和方法名第一个字母小写,其他的都和类名的规则一致。虽然我很想通过你的世界的概念解释这一切,但是毕竟两个世界存在很大的差异,涉及到的名词你需要好好理解,离开这个世界的第一要务就是要理解这些内容。”
一个上午的时间,老学士给你灌输了太多难以理解的内容,但是没有办法,为了回去,又不得不去记忆和理解这些东西。你拿好老学士写的几张符咒,对老学士躬身作别。
老学士赶忙拦住你道:”我这里有三个任务你如果有兴趣可以接一下,我还需要对你说明一下任务的事情。所有的人都有可能会有任务需要别人帮忙,每个任务都会有奖赏,其实这个世界中,除了我们这些人之外,你们的世界叫我们是NPC,我也不懂这是什么意义,但是无所谓,只有你们是存在等级这个概念的。通过不断的接任务完成任务,可以得到赏金同时也会得到经验值,当累积到一定的经验值之后,你就可以升级,不知道能不能理解。“
这对你来说太熟悉不过了,你欣喜若狂的点头道:”这一上午云里雾里的,就这个事情我是最明白不过。“
老学士笑道:”那最好了,所以我的任务虽然奖励不多,但是对你理解这里的一切还是有帮助的。如果小哥有时间,你可以接一下任务,增长几分江湖阅历,赚点儿经验和赏金,也未尝不是美事。“
任务1:给老学士的赞美
老学士虽然不是虚荣,但是也希望自己的讲解得到肯定。而对于爪洼世界的老学士来说,一段符咒在眼前被执行,显示出对自己的赞美之意,足以得到慰藉。
写一张完整的符咒,让咒语显示五次”老学士真是旷古烁金的名士!“,每一行显示一句话。
//请编写需要的代码
任务2:你是那年出生的?
在爪洼世界,每个人都知道 System.out.println(),并经常使用它,甚至孩子们也会使用。编写一个咒语来显示你的真实出生年份。
今年是爪洼历的1127年。
//请编写需要的代码
任务3:声明变量
在爪洼世界里,你不能直接使用某个变量,没有人会理解你的意思,虚拟机也不能。在爪洼世界,所有的变量都需要不同的武功进行声明,武功的注入方式不同,这才是虚拟机识别咒语的方式。你可以试着声明一些变量,通过int和String两种武功完成。
声明变量也叫做创建变量,就是通过武功类型定义变量名而不赋值的过程,比如int a。
我需要你在main方法中定义三个变量:name、age、city,自己区分需要的武功类型。
//请编写需要的代码
我来说一句