泛型是在JDK5引入的特性。它允许我们定义的类和接口的时候使用类型参数。它被广泛运用在java集合框架中。类型擦出概念是关于泛型是最容易困惑的部分之一。本文将教你如何使用她。

1.一个常见错误

在下面的例子,accept 方法接受了一个Object集合来作为参数,在main方法中调用却是使用String的集合。它能正常调用吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
public static void main(String[] args) throws IOException {
ArrayList<String> al = new ArrayList<String>();
al.add("a");
al.add("b");
accept(al);
}
public static void accept(ArrayList<Object> al){
for(Object o: al)
System.out.println(o);
}
}
阅读全文

这篇文章总结了常见关于Java构造器的问题。

1.为什么创建子类对象的时候同样需要调用父类的构造函数?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Super {
String s;
public Super(){
System.out.println("Super");
}
}
public class Sub extends Super {
public Sub(){
System.out.println("Sub");
}
public static void main(String[] args){
Sub s = new Sub();
}
}
阅读全文

一个好的程序员不仅会编程,他们应该深入理解这个程序,然后让这个程序高效的运行。实际上,我们发现很多代码都是使用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。

阅读全文

Javy Liu

author.bio


author.job


beijing