public class Palindrome { public static void main(String [] args){
Palindrome Pa = new Palindrome();
boolean flag = Pa.test(args[0]);
if (flag){
System.out.println("字符串是 Palindrome!");
}else{
System.out.println("字符串不是 Palindrome!");
}
}
/**
* 下面是我自己写的方法,各位大侠,为什么String strReverse = str.reverse().toString();句必须要转换为String的啊!
* StringBuffer 和 StringBuffer 之间的比较 同 String 和 Sting 之间的比较有什么不同?
* 我还是新手,不明白为什么 StringBuffer 之间比较的时候就会出错!!
*/
public boolean test(String strOriginal){
StringBuffer str = new StringBuffer(strOriginal);
System.out.println("Palindrome 的输入结果是:" + str);
String strReverse = str.reverse().toString();
System.out.println("Palindrome 的对比结果是:" + str);
/**
* StringBuffer 之间的比较
*/
// if(str.equals(str.reverse())){
// return true;
// }else{
// return false;
// }
/**
* String 之间的比较
*/
if (strReverse.equals(strOriginal)){
return true;
}else{
return false;
}
}
}
Palindrome Pa = new Palindrome();
boolean flag = Pa.test(args[0]);
if (flag){
System.out.println("字符串是 Palindrome!");
}else{
System.out.println("字符串不是 Palindrome!");
}
}
/**
* 下面是我自己写的方法,各位大侠,为什么String strReverse = str.reverse().toString();句必须要转换为String的啊!
* StringBuffer 和 StringBuffer 之间的比较 同 String 和 Sting 之间的比较有什么不同?
* 我还是新手,不明白为什么 StringBuffer 之间比较的时候就会出错!!
*/
public boolean test(String strOriginal){
StringBuffer str = new StringBuffer(strOriginal);
System.out.println("Palindrome 的输入结果是:" + str);
String strReverse = str.reverse().toString();
System.out.println("Palindrome 的对比结果是:" + str);
/**
* StringBuffer 之间的比较
*/
// if(str.equals(str.reverse())){
// return true;
// }else{
// return false;
// }
/**
* String 之间的比较
*/
if (strReverse.equals(strOriginal)){
return true;
}else{
return false;
}
}
}
a reference to this object你可以简单的做一个试验:
System.out.println("之前: " + str);
str.reverse();
System.out.println("之后: " + str);
这样就能看到str的改变。
public class Test { public static void main(String[] args) {
StringBuffer a = new StringBuffer("abcd");
StringBuffer b = new StringBuffer("dcba");
b.reverse();
System.out.println(a);
System.out.println(b);
System.out.println(a.equals(b));
System.out.println(a.toString().equals(b.toString()));
}
}输出结果
abcd
abcd
false
true明明a和b的内容都是abcd但是a.equals(b)就是为false,而toString()之后再equals就是true。