Java基础问题,为什么toString的结果就不要用new调用

Java基础问题,为什么toString的结果就不要用new调用,什么时候才调用new String?

Java允许你直接用“”生成字符串,而不需要new

你的问题看的不是很明白呢

Java中的String对象具有只读的特性,一般不会使用new String方式构建一个新的String对象,而是使用""直接生成字符串,因为在生成过程中可能会生成其他的String对象或StringBuffered,StringBuilder的对象作为中间对象,让JVM自由选择构造方式效率会比较高,如果使用new的方式会强行构造String中间变量,如果中间的构造过程涉及字符创拼接等操作可能会导致效率较低;
其实new方式构建String是用于一些很特殊的场景,我觉得API保留这种构造方法主要是为了向后兼容,因为大部分需要new的情况其实涉及其他类型向String的类型装换,而API已经提供了更加合理的工厂方法valueOf来代替;

toString()方法是类的方法,你一般都是在object上调用了,自身实例作为参数传递然后把自身转成字符串,已经有了实例为什么还要new呢

你可以F3看下toString方法的源码,它是Object类的方法,默认打印的是hash值的。一般的类如果需要显示特殊的信息的话,就会重写toString方法的。