java String 类实现问题

YDZ785089334 2013-11-13 09:33:56
java中String类得变量在用print()输出String对象储存的字符串,他是如何实现这一输出的?例如 String S1 = “Hello”;System.out.print(S1),输出 :Hello,它是如何实现得?,自定义String类这一功能如何实现?如何实现 subString(),在输出时不是自己定义对象得引用?
...全文
287 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
YDZ785089334 2013-11-14
  • 打赏
  • 举报
回复
谢谢各位啦,基本明白了
飞翔的猪头三 2013-11-14
  • 打赏
  • 举报
回复
本楼里面好人多,热心满满,楼主要好好体会,不然面壁去。
sliwey 2013-11-14
  • 打赏
  • 举报
回复
在你自己定义的类中重写toString()方法 这样你打印出来的就是你重写的toString()方法的返回值了
  • 打赏
  • 举报
回复
下面写了个实例,不知道能不能满足你的要求。你应该可以看懂


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]
	}

}
  • 打赏
  • 举报
回复
引用 10 楼 YDZ785089334 的回复:
引用 5 楼 huxiweng 的回复:
楼主你看你问题描述不清楚,3个人回答到3个地方去了。。。
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
你把那个 toString 方法重新写一遍
YDZ785089334 2013-11-14
  • 打赏
  • 举报
回复
引用 5 楼 huxiweng 的回复:
楼主你看你问题描述不清楚,3个人回答到3个地方去了。。。
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
huangan0301 2013-11-14
  • 打赏
  • 举报
回复
String重写了Object的toString方法,System.out.print(S1)时,调用toString方法,打印出String的值。否则打印的是一串地址。
YDZ785089334 2013-11-14
  • 打赏
  • 举报
回复
引用 1 楼 rumlee 的回复:
根本没听懂啥意思。
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
YDZ785089334 2013-11-14
  • 打赏
  • 举报
回复
引用 2 楼 waynexuan 的回复:
是System.out实现了输出,而不是String,想知道怎样实现需要看源码,jdk目录下的src.zip String的内部是一个字符数组,所以可以用索引值实现substring
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
YDZ785089334 2013-11-14
  • 打赏
  • 举报
回复
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
引用 楼主 YDZ785089334 的回复:
java中String类得变量在用print()输出String对象储存的字符串,他是如何实现这一输出的?例如 String S1 = “Hello”;System.out.print(S1),输出 :Hello,它是如何实现得?,自定义String类这一功能如何实现?如何实现 subString(),在输出时不是自己定义对象得引用?
就是我自己定义String类时 ,对自己定义得类对象进行打印输出,但输出的是对象得引用,那些对类得操作函数返回对象在打印时也是引用
teemai 2013-11-13
  • 打赏
  • 举报
回复
楼主你看你问题描述不清楚,3个人回答到3个地方去了。。。
WayneXuan 2013-11-13
  • 打赏
  • 举报
回复
引用 楼主 YDZ785089334 的回复:
在输出时不是自己定义对象得引用?
这句话什么意思实在是不懂
teemai 2013-11-13
  • 打赏
  • 举报
回复
out 是OutputStream 他的print方法打印对象的时候.print(Object o). 首先是调用String.valueOf(o)转化成bytes再打印。具体看API public void print(Object obj) Prints an object. The string produced by the String.valueOf(Object) method is translated into bytes according to the platform's default character encoding, and these bytes are written in exactly the manner of the write(int) method. Parameters: obj - The Object to be printed See Also: Object.toString()
WayneXuan 2013-11-13
  • 打赏
  • 举报
回复
是System.out实现了输出,而不是String,想知道怎样实现需要看源码,jdk目录下的src.zip String的内部是一个字符数组,所以可以用索引值实现substring
rumlee 2013-11-13
  • 打赏
  • 举报
回复
根本没听懂啥意思。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