
程序代码:
public final class FuckString {
private final char[] data;
/**
* 构造一个字符串
*
* @param data 字符数组
*/
public FuckString(final char... data) {
this.data = null == data
? new char[0]
: data.clone();
}
/**
* 获取字符串长度
*
* @return 字符串长度
*/
public int getLength() {
return data.length;
}
// 判断两个字符数组是否相等
private boolean isCharArrayEquals(final char[] src,
final char[] dst) {
if (src == dst) {
return true;
}
if (null == src) {
return false;
}
if (src.length != dst.length) {
return false;
}
for (int i = 0; i < src.length; i++) {
if (src[i] != dst[i]) {
return false;
}
}
return true;
}
@Override
public boolean equals(Object obj) {
if (null == obj) {
return false;
}
if (obj instanceof FuckString) {
return isCharArrayEquals(data, ((FuckString) obj).data);
} else if (obj instanceof String) {
return isCharArrayEquals(data, ((String) obj).toCharArray());
} else {
return false;
}
}
/**
* 转换为字符数组
*
* @return 字符数组
*/
public char[] toCharArray() {
return data.clone();
}
@Override
public String toString() {
return new String(data);
}
/**
* 判断目标字符是否出现在当前字符串中
*
* @param targetChar 目标字符
* @return TRUE:出现;FALSE:不出现
*/
public boolean containChar(char targetChar) {
for (final char c : data) {
if (c == targetChar) {
return true;
}
}
return false;
}
// 随便写一些测试用例,覆盖上边的所有场景
public static void main(String... args) {
assertTrue(new FuckString(new char[]{'F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U'}).getLength() == 8);
assertTrue(new FuckString(null).getLength() == 0);
assertTrue(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new String("FUCK YOU")));
assertFalse(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new String("FUCK ME")));
assertTrue(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U')));
assertFalse(new FuckString('F', 'U', 'C', 'K', ' ', 'Y', 'O', 'U').equals(new FuckString('F', 'U', 'C', 'K', ' ', 'M', 'E')));
{
final char[] data = {'F', 'U', 'C', 'K'};
final FuckString fString = new FuckString(data);
data[1] = 'S';
assertTrue(fString.equals("FUCK"));
}
{
final FuckString fString = new FuckString('F', 'U', 'C', 'K');
final char[] data = fString.toCharArray();
data[1] = 'S';
assertTrue(fString.equals("FUCK"));
}
assertTrue(new FuckString('F', 'U', 'C', 'K').toString().equals("FUCK"));
assertTrue(new FuckString('F', 'U', 'C', 'K').containChar('U'));
assertFalse(new FuckString('F', 'U', 'C', 'K').containChar('X'));
}
// 用于测试用的简单断言
private static void assertTrue(boolean expect) {
if (!expect) {
throw new IllegalStateException("assert fail!");
}
}
private static void assertFalse(boolean expect) {
assertTrue(!expect);
}
}
嗯,这个忽悠你们老师绝对够用了~
[此贴子已经被作者于2017-12-22 19:22编辑过]