我正在阅读有关共享偏好 here的Android文档。他们提到了一件事,
您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。
据我所知,Java中有8种原始类型即。 byte, char, short, int, long, float, double, boolean
String是 java.lang 包中的Java中的类,而不是基本类型。
所以出现了问题,
Q1。为什么这个东西是在Android文档中用Primitive data:string?
编写的Q2。这里使用的这个原始单词是指除原始数据类型之外的其他内容吗?
感谢。
答案 0 :(得分:4)
您在Java中纠正字符串为not a primitive data type:
除了上面列出的八种原始数据类型之外,Java编程语言还通过
java.lang.String
类为字符串提供特殊支持。将字符串括在双引号内会自动创建新的
String
对象;例如,String s = "this is a string";
。
String
类在技术上不是原始数据类型,但考虑到语言给予它的特殊支持,您可能会倾向于将其视为这样。
然而,在 this 上下文中,可能是"原语"不是指Java原始类型,而是指从简单到复杂的规模。
您引用的页面在"存储快速视图"中有以下几点:
这似乎使规模从简单到复杂(原始,大型和结构化)。
或者Android可能只是遵循Java教程中提到的文本(见上文)并将字符串视为基本类型,尽管从技术上讲它并非如此。
你知道,我们声称Java的方式与面向对象的方式相同,尽管Python / Ruby / Smalltalk粉丝会认为原始类型的存在会使声明变得错误,直到你的耳朵下降到保护你的理智: - )
无论如何,我不确定这是否重要。 Android主要由 Android 文档指定,Java文档作为后备(正如您可以通过他们的国际化不同方法看到的那样)。它旨在利用Java技能,而不是提供完全相同的环境。
如果Android文档将字符串称为原始字符串,则认为它们是原始的,至少就可以用于共享首选项的内容而言。
答案 1 :(得分:1)
String Type对象称为String literals
(表示非常接近Primitive)。意味着您可以将String对象与Primitive数据类型一样使用,这意味着不需要new创建对象。您可以直接将任何值分配给字符串对象,而不必像new
那样Sting str = new String();
。
int i = 10;
String str = "abc"; // By the same way of primitive.
来自http://www.xyzws.com/Javafaq/what-is-string-literal-pool/3
与所有对象分配一样,字符串分配在两者中都证明是昂贵的 时间和记忆。 JVM在实例化时执行一些技巧 字符串文字以提高性能并减少内存开销。 要减少在JVM中创建的String对象的数量, String类保留一个字符串池。每次你的代码创建一个 在字符串文字中,JVM首先检查字符串文字池。如果 字符串已经存在于池中,是对池化实例的引用 回报。如果池中不存在该字符串,则为新的String对象 实例化,然后放在池中。 Java可以做到这一点 优化,因为字符串是不可变的,可以不共享 担心数据损坏。
答案 2 :(得分:1)
String
类在技术上不是原始数据类型,但考虑到语言给予它的特殊支持,您可能会倾向于将其视为这样。
了解更多内容,您可以参考此link
答案 3 :(得分:-2)
为什么这个东西是在Android文档中用Primitive data:string?
编写的
实际上,原始类型可以是包装类,可用于保存Shared Preferences
中的数据。 String
实际上包裹了char[]
这里使用的这个原始单词是否与原始数据类型不同?
不。您可以使用可以是基本类型的包装类