JAVA java学习(14)——————学习过程中的易错点和学习方法分享

学习过程中的易错点

万事开头难,Java 编程的初学者常常会遇到各种各样的问题。对于自学的读者来说,则是需要花费更多的时间、精力来解决这些问题,而且一旦遇到的问题几天都得不到解决,往往会带来很大的挫败感。

我在安装java的时候就是啥都不了解按着安装文档,下载了最新的java15版本,测试环境时一直不正确,折腾了两天好不容易安装对了,朋友发来了Eclipse工具包,又遇到了问题,Eclipse.exe打不开,找来朋友检查了一圈,对我是一顿臭骂,发来的Eclipse工具才支持java8,(哈哈)尴尬。

1. 大小写问题

之前我们已经提到,Java 是区分大小写的语言。但由于大部分读者都是 Windows 操作系统的忠实拥护者,因此对大小问题往往都不够重视(Linux 平台是区分大小写的)。

例如,有的读者编写的 Java 程序的类是 HelloWorld,但当他运行 Java 程序时,运行的则是 java helloworld 这种形式,这种错误的形式没有严格按 Java 程序中编写的来写,可能引起系统提示如图所示的错误。
在这里插入图片描述
因此这里必须提醒大家,在 Java 程序里,HelloWorld 和 helloworld是完全不同的,必须严格注意 Java 程序里的大小写问题。

不仅如此,读者按照学习笔记中示例编写 Java 程序时,必须严格注意 Java 程序中每个单词的大小写,不要随意编写。例如 class 和 Class 是不同的两个词,class 是正确的,但是如果写成 Class,则程序无法编译通过。

实际上,Java 程序中的关键字全部是小写的,无需大写任何字母。

2. 路径里包含空格的问题

这是一个更容易引起错误的问题。由于 Windows 系统的很多路径都包含了空格,典型的例如 Program Files 文件夹,而且这个文件夹是 JDK 的默认安装路径。

如果 CLASSPATH 环境变量里包含的路径中存在空格,则可能引发错误。因此,推荐大家安装 JDK 以及 Java 相关程序、工具时,不要安装在包含空格的路径下,否则可能引发错误。

3.main 方法的问题

如果需要用 java 命令直接运行一个 Java 类,这个 Java 类必须包含 main 方法,这个 main 方法必须使用 public 和 static 来修饰,必须使用 void 声明该方法的返回值,而且该方法的参数类型只能是一个字符串数组,而不能是其他形式的参数。对于这个 main 方法而言,前面的 public 和 static 修饰符的位置可以互换,但其他部分则是固定的。

定义 main 方法时,不要写成 Main 方法,如果不小心把方法名的首字母写成了大写,编译时不会出现任何问题,但运行该程序时将给出如图的错误提示:
在这里插入图片描述
这个错误提示找不到 main 方法,因为 Java 虚拟机只会选择从 main 方法开始执行。对于 Main 方法,Java 虚拟机会把该方法当成一个普通方法,而不是程序的入口。

main 方法里可以放置程序员需要执行的可执行性语句,例如 System.out.println(“Hello World!”),这行语句是 Java 里的输出语句,用于向控制台输岀“Hello World!”这个字符串内容,输出结束后还输出一个换行符。

在 Java 程序里执行输岀有两种简单的方式:System.out.print(需要输出的内容) 和 System.out.println (需要输出的内容),其中前者在输出结束后不会换行,而后者在输出结束后会换行。

快速上手java的方法

有人说,Java 一堆知识点,最开始学的时候就会很迷茫,根本不知道方向在哪里,抱着一本书一页一页的翻。学完了,写个程序,做个项目,啥都不知道,和没学一样。

“学了四年的计算机课程,我们班大多数同学都不知道该干什么,能干什么,感觉好像什么都学了,但是又什么都干不来!”

“面试的时候,很多单位问做过什么项目,能干什么,我们都回答不上来,就连很多问题,我们都不知道。”

……

这些都是很多计算机专业毕业后学生们的感想,但是这几乎成为了一种大学 IT 行业的毛病,也是很多学编程语言以后的人的想法。

就拿 Java 这个来说,很多人拿着书在学习的时候,是不是都一页一页的顺着翻书看的?遇到问题都卡住了,要不然就去问老师,麻烦点就问其他人,但又感觉不好意思,再不然就失去信心,干脆放弃了。有些时候,看书觉得懂了,一上机操作啥都不知道了……

其实上面说的这些这些都是误区!学编程,一定要动手,遇到 bug 了,就自己去查,如果连这点都不想做,那我只能劝你别学了。

程序员,有些时候产生的 bug 搜遍全网都找不到解决方法,但是还是要自己去解决;如果就连一个随便在网上一搜索就出来的了 bug 都不愿意去查,那还何谈学习编程?

你要知道你是新手,在学习过程中肯定会遇到非常多的麻烦,但是,所有人都是从新手走过来的。你遇到的问题,你的前辈们多多少少都遇到过,所以,除了学会查找资料以外,大胆的提问,有些时候也会有一些意想不到的收获。

