问题很简单,怎样才能更好地避免非占用内存的使用呢?例如,假设我们有 aString s = "Test"并且我们想添加1它,使其变为Test1。我们都知道s获取一个内存位置,如果我们使用StringBuilder,Test1将会得到一个新的内存地址,否则它将保留在s原来的位置,如果我们使用呢concat?
以下代码的输出是"Test Passed"; 谁能解释一下为什么?
public class Test {
public static void main(String args[]) {
System.out.println(new Test().print());
}
protected StringBuilder print() {
StringBuilder builder = new StringBuilder();
try {
builder.append("Test ");
return builder.append("Passed!!!");
} finally {
builder = null;
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,我想补充一下
<%@页面语言=“ C#” AutoEventWireup =“ true” CodeBehind =“ WebForm1.aspx.cs” Inherits =“ WebApplication1.WebForm1”%>
到文本文件,但是我被卡在“ C#”,“ WebForm1.aspx.cs”和“ WebApplication1.WebForm1”部分,我的代码如下
public string HeaderContent1()
{
var sb = new StringBuilder();
sb.Append("<%@ Page Language=");
sb.Append("c#");// prints only c#
sb.Append("AutoEventWireup=");
sb.Append("true");
sb.Append("CodeBehind=");
sb.Append("WebForm1.aspx.cs");// prints only WebForm1.aspx.cs I want with double quotes
sb.Append("WebApplication1.WebForm1");// prints only WebApplication1.WebForm1 I want with double quotes
sb.Append("%>");
sb.AppendLine();
sb.Append("<html>");
sb.AppendLine();// which is equal to Append(Environment.NewLine);
sb.Append("<head>");
sb.AppendLine();
sb.Append("<h1>New File header</h1>");
sb.AppendLine(); // which is equal to Append(Environment.NewLine);
sb.Append("</head>");
sb.AppendLine();
sb.Append("<body>");
sb.AppendLine(); // which …Run Code Online (Sandbox Code Playgroud) 快速提问:
public class AppendStringBuilder {
public static void main(String args[]){
StringBuilder sb1 = new StringBuilder();
sb1.append("java");
sb1.append(new Person("Oracle"));
System.out.println(sb1);
}
}
package hello;
public class Person {
String name;
Person(String str){
name = str;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:javahello.Person@2c538cc2
这背后的原因?不打印JavaOracle
我事先知道,将有84个字符串将被逗号分隔符追加,然后创建一个字符串,
哪种方式更好的是固定数组,字符串或字符串生成器?
我想AND在数组中的每个字符串之间附加单词,但我不想在字符串的末尾添加它.这是我正在尝试的:
假设我想通过 First, Second, Third
public void addString(String... myString) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < myString.length -1;) {
sb.append("(" + myString[i] + " AND " + myString[i+1] + ")");
i++;
}
System.out.println(sb);
}
Run Code Online (Sandbox Code Playgroud)
我的输出是 (First AND Second)(Second AND Third)
但我想要 (First AND Second AND Third)
我究竟做错了什么?
假设我有以下代码:
StringBuilder sb = new StringBuilder("521,214");
String[] result = sb.toString().split(",");
Run Code Online (Sandbox Code Playgroud)
我的问题是:确实toString().split(",")生成2个字符串或3个字符串?我知道结果String数组将有2个字符串 - 但toString()调用也会生成一个字符串 - 不返回?
基本上,我试图限制为性能目的而创建的字符串数量,并想知道toString()调用是否将创建的字符串总数增加到3?
所以我有这段代码:
StringBuilder[] a = new StringBuilder[5];
Arrays.fill(a, new StringBuilder("asdfg"));
a[0].deleteCharAt(0);
for (StringBuilder s : a) {
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
和输出
sdfg
sdfg
sdfg
sdfg
sdfg
Run Code Online (Sandbox Code Playgroud)
似乎数组中的所有元素都是对同一个StringBuilder对象的引用,我猜它是因为Arrays.fill().为什么会发生这种情况?我该如何解决这个问题?ps:我不想使用循环,因为fill()只对StringBuilder []表现不同,我想了解原因.
我对这个例子感到困惑:
StringBuilder a = new StringBuilder("abcde");
String subStr = a.substring( a.indexOf("a") , a.indexOf("c") );
int leng = a.length();
char ch = a.charAt(4);
System.out.println( subStr + " " + leng + " " + ch);
//the result will be : subStr = abc , leng = 5 ch = e
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么ch = e并且它不会创建异常?
我的想法:
我有一个 StringBuilder,一个非不可变的对象,如果我在该对象上使用一种方法,它将返回一个具有相同引用对象的对象的新值。
a.substring ( int a, int b ),没有修改StringBuilder对象? a.append("value")我会修改 StringBuilder 对象的值?我有以下内容StringBuilder,我想附加我的HTML,我有以下代码,但我收到此错误:Javascript Error: 'missing ) after argument list
虽然在stackoverflow中有几十个问题与这个相同的标题,我检查了所有这些并无法解决我的错误.
StringBuilder emplDiv = new StringBuilder();
emplDiv.Append("$('.ulEmployeeSearch').append('<div class='col-lg-3 col-md-4 col-sm-6 col-xs-12'><p>test<p></div>')");
Run Code Online (Sandbox Code Playgroud)
请帮我.