string是类不是基本对象,是不是定义一个string类型的变量可以用
string a=“asdf”;和
string a=new string(“asdf”);
是不是只有string才是两种都行的呢?
定义一个string类型的变量有两种方式:
string name= "tom ";
string name =new string( "tom ")
使用第一种方式的时候,就使用了串池,
使用第二中方式的时候,就是一种普通的声明对象的方式
如果你使用了第一种方式,那么当你在声明一个内容也是 "tom "的string时,它将使用串池里原来的那个内存,而不会重新分配内存,也就是说,string saname= "tom ",将会指向同一块内存
另外关于string类型是不可改变的问题:
string类型是不可改变的,也就是说,当你想改变一个string对象的时候,比如name= "madding "
那么虚拟机不会改变原来的对象,而是生成一个新的string对象,然后让name去指向它,如果原来的那个 "tom "没有任何对象去引用它,虚拟机的垃圾回收机制将接收它。
string name= "tom ";
string name =new string( "tom ")
使用第一种方式的时候,就使用了串池,
使用第二中方式的时候,就是一种普通的声明对象的方式
如果你使用了第一种方式,那么当你在声明一个内容也是 "tom "的string时,它将使用串池里原来的那个内存,而不会重新分配内存,也就是说,string saname= "tom ",将会指向同一块内存
另外关于string类型是不可改变的问题:
string类型是不可改变的,也就是说,当你想改变一个string对象的时候,比如name= "madding "
那么虚拟机不会改变原来的对象,而是生成一个新的string对象,然后让name去指向它,如果原来的那个 "tom "没有任何对象去引用它,虚拟机的垃圾回收机制将接收它。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-03-30
String 不是java的基本数据类型,要弄清你的问题,你需要去学习一个叫做字符串池的概念,包括我们会经常遇到什么时候使用equals(),什么时候使用“==”,也是这个知识点,只要你搞懂了这个,这些问题都迎刃而解了,有什么问题你可以追问我,没问题,麻烦采纳一下答案,谢谢,希望可以帮助到你!
第2个回答 2014-03-30
按我理解,
“asdf”是字符串常量,是一个对象常量,赋值给 a没问题。
另外,String a = new String("asdf")也是常规的调用构造函数的方法。
ps:String 是大写
“asdf”是字符串常量,是一个对象常量,赋值给 a没问题。
另外,String a = new String("asdf")也是常规的调用构造函数的方法。
ps:String 是大写
第3个回答 2014-03-30
包装类都可以