在一次采访中,有人问我要在给定问题上创建的对象数量:
String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;
Run Code Online (Sandbox Code Playgroud)
我回答说将在字符串池中创建6个对象。
三个变量中的每个变量都为3。
1代表str1 + str2(假设str)。
1代表str2 + str3。
1将代表str + str3(str = str1 + str2)。
我给出的答案正确吗?如果没有,正确答案是什么?
java string string-concatenation string-building string-pool
如果我有许多目录名称作为文字字符串或包含在变量中,那么将这些目录组合在一起以形成完整路径的最简单方法是什么?
我知道
Path.Combine但这只需要2个字符串参数,我需要一个可以采用任意数量目录参数的解决方案.
例如:
string folder1 = "foo";
string folder2 = "bar";
CreateAPath("C:", folder1, folder2, folder1, folder1, folder2, "MyFile.txt")
有任何想法吗?C#是否支持方法中的无限args?
为什么我会使用StringBuilder而不是简单地附加字符串?例如为什么实现如下:
StringBuilder sb = new StringBuilder;
sb.Append("A string");
sb.Append("Another string");
Run Code Online (Sandbox Code Playgroud)
过度
String first = "A string";
first += "Another string";
Run Code Online (Sandbox Code Playgroud)
?
我的代码:
$myText = "";
function addText($textString){
$myText .= $textString;
}
addText("Hello there...");
echo $myText;
Run Code Online (Sandbox Code Playgroud)
预期产量:
你好...
$myText 空了.
为什么会这样?
这似乎是一个之前会被问过的问题,但我找不到它.(如果你这样做,请指出我并将其作为副本关闭.)
我有C代码,其工作方式如下:
printf("some characters");
for (; n >= 0; n--)
{
printf(", %s", f(n, k));
}
printf("more characters");
Run Code Online (Sandbox Code Playgroud)
对于一些在这里不重要的变量n和k函数char* f(int n, int k).(n并且k不是常数.)我想将上面的代码转换为一个函数,它返回一个char*而不是简单地使用printf它来显示它.(它最终将被打印,但这可以让我做一些重构,当然更容易测试.)当然,我可以创建字符串并逐个字符地复制它们但肯定有更好的(更干净,更快,更惯用的方式这样做.
在我的特定应用程序中f是一个非常简单的函数,itos它是一种相对的函数,但是由于它不能以任何有意义的方式缓存k.但我欢迎那些对这种情况有益的想法,因为它可能对将来的其他人有用.