黑马程序员_编程学习心得

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

分享一些学习编程语言的小心得。

1.刚接触面向对象,想要全面的记住面向对象里面的语法规则是有较大难度的,尤其是涉及到一些特别容易混淆的知识点时,就更加难以记住了。那该如何记住这些知识点呢?我的建议是根据生活中的实例来记忆语法规则,面向对象相对于面向过程的一大优势就是提高了代码的重复利用率,方便了程序的编写,面向对象的思想来源于生活,因此类比生活中的事务,有助于帮助自己记忆知识点。

  例如:如何理解子类的构造函数要先调用父类中的构造函数,如果父类中没有空构造函数时,为什么需要在子类中的显示调用父类中的构造函数。

对于这一点的解释是:

对于子类调用父类的构造方法可以做出如下解释: 子类无条件地继承父类的不含参数的构造方法。如果子类自己没有构造方法,则它将继承父类的无参数构造方法作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行继承自父类的无参数构造方法,然后再执行自己的构造方法。 对于父类含参数的构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的第一个可执行语句。

虽然解释的很详细但是对于记忆来说不太容易,还有对于有些喜欢知根知底的人来说,解释里面可能又会冒出两三个问题,例如子类为什么必须小调用父类中的构造方法?super()语句为什么在子类的构造方法中的第一句来执行?

如果你在记忆这些知识点时和生活中你所熟悉且容易理解的例子进行比较,你会发现这个知识点自然而然就被记住了。

例如:假如Vehicle是父类,bus,bike是子类,父类的构造方法是为了初始化Vehicle的各个部件比如轮胎,座位等等,有时你想要快速的得到Vehicle的对象,就需要调用父类中的无参构造函数。这样你可以直接用Vehicle vehicle = new Vehicle();快速的得到一个Vehicle对象。创建bus子类是为了快速得到bus对象,而bus对象在产生时,可能也需要初始化轮胎,座位等。我们知道子类会默认继承父类中的成员,假如我在Vehicle的构造方法初始化了4个轮胎和没有初始化轮胎的,而我需要的bus是4个轮胎,bike是两个轮胎。说到这里可能你就知道为什么子类要调用父类中的构造方法了,因为子类在初始化时需要知道父类对其属性的处理方式,也正是因为如此,super()语句需要出现在子类构造函数中的第一行,不然的话子类的初始化方式可能会被父类覆盖,那么初始化还有什么意义?

再比如:构造代码块,和静态代码块的区别,和书写位置,以及何时使用这两种代码块。

可以这样理解:静态构造代码块对了类的初始化,既然是对类的初始化所以是在类加载时执行,又由于类在jvm中是以唯一的类的.class的字节码文件形式存在的,所以仅执行一次。
构造代码块主要是对类的对象的共性进行初始化,所以每创建一次对象就要调用一次构造代码块的代码,使得类的所有对象有相同的初始化属性。
举例:车的图纸是类,生产出来的每辆车是类的对象。静态代码块可以理解为是对图纸的初始化(规定图纸的各个参数等)构造代码块是对所有生产的车进行初始化(比如初始化车刹车方向盘等)。
这个问题我相信只要你记住了车的图纸的例子,在结合上面较理论方面的解释,问题应该比较容易理解,也容易记忆。后续遇到这类问题以及衍生的问题你也可以通过这个例子进行推导和变通。当然你可以有自己的方法,反正适合于你的,就是最好的。

2.程序员的水平是敲代码敲出来的。对于初学者来说,经常一小段代码会跳出来很多个问题,让人看着就怕。这时最好的也是唯一的办法就是一个一个解决,看不懂英文提示的话,就用软件翻译,当遇到程序能运行,但是结果和预期的目标不同时,可以先尝试自己解决,解决不了的话百度上找答案,实在不行的话,再请教别人(实际开发的时候可没有什么人能在一旁像老师一样指导你)。自己解决bug,可以锻炼自己调试问题的能力,对于英文不好的人也能锻炼英文能力。上网查找资料能锻炼你搜索资料的能力,以及现学现用的能力(开发时只要能完成任务就行),总之敲代码才是锻炼编程能力的王道。

3.注意英语学习,欧美在编程方面领先国内是众所周知的,很多最新的参考资料都是用英文书写的,想要学最新的知识,至少英语的阅读能力要好(其实英文的技术文章不难,基本用到的词汇都是比较常见的,且由于是专业术语,翻译成中文很固定,且句子结构都比较简单)可能有些人会觉得刚开始不是可以看中文版的资料吗?好的那我举个最直接的例子,当你遇到编程跳出来的错误时,如果你看的懂那些英文,你肯定不会像哪些看不懂的人一样丈二和尚摸不着头脑,还有当你学习一个新的类时,你和仅凭借类名和方法名就推测出这个类大致是用来干什么的,这无疑能大大提升你学习新东西的效率。另外撇开编程不说,英文好的话,对于你的生活也是有帮助的,甚至还有你意想不到的作用,详情请在论坛搜索学好英文。

4.拒绝三天打鱼两天晒网的行为。学编程是个苦差事,尤其是你想要学好编程,离不开每天都在电脑上敲打几个小时,如果说你有很好的毅力还好,相信坚持1年的时间你的能力一定能有所提升,不是有名人说过,只要你能坚持全身心的学习一件事情每天坚持3个小时,坚持3年,你就能成为大师。所以你需要保证明天一定的代码量,等你积累到一定程度的时候相信你会有不错的编程能力。还有别想这一口吃成太多,小心会反胃,影响长期学习的积极性,当然那些以学习新技术为生活中的重要乐趣的人除外。

以上的东西纯手打,一方面分享一下自己的小心得,同时也算是对自己的小小总结,如果你有什么经验,希望你也能跟我分享下。另外求加技术分啊,我要进黑马!!!

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

你可能感兴趣的:(j2se基础)