一个好的程序员不仅会编程,他们应该深入理解这个程序,然后让这个程序高效的运行。实际上,我们发现很多代码都是使用google搜来的,大家很难知道其为什么是这样的结果,特别是当其出错的时候。

为了了解java设计的原则,计算机科学(CS)的课程会很有用。下面是表示java和操作系统(Operating System)、网络(Networks)、人工智能(Artificial Intelligence)、编译原理(Compiler)、算法(Algorithm)和逻辑(Logic)的图。

 java工程师应该学些的计算机课程

如果您发现其他有用的相关概念,请留下您的宝贵意见。

阅读全文

java hashcode

在Java中有个java.lang.Object的超类,定义了2个非常重要的方法:

1
2
public boolean equals(Object obj)
public int hashCode()

它们是非常被非常重要的,所以有必要理解它们,特别是当用户添加自定义的对象被到Map上的时候。即使是这样,有的高级工程师有时也弄不清应应该如何正确使用。在这篇文章中,我将首先用一个常见的错误例子,来说明equals()和hashCode是如何工作的。

阅读全文

当你要实现计数器的时候,HashMap是非常有用的。

1
2
3
4
5
6
7
8
HashMap<String, Integer> countMap = new HashMap<String, Integer>();
//.... 有多少个a可以这样统计
if(countMap.keySet().contains(a)){
countMap.put(a, countMap.get(a)+1);
}else{
countMap.put(a, 1);
}
阅读全文

策略模式也叫政策模式。

这是一个关于策略模式的故事。假设 Mike某个时候开车超速,但是他不是总是这样做。他有可能被警察叫停。也许这个警察很好,不给他罚单或者警告。(让我们吧这样的警察叫做”NicePolice”)。也有可能被抓到让后给予罚单。(让我们叫这样的警察”HardPolice”)。他不知道什么警察会把他叫停,直到他被逮住,如果那样运行,那就是策略模式的关注点。

策略模式的类图

 Arrayin Memory

阅读全文

状态模式(State)主要是为了在运行时改变记录状态。

关于状态模式的故事

人们可以根据不同的财务生活。他们可以是富有或者是平穷。这是两种状态”富裕”和”平穷”,根据时间的流逝这个是状态是可以改变的。这个例子的想法是:通常平穷的人们都在非常努力的工作而富裕的人都在玩。他们做什么取决于他们的状态。状态可以改变他们的行为,否则,社会太不公平了。(努力可以改变平穷,富裕贪玩也能变成平穷)

阅读全文

Java Core API提供了Comparable 和 Comparator 两个接口。根据名称来看我们做到它们能以某种方式比较东西。但是它们究竟有什么不同呢?下面的两个例子就会说明。这个简单的例子是比较两个高清电视的大小。当你读完本文,你就会做到如何使用Comparable 和 Comparator。

阅读全文

我经常听到很多地方和教程中说,每当重写equals()方法,我需要重写hashCode()方法。但是,原因是什么?

equals()是定义在Object的一个方。在Java中,有两种类型的比较。一种方法是使用 “==” 操作符,
另一种就是“equals()” 。这两者之间的差异相信大家都知道, “equals()”是指等价关系。
在广义上说两个对象是相等的,他们满足的是“equals()”条件。

hashCode()是定义在Object的一个native方法,默认实现基本上是对象提供来自内存地址映射到一个整数的值。

阅读全文

Javy Liu

author.bio


author.job


beijing