String是Android或Java中的原语还是Object?

时间:2013-01-23 06:08:57

标签: java android string sharedpreferences primitive

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

它说:

  

共享首选项允许您保存和检索持久键值   成对的原始数据类型。您可以使用SharedPreferences进行保存   任何原始数据:布尔值,浮点数,整数,长整数和字符串。

String是原始数据类型还是Object?

6 个答案:

答案 0 :(得分:20)

直接来自JLS:

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

所以不是原语。

答案 1 :(得分:19)

考虑Java编程语言,

  

基本类型由语言预定义,并由保留关键字命名。

     

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

- 来自The Java™ Tutorials - Primitive Data Types

因此,在Java本书中,它不是关键字,也不是原语。 SharedPreferences可能仍然称它为原语之一,但这不是Java本书,因为它是一组基本类型之一,如int,float,char等我们来跨越。

答案 2 :(得分:3)

使用Android SharedPreferences时,您将使用getString和putString(使用SharedPreferences.Editor),在这种情况下,两者都是Java String Objects。 Java文档解释说String在技术上不是原始的,但是因为它通常被视为语法上的一个而且它很普遍,它有时可能被称为原语。 Android可能会使用此定义(请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

答案 3 :(得分:3)

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

答案 4 :(得分:1)

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

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

简答:String是而不是原始数据类型,在创建String对象时,您要实例化String类

答案 5 :(得分:0)

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