比如,你的程序出现了一个 bug,你在网上找到了解决方法,但是别人用到了一个你没学过的知识点解决了你的问题,你该怎么办?学编程,一页一页慢慢的学,没用!哪里想学,哪里不会,看目录,直接去读。

“没有学不好的语言,只有不努力的人!”我其实一直不太喜欢这句话。学习,尤其是编程语言,是有技巧的。如果什么都去学,而不是精学工作和面试中的知识点,那不仅会造成学习效率相当低下,而且还会迷失在知识的海洋中。结果是,大家投入了大量的时间,也学到了不少的知识点,但是无法把学到的知识点整理成升职加薪的 Java 知识体系,说白了,也就是白学了。

所以说,学编程,其实就是在提升自己的自学能力,动手能力,逻辑能力,还有解决问题的能力。无论你是学习哪种语言,这些方法都大同小异:

1.多动手,多动脑,多实践。

没有几万行的代码,没有经常敲键盘的努力,你就不要羡慕别人打代码有多快,多熟练。别老是想着我看书把这个完全看懂了,甚至都能背下来了,我就可以过了!其实不然,你会发现,你一上机操作,又是一堆错误。

有些时候,敲一两次代码,比看十次书还有用!要不然,你认为你刚开始学 Java 编程打代码的速度就能像那些程序员一样打的很顺很快,对于别人打了那么多年代码的程序员来说,也是有点太不公平了吧,对吧?而且,一定是打代码,不是照着敲代码!照着敲代码,你就不是程序员了,而是打字员了。在写下每一行代码之前,都要想一想为什么,怎么来的。我保证,随着时间的积累,(1+0.01)的 365 次方是 37.78,总有一天,量变总会形成质变。

2.不急躁,不拒绝错误。

不要急躁,遇到技术问题,必须冷静对待,不能让思维混乱,保持清醒的头脑才能分析和解决各种问题。

永远也不要拒绝自己的错误,很多新手一开始一敲代码,运行框里面就弹出来了十几行报错。用开玩笑的话说,在最开始学编程的那几个月里面,你都不敢按下你自己程序的启动运行按钮。

但是事实确实如此,作为一名新手,你确实会犯下很多错误,诸如文件创建失败,没有写出函数,或者没配置环境变量等等……但是不要怕,直接把报错的提示复制粘贴到度娘,一搜索就出来了,你会发现,相对于正确的程序,你的收获明显会更多。错误即是财富,请记住。

3.学习一定要学会取大舍小。

什么叫取大舍小呢?舍本逐末知道吧?他的反义词。比如说我举一个例子:有很多时候我们会把一个组件的引用作为一个类的成员变量,而不是在其起作用的函数中去定义。

有些新手就开始疑惑了,既然都一样,那为什么不放在函数中呢?其实这些问题到后面你自然就知道了,是因为作用域的问题所在。开始学编程或者入门后,不要去纠结太多你目前无法理解的细枝末节,否则会让你的学习进度还是效率,甚至是信心,都会大打折扣。抓住需要掌握的,有些细节,到了后面你慢慢就会知道了。

4.看一本书尽量不要从头向后一页一页的看。

编程这种课程,确实有点不一样。因为当你在学习的时候,那是一个又一个的知识点,但是在我们开发时,做项目的时候,要的是一张知识网络。这也就是面试的时候,曾经的项目经验那么受重视的原因所在。

有些 Java 老手说,要把一个小白变成老油条咋办?简单,丢进项目组里面混一段时间就好了。当你出来后,你会发现你所学习的 Java 不再是很多零散的知识点了,而是一个体系。

到这个时候,你也就算有了 Java 高阶的学习基础了。那么对于我们一般的初学者来说,能够形成一张体系,也就至关重要,甚至说对以后搞开发,找工作来说必不可少。所以这种意识要从学习的初期就要开始培养。

初学编程时,遇到了后面不熟悉的知识点,没关系,只要想看,就去看!在网上查找自己遇到的 Bug 的时候,看见别人用了一种自己没学过的东西解决了,如果想了解,那就去看那部分知识!

甚至你在学习新知识的时候,可以尝试把新老知识结合一下,当你成功了以后,这种点点滴滴的成就感,也会督促你继续前进。所以,看一本书,不要顺着看,这不是编程的学习方法所在!

5.多阅读别人的优秀代码,永远不要抵触学习新知识。

编程所属的计算机科学和其他科学界都差不多,但有个特点就是计算机科学界的前沿科学发展的太快了。所以,多去读一读别人的代码,不要抵触新知识,是学习计算机科学,也亦是学习编程的一条相对来说的“捷径”。

上一篇:JAVA java学习(13)——————Eclipse中的快捷键

下一篇:JAVA java学习(15)——————java程序员学习路线

猜你喜欢

转载自blog.csdn.net/qq_43434300/article/details/108812357