如果我们创建一个如下所示的String
并打印值:
String s=new String("demo");
System.out.println(s);
。输出为:
demo
好。 这是预期的输出。 但这里String
是一个类。 记住这一点。 下面是另一个示例。 例如,取一个这样的类:
class A
{
public static void main (String args[])
{
A a =new A();
A a1=new A("hi"); //we should create a Constructor like A(String name)
System.out.println(a1); //here O/P is address
}
}
我的怀疑是,我创建A
实例的方式与创建新String
对象的方式相同,并打印了该对象。 那么为什么它不为A
实例打印给定的String
呢?
覆盖类中的Object#toString()
。默认情况下,调用 Object 的 toString()
方法。
此外,要打印该值,您只需重写该方法,因为在执行此语句时将在内部调用toString()
方法。
System.out.println(a1);
示例重写toString()
方法。
@Override
public String toString() {
// return a string value
return "The String representation of your class, as per your needs";
}
类中以调用System.out.println();
时打印内容的方式override
toString()
方法。在类String
toString()
方法具有覆盖,因此您将退出上面的位置。
如前所述,您需要覆盖从 Object
类继承的默认 toString()
方法。每个类都会自动扩展Object
类,该类有一个相当简单的toString()
,它不知道如何将你的特定对象转换为字符串。为什么要这样做,特别是如果你的类是任意复杂的?它应该知道如何将所有类的字段转换为"合理的"字符串表示形式?
在类的toString()
中,您需要返回要用来表示类的字符串。下面是一个简单的示例:
class A {
String foo;
public A(String foo) {
this.foo = foo;
}
public String toString() {
return foo;
}
}
public class sample {
public static void main(String[] args) {
A a = new A("Hello world!");
System.out.println(a);
}
}
字符串是一个类,其目的是保存字符串值,如果引用,将返回该值。 使用其他类时,通常需要添加其他行为。如果要使用该类来保存可以设置的不同值(在对象创建时或稍后处理时),则可能需要对此类值使用"setter"和"getter"方法。
下面是一个示例:
public class Snippet {
private static final String C_DEFAULT_VALUE = "<default value>";
private String name;
private static Snippet mySnippet;
public Snippet() {
}
public Snippet(String value) {
setName(value);
}
/**
* @param args
*/
public static void main(String[] args) {
if (args != null && args.length > 0) {
mySnippet = new Snippet(args[0]);
} else {
mySnippet = new Snippet(C_DEFAULT_VALUE);
}
System.out.println(mySnippet.getName());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}