我正在尝试Sphere Online Judge(SPOJ)的Next Palindrome问题,我需要找到一个高达一百万位整数的回文.我想过使用Java的函数来反转字符串,但它们是否允许String这么长?
我可以用两种方式实现单一方法,
1.
public String getTestMessage()
{
return "Hello" + "World..!";
}
Run Code Online (Sandbox Code Playgroud)
2.
public String getTestMessage()
{
return new StringBuffer("Hello").append("World..!").toString();
}
Run Code Online (Sandbox Code Playgroud)
在第一个场景中,String将创建两个新对象.
在第二个场景中,还会创建两个新对象,但会有一个String和StringBuffer.现在方式会很快吗?我有点困惑.
使用String s1="java";并String s2= new String("java");
执行这两个操作时创建不同的String对象?我知道如果我使用String s3="java"它使用s1的相同对象但在s2情况下也使用相同的对象吗?如果是这样,为什么StringBuffer sb = new StringBuffer("java");使用不同的对象.因为如果我这样做System.out.println(sb.equals( s1 ));会返回false;
我对equals方法的理解是它比较两个引用是否引用同一个对象,除非我们有重写的equals方法,如果我的理解是错误的,请告诉我.