Java 我应该使用字符数组而不是字符串作为玩家的用户名吗?

Java 我应该使用字符数组而不是字符串作为玩家的用户名吗?,java,android,string,android-studio,char,Java,Android,String,Android Studio,Char,我正在制作一个应用程序,我有一个用户类,包含最终用户名、电子邮件和密码。我了解到对象创建会减慢应用程序的速度,所以将这些字段转换为字符数组是否是一种好的做法?我的逻辑是,如果我有,比如说,一百万用户,那么这些字符串可能会减慢应用程序的速度 不。您将落入过早优化的陷阱 使用常规String对象保存名称等 如果你要自己管理文本,你必须知道一个类型已经过时了,只能容纳Unicode定义的137000个字符中的不到一半。因此,在表示字符范围之外的字符时,您必须学习如何使用四位字节而不是双八位字节来处理字

我正在制作一个应用程序,我有一个用户类,包含最终用户名、电子邮件和密码。我了解到对象创建会减慢应用程序的速度,所以将这些字段转换为字符数组是否是一种好的做法?我的逻辑是,如果我有,比如说,一百万用户,那么这些字符串可能会减慢应用程序的速度

不。您将落入过早优化的陷阱

使用常规
String
对象保存名称等

如果你要自己管理文本,你必须知道一个类型已经过时了,只能容纳Unicode定义的137000个字符中的不到一半。因此,在表示字符范围之外的字符时,您必须学习如何使用四位字节而不是双八位字节来处理字符数组。因此,您将了解如何将高值和低值识别为映射到其他代码点。即使您管理了所有这些,您的
char
数组也不会从中讨论的创新中受益

这里要吸取的教训是:不要试图在技术细节方面没有受过很好的教育,也没有被证明需要如此严格的干预的情况下智取Java团队和JVM。通过使用明显的类编写简单的代码,并让编译器和JVM进行优化,您的应用程序将得到最好的服务

现代JVM实现是高度优化的。除了在最极端的条件下,您不必担心对象创建的负担

即使这样,在开始寻找解决方案之前,您也需要使用分析和调试工具来证明和诊断问题。即使是最聪明的程序员也被证明在防止/解决假定的性能问题方面出了名


此外,您将问题标记为Android。Android应用程序上只有一个用户,而不是一百万。如果您指的是服务器端编码,那么当您有一百万用户时,您将有一长串问题需要考虑<用户名的code>String与
char[]
在该列表中的排名将不高

不。您将落入过早优化的陷阱

使用常规
String
对象保存名称等

如果你要自己管理文本,你必须知道一个类型已经过时了,只能容纳Unicode定义的137000个字符中的不到一半。因此,在表示字符范围之外的字符时,您必须学习如何使用四位字节而不是双八位字节来处理字符数组。因此,您将了解如何将高值和低值识别为映射到其他代码点。即使您管理了所有这些,您的
char
数组也不会从中讨论的创新中受益

这里要吸取的教训是:不要试图在技术细节方面没有受过很好的教育,也没有被证明需要如此严格的干预的情况下智取Java团队和JVM。通过使用明显的类编写简单的代码,并让编译器和JVM进行优化,您的应用程序将得到最好的服务

现代JVM实现是高度优化的。除了在最极端的条件下,您不必担心对象创建的负担

即使这样,在开始寻找解决方案之前,您也需要使用分析和调试工具来证明和诊断问题。即使是最聪明的程序员也被证明在防止/解决假定的性能问题方面出了名


此外,您将问题标记为Android。Android应用程序上只有一个用户,而不是一百万。如果您指的是服务器端编码,那么当您有一百万用户时,您将有一长串问题需要考虑<用户名的code>String与
char[]
在该列表中的排名将不高

多谢各位。你能告诉我服务器端编码的方向吗?(这个应用程序非常“基于服务器”)@JTalbott这个话题太宽泛了,不值得评论。您需要自己进行搜索和研究。谢谢。你能告诉我服务器端编码的方向吗?(这个应用程序非常“基于服务器”)@JTalbott这个话题太宽泛了,不值得评论。您需要自己进行搜索和研究。
char[]
是一个对象,与
String
相同。在Java 9(或10?)之前,
String
将内容存储为
char[]
(现在它将内容存储为
字节[]
)。另外:
String
是不可变的。
char[]
是一个对象,与
String
相同。在Java 9(或10?)之前,
String
将内容存储为
char[]
(现在它将内容存储为
字节[]
)。另外:
字符串
是不可变的。