因此,String不是原始类型,而是Obj x = new Obj ();
通常必须以以下形式创建类和类的对象。但是,可以通过说来创建字符串String x = "...";
,这是首选方法,而不是String x = new String ("...");
。
所以我想知道为什么允许使用字符串,并且如果构造函数仅需要单个参数,是否可以以类似的方式创建其他类的对象。
例如,如果一个类具有仅调用一个整数的构造函数,则该Obj x = 2;
句法在语法上是正确的,因为它仍具有与编写String相同的方式包含对象名称和参数。
所以String不是原始类型,而是必须以Obj x = new Obj();的形式创建一个类和类的对象;通常。但是,可以通过说String x =“ ...”来创建字符串。这是首选方法,而不是String x = new String(“ ...”);
没错,使用通常是一个错误new String(String)
。由于字符串是创建值的一种常见类型,因此Java与大多数语言一样,具有字符串文字语法构造。求值时,字符串文字表达式返回代表文本的字符串实例。
调用String y = new String("...")
大致等效于String x = "..."; String y = new String(x);
:将字符串文字求值为字符串,然后将其提供给String构造函数,该构造函数返回新的字符串实例(尽管使用相同的后备字符数组以避免复制数据)-如此浪费!这样new String(String)
,除了希望做一些特殊的操作之外,构造函数应该“永不”被调用。字符串实习。
所以我想知道为什么允许使用字符串,并且如果构造函数仅需要单个参数,是否可以以类似的方式创建其他类的对象。
Java语法和大多数其他语言的一个特殊方面是创建具有最小麻烦的字符串对象。必须使用其他值创建字符串会很烦人new String(new char[] {'n','o',' ','t','h','a','n','k','s'})
。
Java并没有对自定义分析支持,因此它是不可能在Java本身扩展这种行为自定义类型。Java语言规范中涵盖了字符串文字的语法(以及执行期间的行为)。
非常创作从字符串常量字符串对象主要是“JVM魔法/实施细则”(创建从文本字符串都不能叫new String(String)
构造与以往一样,原始的字符串实例是如何产生的?)。此外,对于每个字符串内部规则,不能保证从评估字符串文字返回的字符串对象实例是唯一的/“新的”。
例如,如果一个类的构造函数仅调用一个整数,则将说Obj x = 2;语法上正确,因为它仍然包含对象名称和参数,其编写方式与编写String相同。
这不是Java的工作方式。可以正常工作的语言不是Java 8。
在这个例子中整数文字是2:当作为表达评价它产生的值.. (int)2
。与使用字符串文字的情况不同,Java然后执行Integer自动装箱操作:2是一个an int
,与相比String
,不是,Object
并且不能直接分配。这使得原件类似于Object x = new Integer(2);
将int值隐式包装为Integer值的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句