public class ClassOne{
private String name;
ClassOne(String myName)
{
name=myName;
}
public String toString()
{
return("My name is "+name);
}
}class ClassTwo{
public static void main(String args[])
{
ClassOne oa=new ClassOne("Kobe Bryantd");
System.out.println(oa);
}
}在编译的时候,出现了如下错误:
class ClassOne is public,should be declared in a file named ClassOne.java
请问是不是定义成为public的类一定要放在另外一个同名的.java文件中呢?
还有一个问题,就是为什么在mian中可以写System.out.println(oa);呢?我觉得应该写oa对象的方法调用啊:System.out.println(oa.toString());
这种写法为什么可以省略.toString()呢?
private String name;
ClassOne(String myName)
{
name=myName;
}
public String toString()
{
return("My name is "+name);
}
}class ClassTwo{
public static void main(String args[])
{
ClassOne oa=new ClassOne("Kobe Bryantd");
System.out.println(oa);
}
}在编译的时候,出现了如下错误:
class ClassOne is public,should be declared in a file named ClassOne.java
请问是不是定义成为public的类一定要放在另外一个同名的.java文件中呢?
还有一个问题,就是为什么在mian中可以写System.out.println(oa);呢?我觉得应该写oa对象的方法调用啊:System.out.println(oa.toString());
这种写法为什么可以省略.toString()呢?
public void print(Object obj)
{
write(String.valueOf(obj));
}可以看到,如果参数为Object,会首先调用String.valueOf()进行转换下面是String::valueOf()的实现方法:
public static String valueOf(Object obj)
{
return obj != null ? obj.toString() : "null";
}现在明白了吧