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);
}
}
我认为没有区别,为什么有两种方法?或者我错过了什么?
答案 0 :(得分:12)
因为每个类都有一个继承自toString()
的{{1}}方法。如果甚至可以创建某种字符串表示,则Object
方法应该返回一个字符串,该字符串以最佳方式表示对象。
名称toString()
非常模糊,因此他们添加了一个更简单的方法toString()
。
因为他们希望pattern()
能够返回一些聪明的东西,所以他们使用正则表达式的模式,这是toString()
类的一个很好的字符串表示。
答案 1 :(得分: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
。所以“我的字符串”和“我的字符串”.toString()是相同的