9

pattern()类中的方法和toString()方法有什么区别Pattern

医生说:

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);
  }
}

我看不出有什么区别,那为什么有两种方法呢?还是我错过了什么?

4

2 回答 2

13

因为每个类都有一个toString()继承自Object. toString()如果甚至可以创建某种字符串表示形式,该方法应该返回一个字符串,该字符串以最好的方式表示对象。这个名字toString()很模糊,所以他们添加了一个pattern()更简单的方法。

因为他们想toString()返回一些聪明的东西,所以他们使用了正则表达式的模式,这是Pattern类的一个很好的字符串表示。

于 2012-05-27T11:11:29.633 回答
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...

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

也是String一个Object所以有一个奇怪的例子:

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

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

这是无用的,但是all classes have this method。所以 "my string" 和 "my string".toString() 是一样的

于 2012-05-27T11:23:48.270 回答