import java.util.Date;
public class StringDemo {
public static void main(String[] args) {
String str1 = new String("String");
String str2 = new String("String");
String str3 = "String";
String str4 = " String ";
char[] c = { 'S', 't', 'r', 'i', 'n', 'g' };
String str5 = new String(c); // 通过char数组构造String对象
String str6 = new String(c, 3, 3);
String str7 = new String(str5.getBytes(), 2, 3);
// '=='比较的是两个对象的引用是否相同
if (str1 == str2) {
System.out.println("str1==str2 is true");
} else {
System.out.println("str1==str2 is false");
}
// equals()方法比较的是两个对象的内容是否相同,相似方法有 equalsIgnoreCase()
if (str1.equals(str2)) {
System.out.println("str1.equals(str2) is true");
} else {
System.out.println("str1.equals(str2) is false");
}
// 运用三目运算符以及trim()方法
System.out.println((str3 == str4) ? "str3==str4 is true"
: "str3==str4 is fasle");
System.out.println((str3 == str4.trim()) ? "str3==str4.trim() is true"
: "str3==str4.trim() is fasle");
System.out.println("str5 is " + str5);
System.out.println("str6 is " + str6);
System.out.println("str7 is " + str7);
String str8 = new String(
"Strings are constant; their values cannot be changed after they are created.");
// charAt(int index)方法
System.out
.println("str8字符串的最后一个字符是: " + str8.charAt(str8.length() - 1));
// codePointAt(int index) 返回值是指定字符的ASCII码值
System.out.println("str8字符串的最后一个字符是: "
+ str8.codePointAt(str8.length() - 1));
// compareTo(String anotherString) 相似方法 compareToIgnoreCase(String str)
if (str1.compareTo(str8) > 0) {
System.out.println("str1+大于+str8");
} else if (str1.compareTo(str8) < 0) {
System.out.println("str1+小于+str8");
} else {
System.out.println("str1+等于+str8");
}
// concat(String str)连接字符串
String str9 = "Hello ";
System.out.println("连接字符串str9和str1: " + str9.concat(str1));
// contains(CharSequence s)
System.out
.println((str8.contains(str1)) ? "str8包含str1" : "str8不包含str1");
// 静态方法copyValueOf(char[] data) equivalent to valueOf(char[]).
System.out.println(String.copyValueOf(c) + " " + String.valueOf(c));
// endsWith(String suffix)
System.out.println((str8.endsWith(".")) ? "str8是以'.'结尾的"
: "str8不是以'.'结尾的");
Date date = new Date();
System.out.printf("年-月-日格式:%tF%n", date);
}
}
</pre><pre name="code" class="java">
容易混淆的两个概念 ‘==’和equals()方法
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。
String类重写了Object的equals方法如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}