java编程思想越看越懵逼了,是否这本书适

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java编程思想越看越懵逼了,是否这本书适相关的知识,希望对你有一定的参考价值。

参考技术A

(以下全部为我个人想法,不代表大众)

Java语言是我见过的最严谨的语言,也是最简单明了的语言(Java8新特性……除外,其实是我还不会用)

因为电脑不是人,所以它不会猜出你接下来要做什么,换句话说,永远都是你在告诉程序该做什么,如果你不说,它就很可能和你预想的不一样。而所谓的编程思想的核心,只有三点,一是指令在何处发出,二是发出什么指令,三是指令是否正确。

指令在何处发出:在一个类的内部,只需要定义它所需要实现的方法,在一个非抽象方法的内部,只要去想它该如何实现,就足够了(其他不要多想)比方说我定义一个类“人类”,我决定让他走起来,那么我就写“走动”这个方法,这个方法只管“走动”,不要去想什么不能闯红灯了不能撞墙了之类的问题,那是其他的方法该做的,跟这个方法无关。详细一点,在人类世界,如果一个人走着走着出现了这种情况,那么他只是应当停止走动,也就是【结束方法】,而该不该结束,不是腿该决定的,而是大脑;如果这个人脑残,他可能撞上墙也不会停下来,一直这么撞下去。总的来说,对于一个方法,判断它是否应该执行不在这个方法体自己的内部。但是,在方法体内部要判断的是:它自己能否执行,如果不能,则不执行(或部分不执行)并抛出异常。对于脑残,他的大脑由于没有正确捕获这个异常,所以他继续撞墙。

发出什么指令:对于Java程序员来说这一点稍微想想就能想出来。思考这个问题的关键就在于,你想让你的程序是什么样。你已经写好了几个类,并且封装完善,下一步就是如何把它们拼凑到一起。编程的艺术就在此!对于文科生而言就像是写作文的大纲,对于理科生而言就像是在解题,现在唯一该动的,是你的大脑。如果程序太过复杂,建议你先把思路缕清,最好用笔纸记下来,方便修改,或者写到注释里面方便阅读。思路不清晰的程序员是写不出好程序的

指令是否正确:

与其说是指令是否正确,不如说是指令是否明确。这一步就是解决你写好的程序在运行时出现的问题了。没有人能够一次性做好一个完整的项目,就算换了下辈子的桃花运做到了,也一定会亲自上机测试。而纯Java程序(我是指没有本地命令和本地方法的程序)出现的bug可谓是少之又少,所以一旦出现,你就需要考虑你的设计是否完善或是否正确。Java里面易混淆的语句还是有不少的,比如下面这段代码:

String a = "abc";
String b = new String("abc");
String c = "abc";
String d = new String("abc");
System.out.println(a == b); // false
System.out.println(a == c); // true
System.out.println(b == d); // false
System.out.println(a.equals(b)); // true

在人类看来这些值都应当是true,但在我们电脑看来(……好像哪里不对?=.=)这就是有严格的判断方式的。再比如:

int a = 5;
int b = a++ + ++a;

上面这个代码我估计随便哪个正常人看了都会吓一跳……就算是有几十年编程经验的专业程序员,让他去写这种代码,那百分之三百不可能的。这样的代码对于虚拟机来说指令明确,但对于你来说呢?如果运行时就是因为这个部分没有达到预期效果,该从何处下手呢?所以在写代码的时候,一定要条理清晰切忌为节省行数牺牲可读性,包括注释,为了给你自己排除故障,也为了一起合作的其他程序员在读你的代码的时候能明白你在做什么。

《Java编程思想》读书笔记

前言

这个月一直没更新,就是一直在读这本《Java编程思想》,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好。然后再看这边书的厚度,哇塞,厚的真的不止一点点,所以很多人看了没多久就放弃了,看不下去,但是基于它的厚度,就说,这是一本好书。也有人说,看了没什么用的一本书,甚至还去嘲笑那些正在看的人,说还不如看点实际的技术。那么在我的世界里,如果一本书没有读过,如果妄加评论的话,没有任何的意义。所以我真的仔仔细细读了下来,书上也写了很多的笔记,但是我不会把它们都写下来,因为太多了。

不过,确实要把这么厚的书读薄,是真的不容易。我想了很多种方式去记录我的读书笔记,但是最后都觉得不好,我觉得我的笔记应该有下面的几个作用。

1、作为一个线索,以后我自己能快速的回顾和查询。

2、已经知道的,不提及;不知道的,重点记录。

3、让即使没有看过的人也能知道里面到底有什么值得他们去看的。

