在Android或Java中,String是原始类型还是对象?

22

8
字符串是Java中受到特殊处理的对象。它不是原始类型,但在语言和编程中非常重要,因此在某些方面被视为原始类型的一种。 - Perception
基本数据类型包括:intfloatdoublebool - Dmitry Zagorulkin
@Perception:谢谢回复,但根据Android API的规定,它只能将原始数据存储在共享首选项中。 - Krishna Prasad
1
@Krishna - 如下面的答案所述,Android SharedPreferences API 允许您存储原始数据、字符串甚至是字符串集合。 - Perception
他们只是宽泛地使用“原始”的术语,因为字符串是由原始数据类型char组成的对象。 - Kacy
字符串不是原始数据类型。 - Rishabh Agarwal
6个回答

25

Java编程语言而言,原始类型是由语言预定义并由保留关键字命名的。

除了上述八种原始数据类型之外,Java编程语言还通过java.lang.String类提供了对字符字符串的特殊支持。

——摘自Java™教程 - 原始数据类型

因此,在Java书籍中,它既不是关键字也不是原始类型。虽然SharedPreferences可能仍将其称为原始类型之一,但这并不是来自Java本身的书籍,这可能是因为它是我们遇到的基本类型集合(例如int、float、char等)之一。


24

来自JLS官方文档:

A string literal is a reference to an instance of class String

所以它 不是 原始的。


2
直接从Java圣经中 - Gaurav

4

当使用Android SharedPreferences时,您将使用getString和putString(使用SharedPreferences.Editor)的方式,在这种情况下两者都是Java字符串对象。 Java文档解释说,字符串不是技术上的原始数据类型,但由于它在语法上经常被视为一个原始数据类型并且它的普遍性,有时可能被称为原始数据类型。 Android可能使用此定义(请参见http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html


谢谢你的回答。根据原始数据类型,“除了上面列出的八种原始数据类型之外,Java编程语言还通过java.lang.String类提供了对字符字符串的特殊支持。”是这样吗? - Krishna Prasad
正如所说,目前Java中只有八种原始类型。 - Swapnil

4

字符串是一个对象,在安卓或者Java中,它并不是原始类型。你可以使用字符串将数据存储在SharedPreferences中。


1

字符串是String类(java.lang.String)的对象。在其他编程语言中,字符串并不是通过语言提供的,用户必须使用字符数组来表示字符串。这就是为什么字符串不是原始数据类型,而是一系列属性(int长度,char[position]等)。

由于字符串的重要性,Java的创建者允许一个字符串简单地被创建为String message = Ḧello World; 没有任何问题,很多人都用这种方式实例化String类的对象... 但是你也可以这样说... char[] arr = {'a','b','c'}; String myString = new String(arr); 这与String myString = ¨abc¨; 相同。这是因为如前所述,字符串只是一系列字符。在String类中,有一个构造函数(跟随new关键字并匹配类名的东西),它接受字符数组作为参数。

简短回答:String是一个类,而不是原始数据类型。当创建一个字符串对象时,你正在实例化String类。


0

String是一个对象,尽管它可以在SharedPreferences中使用。String也被存储为键值对。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接