String a;
a="asdfasdf";
这是和c中的指针相似的东西,将一个字符串的引用指向了asdfasdf这个字符串!Abc a=new Abc();
a=10;
楼主这样的操作能不能说详细点,有点不明白!

解决方案 »

  1.   

    是不是C++里面的拷贝构造函数?如果是,实现cloneable接口,覆写clone()方法
      

  2.   

    c++里是可以重载操作符的
    java里不允许, String是特例(可以+)所以你想通过=来调用构造是不行的.
    java里=就是赋值, 而且进行类型一致性检查
      

  3.   

    java里面不能重载运算符
    你想实现的功能用这个=是行不通的
      

  4.   

    如果想重载=操作符,在java里是办不到的:)
      

  5.   

    楼上的都已经说得很明白了,
    如果你要把10保存到a对象的属性中去,
    用a.set***方法就可,
    如:abc a=new abc();--------abc类中有一个String name的属性
    a.setName="****";
      

  6.   

    我想Java开发者是想把String变成有更多功能的数据类型,如类型转换拉,计算字符串长度等,所以做成类。不然也开发个string象int,char等的基本数据类型不就得了。
      

  7.   

    to 楼上
    你只要用过C里面处理字符串的方式你就该知道为什么了
      

  8.   

    隐式转换java也有啊类型提升的可以不必显式转换
      

  9.   

    类型提升 != 隐式转换。
    java 中只有只在基本类型中存在隐式转换,比如,long i = 5;从int 转为long,这是不会有歧义的。
      

  10.   

    to 楼上朋友
    首先感谢你们的回答,又让我学到了东西最后看来是不可能的,就算可能也是不好的方法
    最好的方法还是:
    Abc a=new Abc();
    a.setint(10);//我原本只是想写省写代码,因为这个类很多地方要用到,没想到是操作符重载,实在是羞愧的汗都会滴下来...
      

  11.   

    楼主,你要实现的问题其实就是C++中的运算符重载(没有看过可以去看一下),Java中不支持这个功能,所以无法实现。
    String是Java所有类中的特例,string中用到的=包括+=就是运算符重载,其他类都不可以运算符重载。
    P.S 其实这个功能对理解代码很不好,它的作用是方便写代码的人,但是大大增加了阅读代码的难度!
      

  12.   

    java里面不能重载运算符
    你想实现的功能用这个=是行不通的
      

  13.   

    楼上的朋友们都已经所的很好了,做一些小小的补充首先,在JAVA中String class的=运算符使用到了 静态工厂的方法,当调用语句
    String s = "abc"时,编译器会先生成一个static实例,并将该实例的地址赋予他的引用变量,即s这里最好排弃C++中关于指针与引用的概念,因为JAVA中的引用与C++中的引用在实现上又是截然不同的两种概念,我们只是单单关注与s这样一个申明作为引用获得了一个"abc"字符串实例。使用静态工厂方法的好处是使得效率提高,
    String s = "abc" 与 String s = new String( "abc" )
    从功能的角度出发是完全一样的,但是从性能的角度则是截然不同的,
    因为如果之后我们再次申明一个变量
    String s1 = "abc"时,s1 与 s指向同一个实例引用,所以他们不过是同一个实例的不同引用罢了。但如果使用String s1 = new Sting( "abc" )
    则完全不同,s1 与 s在内容方面是一致的,但二者属于不同的对象实力,所以s1 == s is false前一种的好处不言自明,我们只是希望获得内容为"abc"的String实体,所以重复引用不仅提高时间效率,同时也提高了空间效率,所以建议如果初始化一个String对象,优先考虑
    String s = "abc"
    而非 String s = new String( "abc" )   // Don't do this