A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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类型
发上来大家看看吧 指点一下是不是我这样想对不对

3 个回复

正序浏览
{:soso__6235880048239246314_3:}  困了睡觉去 在线9小时的高级黑马
回复 使用道具 举报
你理解的是对的,String s = "fdfw";就是在内存中的常量池中创建了一个String类型的字符串,然后你用+号把他们都在到一起即s = s+p+i;,其实又在常量池中新创建了一个String类型的对象它的值,就是把所有的toString()方法返回的字符串连接在一起,其实你能这么写是因为Integer对象重写了Object对象的toString方法,所以才能返回指定值得字符串形式。所以你这么理解是没有错的



回复 使用道具 举报
对                                        {:soso_e147:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马