黑马程序员技术交流社区

标题: 这个问题不是很靠谱,关于String类型与其他内容进行“+”... [打印本页]

作者: 倪杭乘    时间: 2012-5-2 17:55
标题: 这个问题不是很靠谱,关于String类型与其他内容进行“+”...
String类型好像能跟所都的变量进行“+”操作
让我疑惑的是全部的类型都变成了字符串形式,到底虚拟机进行了什么操作
  1. public class IntegerDemo {
  2.         public static void main(String[] args) {
  3.                 Integer i = new Integer(32);
  4.                 String s = "fdfw";
  5.                 Person p = new Person(18,"wangwu");
  6.                 s = s+p+i;
  7.                 System.out.println(s);
  8.         }

  9. }
  10. class Person{
  11.         int age;
  12.         String name;
  13.         public Person(int age, String name) {
  14.                 super();
  15.                 this.age = age;
  16.                 this.name = name;
  17.         }
  18.         @Override
  19.         public String toString() {                       
  20.                 return "abc";
  21.         }
复制代码
后来我复写了Person中的toString类,好像问题已经解决了
对所有对象都进行了toString操作
对于基本数据类型应该是先进行了装箱,再调用了对象的toString类型
发上来大家看看吧 指点一下是不是我这样想对不对

作者: suiabing    时间: 2012-5-2 18:03
对                                        {:soso_e147:}
作者: 一生一世    时间: 2012-5-2 18:08
你理解的是对的,String s = "fdfw";就是在内存中的常量池中创建了一个String类型的字符串,然后你用+号把他们都在到一起即s = s+p+i;,其实又在常量池中新创建了一个String类型的对象它的值,就是把所有的toString()方法返回的字符串连接在一起,其实你能这么写是因为Integer对象重写了Object对象的toString方法,所以才能返回指定值得字符串形式。所以你这么理解是没有错的




作者: 倪杭乘    时间: 2012-5-2 18:09
{:soso__6235880048239246314_3:}  困了睡觉去 在线9小时的高级黑马




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2