读书人

java String 类实现有关问题

发布时间: 2013-11-15 22:28:15 作者: rapoo

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()方法的返回值了
[解决办法]
本楼里面好人多,热心满满,楼主要好好体会,不然面壁去。

读书人网 >J2SE开发

热点推荐