所以最后我决定用一种提问的方式,或者是一种陈述的方式,来记录我的读书笔记,如果你能回答出下面的提问,或者能理解陈述的内容,那么证明书中的内容其实你已经了解。如果回答不出,或者答案不清晰不确定,那么你可以网上去查询这个问题的答案,或者翻阅书籍。

下面就是我记录的所有笔记。

 

笔记部分

1、什么是OOP?

2、public、private、protected的权限

3、什么是组合?什么是继承?

4、Java内存的分配方式

5、对象和对象的引用

6、java虚拟机垃圾回收的基本策略;停止-复制;标记-清扫;

7、控制对成员的访问权限是为了:让用户不要触碰他们不该触碰的部分,为了让类库的设计者可以更改类的内部工作方式

8、组合和继承如何选择?

9、final、static、和其对应方法和块加载和初始化的顺序

10、多态的作用是消除类型之间的耦合关系,多态是一项让程序员:“将改变的事物与未边的事物分离开来”的技术。

11、用继承表达行为间的差异,并用字段表达状态上的变化

12、接口和抽象类的对比

13、匿名内部类

14、泛型的作用是可以在编译期防止将错误类型的对象放置到容器中

15、容器之间的对比,如ArrayList和LInkedList等,再比如set、hashset、treeset等

16、优先队列PriorityQueue

17、异常处理的一个重要原则是“只有在你知道如何处理的情况下才捕获异常”

18、“报告”功能是异常的精髓所在

19、String的不可变性

20、StringBuffer和StringBuilder

21、所有的类都是在对于其第一次使用时,动态加载到JVM中的

22、加载-》链接-》初始化

23、instanceof是什么方法?

24、什么是动态代理?

25、利用泛型方法封装工具类

26、在泛型代码内部,无法获得任何有关泛型参数类型的信息。

27、数组区别于其他容器的三个方面:效率,类型,保存基本类型的能力

28、HashMap的内部是如何实现的?

29、使用I\O操作文件时要注意什么?

30、什么是对象序列化

31、enum和switch是一对冤家

32、注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻方便的使用这些数据。

33、注解能帮助我们避免编写累赘的部署描述文件。

34、进程和线程,进程是运行在它自己地址空间内的自包容的程序,一个线程是在进程中的一个单一的顺序控制流。

35、实现线程的两种方式

36、线程池的作用

37、加锁防止两个任务访问相同的资源,隐式,显式

38、volatile关键字是做什么用的

39、wait与notify和notifyAll

40、死锁的四个条件:至少有一个不能共享的资源、至少有一个任务它必须持有一个资源且正在等待获取一个当前被别的任务持有的资源、资源不能被任务抢占,必须有循环等待

41、防止死锁只要破坏四个条件中的任意一个

42、有很多免锁容器如ConcurrentHashMap等

43、确定多个线程不会同时读取和改变一个资源,这就是线程产生的最大难题

 

 

个人总结

作为现代快节奏的生活之下,能静下心来看书,着实不容易,所以我都觉得我看到的不够仔细,很多时候也漏下了很多重点。不过我相信你能找到它们的。

对于这本书来说,读完之后我发现有几个你需要注意的地方

1、这本书之所以大家都认为它好,是因为它涵盖了JAVA语言几乎所有的基础,它就如同一个博物馆,所有的藏品都已摆放整齐。

2、这本书的代码比文字更厉害,我可以准确的说,我在书上的笔记几乎很多都是在给代码写注释,同样是一页,代码比文字至少要花费两倍的时间去看,如果你直接跳过,那么你将错过很多精彩的部分。

3、设计模式在这本书里面灵活的穿插着,我真的庆幸我在看这本书之前看了设计模式,不然看书的过程中很多时候会不理解它说的设计模式是什么意思,从而看了之后,我也更加理解了一些设计模式的使用。

4、现在网络发达,很多问题网上都有现成的答案,所以很少会再翻开书去查找,而且这本书太重了,不适合携带,所以请你看书的时候保持一颗心,一遍理解,不懂就记。

5、尽信书不如无书,现在发展这么快,JAVA本身也不断的发展,1.9都要有了,所以很多书上的东西或许过时,很多已经在历史的长河中隐去了,所以看书的时候多看看外面的世界。

 

以上是关于java编程思想越看越懵逼了,是否这本书适的主要内容,如果未能解决你的问题,请参考以下文章

opencv之霍夫曼变换

看过java编程思想这本书的请进!!!

《Java编程思想》读书笔记

构建之法读后感

第五次软件测试作业 读构建之法有感

1.JAVA 编程思想——对象入门