日期:2014-05-20  浏览次数:20628 次

java String 类实现问题
java中String类得变量在用print()输出String对象储存的字符串,他是如何实现这一输出的?例如 String     S1 =   “Hello”;System.out.print(S1),输出  :Hello,它是如何实现得?,自定义String类这一功能如何实现?如何实现 subString(),在输出时不是自己定义对象得引用?
Java?String

------解决方案--------------------
String重写了Object的toString方法,System.out.print(S1)时,调用toString方法,打印出String的值。否则打印的是一串地址。
------解决方案--------------------
下面写了个实例,不知道能不能满足你的要求。你应该可以看懂


public class TestString {

/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-14
 * 当前类没有重写Object的 public String toString() 
 * 这样,在打印该实例的引用的时候,会调用 Object 的 toString() 方法。
 * 
 *  下面的这个 toString() 是JDK中Object类的方法。可以看见它的组成是由“类名 + hashCode”组成的。
 *  public String toString() {
 *  return getClass().getName() + "@" + Integer.toHexString(hashCode());
 *  }
 * </pre>
 */
class WithoutToString {
protected String name;
protected int age;

public WithoutToString(String name, int age) {
super();
this.name = name;
this.age = age;
}

}

/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-14
 * 当前类重写了 Object的 public String toString()
 * 在打印该实例的引用的时候,因为这里重写了 Object的 public String toString(),所以就调用当前类的 public String toString()方法。
 * </pre>
 */
class WithToString extends WithoutToString {
public WithToString(String name, int age) {
super(name, age);
}

@Override
public String toString() {
return "WithToString [name=" + name + ", age=" + age + "]";
}
}

/**
 * @param args
 */
public static void main(String[] args) {
TestString test = new TestString();
String name = "kanpiaoxue";
int age = 200;
WithoutToString a = test.new WithoutToString(name, age);
System.out.println(a);

WithToString b = test.new WithToString(name, age);
System.out.println(b);
// -------- output ------------
//com.wanmei.test.TestString$WithoutToString@2a9931f5
//WithToString [name=kanpiaoxue, age=200]
}

}

------解决方案--------------------
在你自己定义的类中重写toString()方法 
这样你打印出来的就是你重写的toString()方法的返回值了
------解决方案--------------------
本楼里面好人多,热心满满,楼主要好好体会,不然面壁去。