public class Test
{
public static void main(String args[])
{
System.out.print("ok"+"\t");
System.out.print("ok"+'\t');
//为什么这两句执行的结果是一样的(单引号和双引号)?
}}

解决方案 »

  1.   

    System.out.print("ok"+'\t');   
    自动把'\t'转换为String 了
      

  2.   

    字符串有 同化  作用,也就是任何对象和String 相加(JAVA 中唯一重载的字符串操作符 +),那么后者都将调用自己的toString 方法将其转化为String并且与+号前面的字符串做串接运算,如果自己没有定义的话,那么超类,最后上述到Object类,那么总是有的。。你这里的例子,'\'是一个char,所以它和字符串Ok 运算,将首先自动打包成Character包装类型,然后调用这个包装类型的toString,也就是返回一个“\t”字符串。。所以结果一样
      

  3.   

    3楼朋友当然针对这个题目解释的正确。
    但是若是把楼主上述代码修改为:
    public class Test 

    public static void main(String args[]) 

    System.out.print("\t"); 
    System.out.print('\t'); 
    System.out.print("ok");
    //为什么这两句执行的结果是一样的(单引号和双引号)? 
    } }
    一样可以运行,这里就不是和String类型对象相加的问题了,而是Object.toString()的问题。
    任何类均是Object的子类public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。 
    Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。