When we use [tableView registerNib:[UINib nibWithNibName:@"itemCell" bundle:nil] forCellReuseIdentifier:@"itemCell"];
Now is String X="apple";
variable or object?
As we can use X
hence it should be object only but to define an object we should use:
X.Method
But we did like String X= new String ();
So how come String X = "apple";
is an object or even if it is variable then how can we use variable.method?
答案 0 :(得分:2)
A Java String is simply a class - BUT as the JavaDoc documentation of String states: "..All string literals in Java programs, such as "abc", are implemented as instances of this class..."
So the language literal "abc" is another way of saying String.create("abc") if there would be such a method. The compiler itself manages these literals. So for example ("abc"=="abc") is true, but (new String("abc")==new String("abc")) is false. That's why, in Java, you always need to use equality operator to test x.equals(y)
See also What is the difference between "text" and new String("text")?
答案 1 :(得分:1)
虽然C#和Java在处理String
的方式上有很大不同,但您在两种语言中的答案非常相似。
现在是X变量还是对象?
X
在技术上是一个变量将引用存储到String
对象。它引用的字符串对象是字符串"apple"
。
那么为什么X是一个对象,或者即使它是可变的,那么我们如何使用variable.method呢?
某些东西是否是某个对象并不取决于您是如何创建它的。 是,你可以使用new String(...)
创建一个字符串,它也是一个对象。使用字符串 literal 和调用字符串构造函数之间的区别在于,使用字符串文字将从字符串池中获取字符串,而不是创建全新的字符串。
您是否能够使用variable.method
并不取决于它是否是某个对象。 "对象"的概念确实是由语言规范指定的。
在C#中,引用类型的实例是对象,因此string
(引用类型)实例也是对象。在Java中,类实例和数组是对象。 String
是一个类,因此它的实例(如"apple"
)就是对象。
如果你想看到"对象"的定义在每种语言中,这里有一些你可以找到的地方。
答案 2 :(得分:0)
X
是一个变量。在Java和C#中,String
类型是引用类型,因此X
是一个变量,它是一个引用。在该引用的末尾是一个类型为String
的对象,其内容为"apple"
。当我们执行X.Method
时,这意味着“取消引用变量X
以获取对象,并在对象上调用Method
方法”。
这是所有参考类型的工作方式。
但要定义一个我们应该使用的对象:String X = new String();
不,这是实例化对象的熟悉的方式,但是有一些额外的编译器语法可以在使用String
时更加方便,并可能添加“实习”以便您不要分配超过必要的String
个对象。在C#中。例如,string x = "apple";
将变为(在MSIL中):
ldstr "apple"
stloc.0
其中ldstr
是一个特殊的IL指令,用于通过自动实习加载常量。如果我们基于字节缓冲区而不是编译时常量创建String
,则String
有不同的构造函数。
答案 3 :(得分:0)
您的问题有不同的问题和缺点:
int
,float
... string
是内置类型,它是预定义类型System.String
的别名。但string
不是简单类型,例如int
,float
。有关详细信息,请参阅here String X = "apple";
在C#中以特殊方式编译:有
一个IL指令,允许在C#中为文本分配一个文字
对象引用(这里是X
)。这条IL指令是Ldstr
将新对象引用推送到存储在其中的字符串文字
元数据。欲了解更多信息:
https://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.ldstr.aspx 答案 4 :(得分:-1)
首先,它取决于平台到平台,但你可以说它是本机字符串或表示字符串的类的包装。