20

在 Android API http://developer.android.com/guide/topics/data/data-storage.html#pref

它说:

Shared Preference 允许您保存和检索原始数据类型的持久键值对。您可以使用 SharedPreferences 保存任何原始数据:布尔值、浮点数、整数、长整数和字符串。

String 是原始数据类型还是对象?

4

6 回答 6

22

Java编程语言而言,

原始类型由语言预定义并由保留关键字命名。

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

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

因此,就像在Java书中一样,它不是关键字,也不是原语。SharedPreferences可能仍将其称为原语之一,但这不是书上Java所说的,可能是因为它是我们遇到的 int、float、char 等一组基本类型之一。

于 2013-01-23T06:16:34.760 回答
22

直接来自 JLS:

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

所以不,它不是原始的。

于 2013-01-23T06:21:32.583 回答
3

使用 Android SharedPreferences 时,您将使用 getString 和 putString(带有 SharedPreferences.Editor),在这种情况下,它们都是 Java 字符串对象。Java 文档解释说,从技术上讲,String 不是原语,但因为它通常在语法上被视为一种原语并且它很普遍,所以有时可以将其称为原语。Android 可能使用这个定义(参见http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

于 2013-01-23T06:13:58.243 回答
3

String 是一个对象,在 android 或 java 中它根本不是原始类型。您可以使用字符串存储在 SharedPreferences 中。

于 2013-01-23T06:14:29.257 回答
1

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

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

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

于 2017-10-19T15:54:42.213 回答
0

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

于 2013-01-23T06:13:39.290 回答