判断String对象是否相等(几乎所有情况)
Posted 364.99°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断String对象是否相等(几乎所有情况)相关的知识,希望对你有一定的参考价值。
1.有哪些情况?
额,暂时只想到这些:
String a = "test";
String b = a;
String c = new String(a);
String d = new String("test");
String e = "te" + "st";
String f = "te".concat("st");
String g = new String("te").concat(new String("st"));
String h = String.valueOf("test");
String i = String.valueOf(c);
char[] strs = new char[]'t','e','s','t';
String j = String.copyValueOf(strs);
String k = a.substring(0,4);
StringBuilder sb = new StringBuilder("test");
String l = sb.toString();
来判断:
boolean B = a==b;
boolean C = a==c;
boolean D = a==d;
boolean E = a==e;
boolean F = a==f;
boolean G = a==g;
boolean H = a==h;
boolean I = a==i;
boolean J = a==j;
boolean K = a==k;
boolean L = a==l;
System.out.println("B:" + B + "\\n" + "C:" + C + "\\n" + "D:" + D + "\\n" + "E:" +
E + "\\n" + "F:" + F + "\\n" + "G:" + G + "\\n" + "H:" + H + "\\n" + "I:" +
I + "\\n" + "J:" + J + "\\n" + "K:" + K + "\\n" + "L:" + L);
查看输出:
2.小结一下
小结一下: 不同的情况有哪些?
- 明显看到有
new
新建对象
因为这个已经创建了新的对象,引用指向了新的对象地址 - 不能直接看到
new
,比如copyValueOf(strs)
其实这个方法的底层还是new
了一个新的String对象
还有concat
,底层,还是返回了一个new
出来的String对象
public static String copyValueOf(char data[], int offset, int count)
return new String(data, offset, count);
public String concat(String str)
if (str.isEmpty())
return this;
int len = value.length;
int otherLen = str.length();
char buf[] = Arrays.copyOf(value, len + otherLen);
str.getChars(buf, len);
return new String(buf, true);
对了,这里的subString
需要注意一下
public String substring(int beginIndex, int endIndex)
if (beginIndex < 0)
throw new StringIndexOutOfBoundsException(beginIndex);
if (endIndex > value.length)
throw new StringIndexOutOfBoundsException(endIndex);
int subLen = endIndex - beginIndex;
if (subLen < 0)
throw new StringIndexOutOfBoundsException(subLen);
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
看到最后一句了吗,当切分的两个边界不等于原字符串的左右边界值时,会new
一个String对象!
以上是关于判断String对象是否相等(几乎所有情况)的主要内容,如果未能解决你的问题,请参考以下文章