这节其实不只是和java有关,所有语言,所有操作系统都应该有这个概念——我们也称其为路径。这节本来想放在【java入门学习五】中的。想了一下,当年自己在这个上面也吃了很多亏,所以单拿一节出来说说。很多初学者一直搞不明白,当前路径,上一级,下一级,同级路径;导致出现很多问题。
首先大概说下,一个程序,不完全是我们全部写出来。比如这个程序中,我们可能会用到一张图片,一个mp3,等等的外部资源;那么我们就可以将其引入到我们的程序中。说个我的小故事:CS1.6在我的印象中,背景音乐(she is my sin)很酷,对不对?有一天突发奇想,我想知道这个音乐放在哪里,后来我在CS目录下,找到了,一堆,其中一个就是这背景音乐,还包括,换枪等等的声音,都在这里面。后来,我就想,是不是可以把这个背景音乐改了,如果没有记错,我应该是改成功了的。言归正转,所以说CS中有游戏声音等等,这些外部资源都被CS程序读到了,对不对?既然要正确的读到,是不是我们应该拿到这些音乐所在的路径。所以说路径是不是很重要???废话真多。
我现安了一个cs1.6,不过背景音乐不是shi is my sin,无所谓。进入游戏后,听到的这个声音,就是这个。所以你完全可以,大胆的,换一个HeiXu的声音放在这里,名称和格式要一致就行。给大家看看图。
既然进入游戏时,我们能听到这个音乐,那就说明,游戏一定是按照某一条路,来找到了这个文件;对,这就是我们要说的路径。所以说我们不要把问题想得太复杂,软件也是人写的,所以我们用正常方式对待就行。。。
接下来,我们以编译java类为例,来说明这个问题。
大家还记得吧,在java入门五中,loser使用的是javac HelloWorld.java来编译源文件的?为什么loser使用javac时就可以找到HelloWorld.java呢?这里先放一个问题。
又是废话一句:我们所写的源文件是不是一定是存在我们硬盘上的某个位置的?比如E:\java\java_loser\java6\Test1.java
那么接下来,切换目录到【E:\java\java_loser】下面
loser再运行javac命令,来编译Test1.java
看到没有,找不到文件?为什么,就是因为当前这个路径下,没有Test1.java,对不对?如图
这里有一个很关键的点,就是你在执行javac时,当前的路径位置在哪里???从loser的cmd中可以看出,第一次执行成功,当前的路径是【E:\java\java_loser\java6】;第二次失败时,当前的路径是【E:\java\java_loser】。记住一点当前路径是一直在变的,不是一个固定的路径。
又举个例子:有一所叫java的学校,这个学校中有一个叫javac的同学;现在javac同学收到一个任务【去帮老师改一份叫Test1.java的作业】。那么javac同学怎么才能拿到这份作业呢?
情景一:1、javac这个同学从学校大门来到学校中(当然可能已经在学校中了);2、来到学校后,去到1号教学楼;3、爬上5楼;4、走到505室;5、来到老师的办工桌;6、拿到工位上的Test1.java的作业。下面我提取一下:地球—java学校—1号教学楼—5楼—505室—老师办工桌。这就是一个完整的路径。
你就是javac同学,现在你看到了Test1.java这份作业,那么你就javac Test1.java,就成功了。那以想一想,如果javac同学不在老师的工位上,他能正确执行吗?当然不能。
情景二:接下来,情况有点变化:如果javac同学在学校中,1号教学楼3楼玩。那么javac同学是不是就可以直接去到5楼,再到505,再到老师办工桌。路径如下:5楼—505室—老师办工桌。
情景一中,javac同学的当前路径就是学校外,所以他要从学校一步一步的走。
情景二中,javac同学的当前路径就是一号教学楼(3楼不属于5楼这条路),所以他从5楼开始,最终到达老师的工位,帮都完成批改作业。
现在我们回到刚才的cmd中,来处理如下的问题。
前提说明:如图中我们可以看出,javac这个同学位于java_loser这个位置,对不对?所以接下来,我们就是告诉javac同学,作业的位置。如下
我们告诉javac同学,你要先到达java6,然后就可以看到Test1.java作业了。所以javac从java_loser出发,去到java6,最终看到了Test1.java,完成作业批改。
举一反三,如果javac同学位于java这个位置,那么就应该如下
先去到java_loser,然后java6,再然后get work,最终done!!!
菜鸟loser,声明一下,老鸟们可能会喷我了,说应该按绝对路径,和相对路径来讲。loser以前也是从这种方式学过来的,但是发现有时候真的无法理解,所以菜鸟只能片面的认为,这种方式可能让新人有点无法接受。所以loser这里不这么来,以后慢慢再把这两个概念融入进来。如果有想听我朋友,可以给我留言。
大家记得这个不?loser当年的最爱,当年因为游戏,掉到年级倒数100名,因为她又回到前100名,后来就不玩游戏了,戒了也10多年了。loser是个容易失去目标的菜鸟,虽然没有走到一起,再次祝福她。。。