2012-05-27 14 views
9

Pattern类中的pattern()方法与toString()方法之间的区别是什么?模式类中的pattern()vs toString()

的医生说:

public String pattern() 

返回正则表达式从编译过此模式。

public String toString() 

返回此模式的字符串表示。这是编译此模式的正则表达式。

即使他们实现返回相同的结果:

import java.util.regex.*; 

class Test { 
    public static void main(String[] args) { 
    Pattern p = Pattern.compile("[a-zA-Z]+\\.?"); 
    String s = p.pattern(); 
    String d = p.toString(); 
    System.out.println(s); 
    System.out.println(d); 
    } 
} 

我看不出有什么区别,所以为什么有两种方法?或者我错过了什么?

回答

12

因为每个班级都有从Object继承的toString()方法。如果甚至可以创建某种字符串表示形式,toString()方法应该返回一个代表该对象的字符串的最佳方式。 名称toString()非常含糊,因此他们添加了一个更直接的方法pattern()

而且因为他们想要toString()巧妙地返回一些东西,所以他们使用了正则表达式的模式,这是Pattern类的良好字符串表示形式。

+0

@martijin:那它呢? ...我不是为什么,但我觉得被骗了!无论如何thnx! – WickeD

+0

@WickeD:是的,就是这样。 :) –

0

toString()方法在每个类中(从类Object延伸)。有一个例子。 System.out.print(Object o);可以打印一些关于Object的信息。其实这将是相同的:System.out.print(o.toString())。所以你有简单的方法来看看你有什么对象。请尝试:

Object someUnknownObject = new JButton(); 
System.out.println(someUnknownObject); 

// output 
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5... 

正如您所看到的,即使您不知道这是一个按钮,您仍可以看到有关此对象的信息。

而且StringObject所以有一个奇怪的例子:

String str = "hello"; 
String toStr = str.toString(); 

System.out.println(str.toString().toString().toString()...); 

这是无用的,但all classes have this method。所以“我的字符串”和“我的字符串”.toString()是一样的