Java初学者:初学者的注意事项
目前为止我们介绍了很基础的java编程,到此为止,你应该对java有了一个模模糊糊的印象,至少知道步骤上,它是怎么运行的,并且能够照猫画虎的写出一段短小的程序,这可以算是一个阶段,我们来说一下到此阶段,你应该注意的几点:
1. 如何学习java,很多初学者急功近利,学到了基本输入输出之后就觉得java也没什么嘛,就开始跃跃欲试,马上找来一大堆的java书籍,使劲的读使劲 的学,专挑自己完全不懂的地方看,然后发现java好难啊,自己用了好几周甚至更长,居然一点儿都不懂,于是从此以后再也不碰java了。java难吗? 负责的告诉你,难,挺难的,说不难的人是站着说话不腰疼,他忘了他开始学的时候是多么的抓心挠肝了。事实上,自从我们记事开始,就没有一样东西好学的。
贪多嚼不烂,目标不要太远大,因为远大的目标太虚幻了,可以有远大的目标,但绝不是你最近应该考虑如何具体实现的事情。学习java也是如此,刚学到输入 输出的朋友,应该把大部分精力放到精读如何基本输入输出,如何定义基本数据类型的数据,如何编译执行java程序上。不要小看这种看似极其简单的东西,基 础才是最重要的,我曾经就因为试图打个“Hello world”而整整花费了好几个小时。百丈高楼,没有好的地基,一定会坍塌,切记切记。当然我并不反对初学者去自学下一步的知识,我只是说要慢慢来,多么 慢呢?以我的经验,如果你没有学过任何编程语言并且也不是天才,同时你还算个勤学之人,那么至少需要一两周左右的时间来练习基本的输入输出,然后再进行下 一步学习。
2. java是大小心敏感的,就是说,大写字母和小写字母,在java里不可能被看成同样的东西。比如,System.out.println(“I am student”); 这运行起来完全没问题,但是如果你写成了system.out.println("I am student"); 就绝对运行不了(除非你非常蛋疼的自己做了一个名为system的包,然后里面也做了个out包,然后你自己再弄了个println方法,这在理论上说应 该是可以的,但我没有尝试过,因为比较没有意义)。同样的,你写了个int n; 还写了一个int N; 那这两个变量,就是不同的变量。java的关键字,一般来说,你是不能更改的,而你自己定义的变量名,大写小写,也会被java视为不同的东西。
3. 写的程序要格式清晰规范,可读性好,首行要缩进,成对的花括号,除了类的括号以外,最后都要处于同一列。这并不是强制的,每个人的习惯也不同,但是至少要 清晰规范,比如某人,从来就不把成对的花括号放在同一列,而是任由eclipse自动排版,虽然也很规范,但是我每次看她的代码都要把花括号改一改才舒 服,然后她又气哄哄的给改回去。
其实只从是否能运行来说,这是没关系的,java并不在乎你的程序代码看着乱不乱,只要对,就能编译运行,这与python强制程序员规范其代码格式不 同。但是你写的那么乱,你看着不闹心啊?你看着不闹心别人看着也闹心。而且过几天你自己看,都看不明白了。为什么要别人看呢?因为如果你最后是程序员了, 那么你要与别人合作写程序的,你的代码一定会让别人看的。到那时候你再想养成好习惯就来不及了。
4. 定义的数据名起码要正确,符合命名规则,其次要有意义。其实可以在百度那里查到java的命名规则,基本上就是说,数据名称只能是英文模式下的,连续的, 不是java关键字的字符串,第一个字符可以是字母,下划线或者$号,有人喜欢用c风格的命名方式,有人喜欢用Pascal规范的命名方式。在这里作为一 个菜鸟,我不好做什么评论,我只是觉得,java就是java,东西我们可以混着学,甚至可以混着用,但是也应该保留每种东西的特点。
列举几个例子,常见的数据声明初始化:String name = "jianbo shi"; int age = 30; double mark = 70.5; 以上是正确的。注意,有人喜欢把数据名的首字母大写,但是我更喜欢小写,而把大写的特权让给类名的定义,不过这没关系,习惯而已。
下面看几个错误的: String my name = "john mark"; 错误原因在于,my name 之间有个空格,如果你非要弄的好像中间有个空格,你可以这样String my_name = "john mark"; 有很多人,就喜欢这么用。 int 年龄 = 30; 错误原因在于,年龄两个字,不是英文,也许在中国人的电脑里,java不会报错甚至可以编译通过,但是运行的话就不行了,总之,除了要显示的信息外,代码部分不要用中文。double 200mark =70.5; 错误的原因在于,200mark的首字符是数字。
再来几个虽然没错,但是不好的:String a = "john mark"; int b = 30; double c = 70.5; Scanner myface = new Scanner(System.in); 这四个都不好,其原因是,谁知道你那个a,b,c是干啥的啊?相信我,如果你的程序超过几百行,你又是在几周前写的,那我保证就算你自己再去看那个程序, 你都无法马上说出a,b,c是干什么的,更何况别人呢。而且,你的脸什么时候变成java的Scanner的一个实例了?听着咋那么闹心呢,那么想拿三天没洗的袜子胡你丫熊脸呢?您别不信,这就是我见过的一位初学者写的。
大约就是以上几点了,这些是很重要的,要注意。而且不要小瞧简单的程序,从长远来看,相对简单的程序才是最重要的,而且简单的东西,向来都不如我们想的那么简单,比如,以下是我们做过的程序:
这个程序的代码,至少包含了一下几点知识点:包的理解和导入,静态函数的理解,函数返回值,函数参数,定义类的实例,内建函数的调用。如果牵强点儿说的 话,还可以联系到默认构建函数的问题。也就是说,当你学的再深一点儿,回头再看这个程序,其实它真的不像你当初想的那么简单。
就算是以初学者的角度来看,如果你想一想的话,也没那么容易,比如,那个输出结果带了那么多的0,如果你就想让那些零不显示,但是还非要使用printf 呢?这就要看%f的其他使用方式了。比如说,我就不想每次都System.out.print, 我就想每次都直接使用print呢?虽然很少有程序员如此蛋疼,但是,这确实可以实现,只要显示的导入java本来就默认导入的lang就行了,但是这次 要连同方法一起导入。