java中语法没有这样的,你可以看看Java API,
或者写成这样:m_TextView.setText(String.valueOf("输入内容:") + s);建议你找本Java方面的书好好了解下

解决方案 »

  1.   

    上面的代码为什么不能为下面这个样子:
    m_TextView.setText(String("输入内容:") + s);
    ANS:字符串不需要强转。但这个样子又可以:
    m_TextView.setText(new String("输入内容:") + s);
    ANS:new String会放回一个String的对象,setText函数的参数就是CharSequence类型,它是一个interface,String类implements这个接口。String类不是有如下的构造函数吗?
    String(char[] data)
    ANS:有,但是如果你以为你这么写可以,那就成C++了,再说了,C++的string也不需要强转的。你什么时候见过CString("hello"),MFC里这种写法?
    记得java里面的对象都是new的,或者是别人给的(引用类型,比如findViewById),那么String这个对象为什么可以不new,还有其它和String一样神奇的类吗(int之类不用说,就我所知,Integer类似的类也是不需要new的)?
    ANS:java的String和C++里的CString很像,只不过java里没指针而已,其实也是地址,只不过没有指针那样的写法。Integer类还有Float,Boolean等,是JAVA自己做的装箱,封装了一些方法而已,具体的也要看JDK。
      

  2.   

    上面的代码为什么不能为下面这个样子:
    m_TextView.setText(String("输入内容:") + s);这个要结合m_TextView.setText和String吧,
    m_TextView.setText带一个参数的只有连个重载函数,一个是int型的字符串id,一个是CharSequence类型
    final void  setText(int resid)  
    final void  setText(CharSequence text) 
    Sets the string value of the TextView. String("输入内容:") + s
    先生成一个String对象,在执行setText,或许可以
    String str = String("输入内容:") + s;String对象本身是不可变的,执行+操作会生成一个新的String对象。
    关于String与new String对象的区别楼主可以参考一下==与equals()的区别
    http://blog.csdn.net/ameyume/archive/2010/08/16/5815756.aspx其他就不明白了,期待高人
      

  3.   

    楼主明显的是语法不熟 , 
    m_TextView.setText(String("输入内容:") + s) ;String("输入内容:")  这句的意思是括号里的内容强制转换成String类型的, 但""中的内容就是铁打的String类型, 所以跟本不用强转,  再说了, 你用一个 字符串 + 任何对象或变量, 那么这个  (字符串 + 任何对象或变量) 这整个就一定是String类型, 所以 与String(char[] data) 一点关系都没有,
      

  4.   

    如果已经是String,强转怎么会有问题!
    m_TextView.setText((String) "输入内容:" + s);才是强转,这是没问题的。String("输入内容:");并不是强转,而是生成一个匿名对象。疑问是,为什么
    new String("输入内容:")行而String("输入内容:")不行,就我的理解,他们除了分配位置不同之外,语法上并没有区别。在c++的世界里,CString("hello")是非常合法的写法。dinjay可以试试,比如
    AfxMessageBox(CString(_T("hello")));
      

  5.   

    我不知道java里面有没有匿名对象的概念,我觉得是有,比如:
    new String("输入内容:");
    你们说它的对象名是什么?问题的疑点是,new String("输入内容:");和String("输入内容:");区别在哪里(分配位置上的区别就不说了,我说的是语法上的)?
      

  6.   

    我不知道java里面有没有匿名对象的概念,我觉得是有,比如:
    new String("输入内容:");
    你们说它的对象名是什么?返回的是String的对象。问题的疑点是,new String("输入内容:");和String("输入内容:");区别在哪里(分配位置上的区别就不说了,我说的是语法上的)?
    m_TextView.setText(String("输入内容:") + s);这样的语法没问题,可以用。至于你说的区别,就是在堆和栈的问题。一个是栈常量,一个是堆上数据。在c++的世界里,CString("hello")是非常合法的写法。dinjay可以试试,比如
    AfxMessageBox(CString(_T("hello")));
    你会这么写么?100个人中估计没有人这么写。
      

  7.   

    回楼上,我举更现实点的例子你就明白了。void func(const char* pText)
    {
    ...
    AfxMessageBox(CString("1234:") + pText);
    }上面的实例中,你觉得要怎样写呢?
    "1234:" + pText
    这种写法大家都知道是不行的,这在c++里面不具备语义。上面我写的是最为优美的写法,当然还有其它的,比如:
    CString str = "1234:";
    str += pText;
    等等。说到匿名对象,我觉得大家的理解还是有问题,
    new String("输入内容:");
    返回的是一个匿名对象,而并不是返回String,String是类名,不是对象名,比如:
    String String = new String("输入内容:");
    这才是返回了String,可异这显然通不过编译。匿名对象应用很广泛,在java里面也是,比如
    m_EditText.addTextChangedListener(new TextWatcher() {
    ...
    });这里就是一个典型的匿名对象,它的类型的TextWatcher,但没有名字,匿名对象有一个典型特点就是,不能多次的调用,比如上面new的那个TextWatcher,在本Activity里面,是永远不可能再调用了(只能被回调,那是因为回调者保存了匿名对象,所以在调用者那边,这个匿名对象不再是匿名对象了),因为没有名字,大多数编程语言中,名字意味着地址,而类名只是给编译器看的罢了。
      

  8.   

    m_TextView.setText(String("输入内容:") + s);
    这就写就是不行,我在顶楼已经说了,正是因为这个不行,我才来发贴的。
    包括下面的也不行:
    String str = String("输入内容:");楼上的可以试试。
    注:我是在eclipse3.6.1里面开发android应用而遇到这个问题的,我想只要都是java,不同的环境应该不影响吧?