Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用String.valueOf(myString)是否较慢?_Java_String - Fatal编程技术网

Java 使用String.valueOf(myString)是否较慢?

Java 使用String.valueOf(myString)是否较慢?,java,string,Java,String,这只是一个信息性问题,我不需要你告诉我我不应该使用它 我的问题是:如果我使用string1=String.valueOf(string2),是否比string1=string2慢 问题是:我想使用一个方法从整数、双精度等中获取字符串。。。还有绳子。我只是想知道我是否应该创建另一个方法 谢谢,很抱歉,如果这是一个重复,我没有发现它它比较慢,因为您正在进行方法调用,而不是简单的内存位置分配。从技术上讲,是的。通过调用两个都不起作用的方法调用(字符串对象上的valueOf()和toString()),

这只是一个信息性问题,我不需要你告诉我我不应该使用它

我的问题是:如果我使用
string1=String.valueOf(string2),是否比
string1=string2慢

问题是:我想使用一个方法从整数、双精度等中获取字符串。。。还有绳子。我只是想知道我是否应该创建另一个方法


谢谢,很抱歉,如果这是一个重复,我没有发现它

它比较慢,因为您正在进行方法调用,而不是简单的内存位置分配。

从技术上讲,是的。通过调用两个都不起作用的方法调用(字符串对象上的
valueOf()
toString()
),速度会变慢

实际上,一点也不,除非你已经做了数百万次了(除此之外什么都没有)。调用两个几乎没有op的方法不会花费任何代价。

哦,可能会稍微慢一点,因为
String。valueOf(object o)
实际上是
o.toString()
如果
o
不是
null
。因此,您有可能或无法内联的方法调用的开销但是效果非常小。但这并不重要,重要的是清晰

更清楚地表达你的意图

string1 = String.valueOf(string2);
因此,出于这个原因,请使用前者。这是一个不需要动脑筋的问题


你没有说这是不是真的,但我觉得如果你想告诉我们
string1
string2
都是
String
s.

Integer
Double
Float
Boolean
都有一个方法
value of(String s)
。这将
字符串
转换为所需的类。您不需要额外的类。

当然String.valueOf(string2)的速度较慢,这是一个包含数十个字节码操作的方法调用,而将一个值分配给一个本地变量是几个字节码


至于整数、双精度等,我们别无选择,只能调用String.valueOf

您的问题和解释不符

strings1=s2
strings1=String.valueOf(s2)
快(为了证明:你自己试试,这只是一个带有随机字符串的定时for循环)

但是,您的解释是,您希望从数字中获取字符串,它只使用
String s=“”+
(对象可以是原语,如
int
double
,也可以是任何对象,在这种情况下,它的
toString()
被隐式调用),那么您想问这两个对象中的哪一个


最后,您的问题是关于速度:这些不同的方法都不会对程序的运行速度产生重大影响,即使您正在解析数百万个条目。两者之间的减速将在几个小时的运行时间内产生几秒钟的差异。这不值得优化。

是的,除非编译器内联调用,否则会有一些开销。问题是,这有关系吗?很容易找到。它调用两个方法时速度较慢,但这些方法不会产生任何影响。事实上,他们只做了一些测试来返回字符串。这里有一个小小的更正:
string s=“”+
是一种简洁、通用的方法,通过让编译器找出要使用的替换来将任何内容转换为字符串。谢谢!基本上,我需要我的Android应用程序非常快,但一些毫秒不会太慢,我猜谢谢你的回答!事实上,我不知道怎么做
String s=“”+
。事实上,我有一些在文件、类、服务等之间导航的值。。。我最终将它们写入一个新文件中,但出于充分的理由,我有时不得不将它们转换为字符串。我希望能够做到这一点,只有一种方法(这也做其他事情)。我的值可以是字符串,就像它们可以是整数一样
string1 = String.valueOf(string2);