其实之前有学了一丢丢的java基础,是在中国慕课上学习的翁恺老师的java编程基础,学了几天吧,那段时间突然工作特别忙,然后加上快过年了,就没有继续学下去了。因为业务需要做数据分析,自己自学了一段时间的python,却发现python能做的其实是有限的。python的作用是一个粘合剂,它很重要,但是它不是最重要的那一个。它主要还是一个辅助的作用,它需要一门能够让它抱大腿的语言。而java,就是最合适的语言。于是我就打算重新把java学起来。而比较幸运的是,在这段时间里,居然找到了马士兵老师,听了他的建议和指导之后,我就加入他的培训班了。目前来看,效果还是蛮不错的,后期效果如何,我在文章会一步步的跟进。
今天是上课的第一天,因为课程在8月已经开始了,所以我目前听的是录播的课程,希望在之后的学习中充分利用时间,提高效率,争取早点赶上直播课。在上课之前,有一个一对一的指导,对我还是很有帮助的。张老师对我的指导,我跟大家做一个分享。因为我的基础薄弱,老师要求我从零基础的这个课程开始学习,然后告诉我,java基础学习要做好这几项重点的学习,分别是1.多线程 2.java集合 3.java虚拟机部分 4.数据库部分。并且这几个部分对后面关联性非常强,要下苦功,下大功夫去学习。而关于听课的方法,他告诉我,听课就是听课,不要要其他的任何事情,要听老师的思路,理解老师的思路,不要自己去敲代码,专注于听思路就行,听课的时候其他的任何事情都不要做。而在课后呢,你就要按照自己理解的思路去敲代码,去验证自己理解的思路对不对,如果不对或者不记得了,就要回去看老师的视频。看完之后,再理解一遍,理解之后再按照自己的思路敲代码。而在你已经完全能够敲对代码,完全能够自己独立的把思路总结出来之后,你要形成自己的文章,要能够表达出来。当你表达出来之后,最好的情况,是再形成一篇Xmind的思维导图,为什么呢?因为这样就相当于是形成了以关键词为中心的结构性思维,就变成有规律的东西了。老师告诉我,每天学习时间至少要达到3个小时以上才行,其中一个半小时用于学习视频,直播也就是老师讲的东西,一个半小时用于自己的总结,敲代码。在我看来,这个时间比例是非常合理的,因为你必须花足够的时间自己消化,理解,总结,输出,你才能够真正的记住和运用这些知识。除了学习的内容已经学习的方法,老师还跟我讲了非常重要的一点,就是对于一个新学者而言,java的这种语言的思维可能和平时我们的思维是不一样的,可能会给我们产生一些困扰,会有很多我们并不能理解的地方,可能我们当时怎么思考也没有用,那怎么办呢?是不是就在那个地方一直转圈圈呢?不是的,如果我们真的不理解,可以去问,问百度,问同学,问群友,问老师,如果还是不能理解,怎么办呢?那就先跟着老师敲代码,多敲几遍,先记住它是怎么敲的,先记住,先敲几遍。即使不能理解它的底层结构,先把这个代码敲对了。然后在这里打个标记,告诉自己,这里是没有理解的。然后就越过它,去学习新的内容。如果将来讲到的某个内容让你恍然大悟,你就可以回来再把它理解透。总之,你不要停下来,要向前走。老师在这里打了一个比喻,说是我们学着骑自行车的时候,我们不一定是理解了它的原理,但是我们也能学会。编程也是一样,有些地方,你理解不了,是很正常的,能够理解的,当然是理解了最好,那些你不能理解的,你先跟着敲,敲着敲着也许就会了。毕竟,编程既是一种思维,也是一门技能。老师的这些指导对我来说是非常有帮助的,并且老师说到,一定要多问,不理解就问,不要憋着,不要怕丢人。这很重要,因为你不问,你就永远都不知道,你问了,你可能就懂了。问问题从来都不是丢人的,不懂还不敢问才是丢人的。
听完老师的教导之后,我就启程开始我的学习之路了。这个基础课程是由连老师和马老师主讲的,前面的部分是马老师来讲。今天听了第一节,感觉还是很有收获的。跟大家做一下分享。今天的内容适合和我一样的超级小白来听,大佬们欢迎随时批评指正。
言归正传,今天连老师开篇先讲了学习java基础的几个要点,第一,不要浮躁,要沉下心来。写代码是一项很需要耐心的事情,不是可以一蹴而就的,需要你沉下心来沉淀,一点一点的学,不要心浮气躁。这点很重要,也是我的弱点,我要谨记,我要改正。第二,学好英语很重要。这个也非常重要,为什么呢?因为编程它是的源代码都是英语写成的,你要阅读源代码,基础的英语知识还是需要的,并且它是发源于国外,所以很多前沿的文章是英语写成的,你要学习,就要学好英语。我的英语水平太一般,只是刚刚好过六级。并且不是计算机科班出身,很多专有名词都不了解,必须抓紧时间学习。目前用的是busuu在学习英语,感觉软件是很不错的,就是没有计算机的专栏,还需要多找找路子,多学习。第三,要阅读源代码和文档。这是一个知其所以然的过程,这一点之所以重要是因为我们只有知道了这些源码是怎么写的,我们才能够说是真正了解了它的思路,而这种思路对于一个编程人员来说是至关重要的。这也是我特别想要学习编程的原因,它不仅是一项技能,更是一种思维,是一种发现问题,分析问题,解决问题的思维的思维,并且是这种思维最佳的应用场景。它几乎可以实现你想实现的任何事情。这对我来说太重要了。第四,共享源代码。这是理所当然的,既然这是一门开源的语言,用的也是别人的开源程序,那么开源就是必须要做的事情,希望自己将来能为开源的编程界做出一点微小的贡献吧。第五,热爱JAVA。选择了它,就要热爱它,要尽情的投入。我其实真的非常期待自己能好好的用JAVA来实现自己的方法论。所以我会投入最大的热情到JAVA上,一定要把它搞懂,最大化的运用好这门语言。
然后,讲到的就是计算机语言的简史,说明了JAVA是一门面向对象的语言,而不是一门面向过程的语言。虽然我还不太懂这个,但是先听着呗,后面肯定会讲这个内容,我也适当去百度一下面向对象是什么个意思。接着就是介绍JAVA这门语言诞生以及普及的原因。JAVA之所以诞生是因为一个叫Green的项目需要一种中立的可以跨平台的语言,运用这门语言可以在不同的平台实现它想要的功能。于是JAVA应运而生。而JAVA也因为它的这种跨平台的特性而开始流行了起来,因为它可以实现一次编译,多平台运行,而不是像C语言一样一次编译,只能在一个平台运行,到其他平台允许的话需要重新编译。所以JAVA随着互联网的爆炸式发展而迅速的流行起来。JAVA目前主要有三个版本,分别是企业版的JAVAEE,个人版的JAVASE和嵌入版的JAVAME,而我目前要学的是JAVASE的基础,到了后面,我应该就要学习JAVEEE的相关知识了,包括后期学习架构师的项目很多应该都是JAVAEE的项目。而我目前用的版本呢是JDK12.0的稳定版,学的是最新的稳定版,看起来连老师很有信心把我们较好,哈哈。
接下来就讲到很重点的JVM部分了,这个是实现JAVA跨平台的最关键的核心技术。为什么这么说呢?因为JAVA作为一门语言,它从编码到执行的熟悉是这样。首先,你写出JAVA的代码。然后,你把这个写好的代码编译成css格式的JVM文件。然后你运用JVM虚拟机来执行这个css格式的JVM的文件,也就是把它解释成机器语言并运行。(这是我的粗浅理解,如果有问题的话,后续我回来改正)需要注意的是,不同的操作系统要安装不同的JVM版本,我们主要用的是windows版本的JVM。而在这里,老师又给我们介绍了三个我听过很多次,但是一直不知道是啥意思的名词,分别是JDK,JRE和JVM,其中JDK是java development kit 也就是java开发工具集,目前我们用的主要是JDK12.0,而JRE则是java runtime environment 即java的运行环境,它是属于jdk的,而jvm是java virtual machine,则是java虚拟机,它是jre的组成部分,也是整个jdk最核心的部分,它是实现java跨平台的基础。而关于java的特点跨平台,安全,简单,面向对象,健壮等等老师一笔带过,因为这些我们现在不能理解的很深,很透,所以只要稍微看看就好了。刚学习,要做减法,很对,在一些不必要纠结的地方不去纠结。
做完这些概念的铺垫,我们就开始准备写代码了。写代码之前当然是要先把工具装上,老师已经提前把jdk的软件准备好通过网盘分享给了我们,安装的方式也告诉我们了。其中要注意的点就是:1.安装jdk的时候要记得自己的安装路径,因为后面会用到。2.不同于以往,安装新版jdk需要自己配置jre,配置方式是使用windws的命令窗口(win+r后输入cmd调出)进入到jdk的目录(我的是c:/program/java/jdk.12.0)后,输入 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre即可生成jre目录。3.jre配置完成后,我们就需要进行环境变量的配置了,这一步是为了使用在命令行运行程序的时候,它能够通过环境变量里设置的路径找到这个执行程序。怎么配置呢?右击我的电脑-属性-高级系统设置-高级-环境变量-系统变量-新建。变量名命名为JAVA_HOME,然后吧之前jdk的路径放进去,点击确定。然后在环境变量里找到Path,添加两个路径,分别是%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin 为什么要这样添加而不是直接添加他们的路径呢?因为这样的话,当你修改你前面的JAVA_HOME的路径的时候,你后面这些也能跟着修改,方便你随时进行不同版本的JAVA之间的切换。
JDK配置完成后,我们再看看常用的JAVA开发工具,这里的话,老师推荐我们使用的是noteopad++的文本编辑器和IDEA的集成开发环境,前期用不到IDEA,所以目前主要是使用notepad++。
写的时间太长了,有点着急了,赶紧开始第一个代码吧。代码很简单,如下图所示。但是对于一个初学者来说,要注意的点还是很多的:
1.java文件的名称必须跟public class后面的这个名词的名称保持一致。
2.一个java文件可以有多个class,但是public class只能有一个。
3.public static void main(string [ ] args)是所有java程序的入口,如果想执行相应的java代码,必须添加这个方法,也必须按这个格式。
4.java代码在编写的时候,每行结尾的时候需要使用;结束。
5.java代码的代码块需要用{ }括起来,前后匹配。
写完第一个java程序后,我发现需要对自己的编程做以下提升:
1.注意缩进
缩进非常重要,它会让你的代码显得有格式感,有层次感。会增强你代码的可读性,这不仅利于别人看你的代码,也利于你自己回顾自己的代码,这很重要,一定要养成缩减代码的习惯。
2.成对编程
什么是成对编程呢?就是你写代码的时候,写括号,引号这些都应该写完整后,在往里面添加内容,而不是先写一个括号,写完代码之后再加一个括号,这样很容易忘记,也很容易混乱,因为有些代码会有很多嵌套的内容。
3.见面知意
这一点也是对于可读性非常重要的,因为有时候当你回顾自己代码时,看到一个能够见名知意的代码可能你很快就能回想起它的意思,以及你写这个代码的用意,如果不知道的话,你可能还要不断的读上下文分析才知道,无形中浪费了很多很多时间,所以,给变量起名字不要偷懒。
这几点是我们初学就要养成的好习惯,千万不要想着以后慢慢改,养成习惯很容易,改,很难。
此外,老师还教我们怎么去做注释,//是指单行注释,/ /是指多行注释(不能嵌套),这两个用的比较多。而文本注释用的比较少,以后再学习。注释的内容在编译时是会自动跳过的,所以不会出现在字节码的文件中。
有编译,自然少不了反编译,编译是从源代码到class文件,而反编译呢则是从class文件返回到源代码。这个主要是一剂后悔药,怕我们把源代码给删了或改了,以后要找找不回来。所以提供一个工具,帮我们把css格式的文件或者是jar包转回来。但是这个我觉得有github运用的机会并不大吧?我用的不是很熟,以后再看看有没有说错。
今天就到这吧,闻到米粉肉的香味了。
2019-11-13