Java 为什么不能使用字符串初始化StringBuilder对象?
在Java中,这个语句显然是错误的。eclipse等IDE将告诉您: 无法从字符串转换为StringBuilder 但是,Java 为什么不能使用字符串初始化StringBuilder对象?,java,stringbuilder,Java,Stringbuilder,在Java中,这个语句显然是错误的。eclipse等IDE将告诉您: 无法从字符串转换为StringBuilder 但是,字符串对象可以由=运算符初始化 我想知道一些与内存分配相关的原因,因为它是一个对象,需要构造。出现错误是因为字符串是而不是StringBuilder 字符串是一种特殊类型,它被设计为介于基元和类1之间。您可以将字符串文字直接分配到字符串变量中,而无需调用构造函数来创建字符串实例 1: Java的设计者决定将基本类型保留在 面向对象的语言,而不是使一切都成为对象,所以 以提高语
字符串
对象可以由=
运算符初始化
我想知道一些与内存分配相关的原因,因为它是一个对象,需要构造。出现错误是因为字符串是而不是StringBuilder
字符串是一种特殊类型,它被设计为介于基元和类1之间。您可以将字符串文字直接分配到字符串变量中,而无需调用构造函数来创建字符串实例
1:
Java的设计者决定将基本类型保留在
面向对象的语言,而不是使一切都成为对象,所以
以提高语言的表现。原语被存储
在调用堆栈中,它需要更少的存储空间并且更便宜
操纵。另一方面,对象存储在程序中
堆,这需要复杂的内存管理和更多的存储空间
出于性能原因,Java的字符串被设计为介于
原语和一个类
更多阅读:
“xxx”
由语言规范*定义,是字符串对象。所以你可以写:
StringBuilder sb = "asd";
但是字符串不是字符串生成器
*引自JLS:“字符串文字的类型总是string
”是一个对象,而不是包装器。这是有效的
String s = "abc"; //ok we got it
Object o = "abc"; //a String is an Object
CharSequence cs = "abc"; //a String is also a CharSequence
因为您有一个字符串文字的引用被分配给变量引用。i、 e.类型相同
在Java中,不能隐式转换类型或更改带有赋值的对象
String sb = "asd";
之所以有效,是因为字符串是一个对象。字符串不仅是一个类,而且
中的任何内容都是一个JVM字符串,
字符串对象引用该字符串。所以
String str=“hello”
起作用了
但是StringBuilder和其他数千个对象不像
String
那样特殊,因此它们也不会被初始化。在java中,String是一种特殊类型的类u可以为类似String的类定义对象
Object o = "asd";
或
但是StringBuilde**r就像一个**普通类,当你必须为它创建一个对象时,你应该使用new关键字(构造对象)。HTH
StringBuilder sb=新StringBuilder(“asd”)代码>谢谢!这是因为String
在Java中是特殊的,因此=
操作符可以用来构造字符串对象吗?你能给我一个url链接或书籍参考来介绍更多关于Java中String
的内容吗?@chainro你很受欢迎:)我刚刚发布了一个链接,可能会对你有所帮助。-1 String也是一个对象,不同之处在于它是不可变的,并且支持重载的“=”运算符。不多不少。@lukasz1985 Java中没有运算符重载。如果你再读一遍,你会注意到我没有说字符串不是对象。说某些东西“被设计成介于原语和类之间”和“介于原语和类之间”是有区别的
String s = "xyz";
String s = new String("XYZ");