爪洼世界

老杨

03-内存寻址

设置字体大小:

别了阿娇,穿过大广场,你又回到洞中,找老学士复命。

你只见墙上挂了一幅图,老学士则在图前研究者什么。

老学士见你回来,微微点头,继续看着图,你也不便打扰,随便找了本书来看。

这些书都是岛主花重金从中原买来的,确实称得上是名家名典,有的甚至是当时孤本,十分珍惜。但是对于你来说,这些蝌蚪文的文言文,实在不是你的菜。

你只得起身四处闲逛。

老学士看到你四处闲逛,问道:“眼下没有什么事情做,我有些事情想要教你,不知道小哥……咳咳,应该称呼你为少侠了,不知少侠有没有兴趣听老夫啰嗦啰嗦?”

你正愁没事情做,赶忙点头,凑身到老学士身边。

只见老学士所看之图像是一个棋盘,上面大大小小得写了些内容,东一块,西一块,很是凌乱,但又感觉很有规律,你很难看出这是做什么用的。

老学士指着图问道:“此图,少侠可能看明白?”

你把头摇的跟拨浪鼓一样。

老学士笑道:“前日我曾跟你说过变量得值通过武功的方式将之注入到内存,此时可还记得?此图就是内存图。”

“内存是一个虚无的空间,我们并没有办法触摸到它。但是爪洼虚拟机提供了一些方法,可以让我们看到一些内存空间的虚像,凭借这些虚像,我们可以更好地写出复杂的符咒。”

“少侠且看,此图似棋盘一般,但是又不是以点为根基,而是以方格为根基。每个方格中都可以存入一些内容,当然,每个格子可存入的内容数量有限。”

“每个格子都有专属的标识,跟下棋一样,围棋高手下盲棋的时候,就是通过专属标识在脑子中构建棋局,一般来说都是先横后竖,比如13这个数字,它的位置就是横四竖二,而11则是横八竖二。”

“在岛主处,有一本名为API的上古典籍,里面记载了关于整个爪洼世界的内容,老夫有幸,受岛主青睐,曾在岛主处研习了一段时日的API。据典籍记载,内存空间分为无数个小格子,每个格子可存储1bit的内容,所谓的1bit就像我们所说的斤和两一样,而1bit有八个位构成,通过int武功注入内存后,这个变量的值要占用4bit,也就是三十二个位。怎奈老朽无能,参不透这其中的奥妙。或许岛外有高人了解其中的机密也未可知。”

老学士的话中带有些许的遗憾。但是老学士又突然精神抖擞起来,道:“人生不如意十之八九,好在老朽还有时间继续参悟,倒也不觉得有什么可惜之处。”

“据老朽的研习,发现这些格子的内容不是一成不变的,也就是说,我们可以通过武功注入内容,也可以取出内容,还可以修改内容。格子有一个开始的地方,被称为零的位置,也就是说内存是从横零竖零的地方开始记录内容。那么只要你知道某一个格子的编号,就可以将内容注入其中,或者从中取出。有些格子可以保存符咒的咒语,也就是成为命令集的东西,爪洼虚拟机中有一个叫做处理器的中枢会用到这些命令集。”

“处理器知道如何启动注入到内存中的命令,几乎所有的处理器命令都类似于从某些格子中获取内容,启动某些功能,完成某些操作,再将之发送给其他的格子。数百个简单的命令通过有序的组合,可以组合成为一些复杂而有用的命令。”

“但是,格子的编号难以记忆,因此变量名就成为了编号的替代品,也就是说,我们定义变量的时候,是定义了一个地址的替代品,然后通过运功,将内容注入内存中的某一个格子中,并且将这个格子的编号跟变量名进行连接,以后我们就可以通过变量名操作这些格子中的内容。这样一来,就不难理解变量是有类型和名称的,通过运功将值注入内存,因此,类型,名称,内存,值,这四个就成为了浑然一体。”

“我给你写一些咒语,你看看你了解了多少。”

package xkx.javaworld.day0322;

/**
 * 符咒包: xkx.javaworld.day0322
 * 总纲名: Task0102
 * 制符人: 小虾米
 * 符咒文:
 * 制符日: 爪洼历1127年03月22日
 */
public class VarDemo {
    public static void main(String[] args) {
        /*
            创建一个变量,其名称为s1,通过String进行定义,用来存储文本
            但是同一个类中,或者同一个方法中不能存在同名的变量
            因为没有值,所以该变量并没有注入内存
         */
        String s1;
        /*
            创建一个变量,其名称为s2,并且将侠客岛三个字赋值给它并注入内存
         */
        String s2 = "侠客岛";
        int a;
        int b = 4;
    }
}

“正好我这里有一些一级的任务书,跟变量和内存稍微有些接近,有时间的话,你就做做看吧。”

问题1:一切从简单开始

有时候我们会接到一些非常简单,而且可能无聊的任务。没办法,人生就是这样。
我想把龙岛主和木岛主的名字存到内存中去,这样就需要定义两个String的变量用来存储文本。
如果你闲来无事,就帮帮我,如果这张符咒能显现两位岛主的名字那就更好了。
package xkx.javaworld.level01.task02;
//在这里编写代码

问题2:光有名字还不够

我突然想到,光有两位岛主的名字还不太够,如果能把岛主们的年龄也存起来就更好了。
可惜我并不知道岛主们的年龄,我只记得他们来这里二十七年了。
那时候,木岛主刚刚而立之年,而龙岛主刚刚不惑之年。
如果你不知道什么是而立和不惑,那你得去问问有学问的人了。
等你算出了这两个年龄,那么就定义两个int类型变量,把值存起来。
package xkx.javaworld.level01.task03;
//在这里编写代码

问题3:棋盘的格子数

我突然忘记了棋盘有多少个格子了。
我只记得,棋盘是由横十九个点,竖十九个点组成,两点之间有一线,也就是说两点之间可以产生一个格子。
这样算的话,格子的数量应该是横十八竖十八,那么只要求取十八的平方数应该就知道格子数了。
我老了,算不出来有多少了,谁可以帮我算出一共有多少个格子?
package xkx.javaworld.level01.task04;
//在这里编写代码

看网友对 03-内存寻址 的精彩评论

我来说一句