标签:相等 rar 相同 输出 字符 equal while 第四章 总结
1.请运行以下示例代码StringPool.Java,查看其输出结果。如何释这种输出结果?从中你能总结出什么?

运行截图:   
在java中,内容相同的字符串常量只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。
两个变量值一样时,字符串==符号比较地址,所以前两个是true
当直接使用new关键字创建字符串对象时,虽然值一致,但仍然是两个独立的对象。两个变量不同,所以是false
2.为什么会有这样的输出结果? 从中你又能总结什么?


给字串变量赋值意味着:两个变量()现在引用同一个字符串对象“a”!,String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象“a”无关,所以,返回false。代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。
3.
请查看String.equals()方法,学习其实现方法。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {                      //判断anObject是不是String类的一个实例
String anotherString = (String)anObject;        //把anObject赋值给anotherString
int n = count;                                             //count是String的成员代表原始字符串长度
if (n == anotherString.count) { 
char v1[] = value;                                      //把原来的字符串和要比较的字符串以字符形式存入数组
char v2[] = anotherString.value; 
int i = offset;                                          //分别取数组下标
int j = anotherString.offset; 
while (n-- != 0) {                                   //遍历数组,比较 数组元素是否相同
if (v1[i++] != v2[j++])                          //在遍历的过程中如果有不同的就返回false
return false;
} 
return true;                              //相等返回true
}
}
return false;                            //不是String实例返回false
}
4.整理String类
length() 求长度
字符串A.length(); //返回int
charAt() 求指定位置的字符
char a=字符串A.charAt(第几个);//返回一个字符
replace()
替换 原字符串中的某个字符并赋值给新字符串
此方法定义的语法如下:
public String replace(char oldChar, char newChar)
转换为大写
被转换的字符串.toUpperCase()
toLowerCase()
转换为小写
被转换的字符串.toLowerCase()
trim() 去掉开头结尾的空格
toCharArray() 把字符串转换为字符数组
标签:相等 rar 相同 输出 字符 equal while 第四章 总结
原文地址:http://www.cnblogs.com/199788zxt/p/7744722.html