我正在运行J2ME应用程序并遇到一些严重的内存问题.
所以我构建了另一个步骤来清除巨大的输入字符串并处理其数据并清除它.但是,直到我开始并没有解决问题input = null,而不是input = "".
在内存管理方面不应该是一样的吗?有人可以解释一下我的区别吗?
谢谢,
rAyt
for(int x = 0; x <= ChunksPartCount; x++)
{
_model.setLoading_bar_progress((x * ChunkSize));
input += web_service.FullCompanyListChunksGet(x, ChunkSize);
if((x * ChunkSize) > 5000)
{
ReadXML(input);
input = null;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我仍然希望将答案标记为解决方案.我认为mmyers的言论正朝着正确的方向发展.
我正在开发一个性能增强项目.我有一个疑问,当我们在一个过程中,我们倾向于追踪DTO和所用实体的当前状态.因此,为此,我们在所有POJO中都包含了toString()方法.我现在用以下三种不同的方式实现toString(): -
public String toString() {
return "POJO :" + this.class.getName() + " RollNo :" + this.rollNo + " Name :" + this.name;
}
public String toString() {
StringBuffer buff = new StringBuffer("POJO :").append(this.class.getName()).append(" RollNo :").append(this.rollNo).append(" Name :").append(this.name);
return buff.toString();
}
public String toString() {
StringBuilder builder = new StringBuilder("POJO :").append(this.class.getName()).append(" RollNo :").append(this.rollNo).append(" Name :").append(this.name);
return builder .toString();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我找出哪一个是最好的,应该用于提高性能.
在Java 1.7+上我们是否还需要使用StringBuffer.append转换"this string"+"should"+"be"+"join"以获得最佳实践?
我正在实现我的自定义过滤器:
public class MyFilter implements javax.servlet.Filter
Run Code Online (Sandbox Code Playgroud)
我应该在这个doFilter方法中使用哪个- StringBuffer或StringBuilder?
我想以这种方式使用它:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(MY_CODE_HERE);
response.sendRedirect(stringBuffer.toString());
Run Code Online (Sandbox Code Playgroud)
要么...
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(MY_CODE_HERE);
response.sendRedirect(stringBuilder.toString());
Run Code Online (Sandbox Code Playgroud)
我知道这StringBuffer是线程安全的,但这还StringBuilder够吗?
当我注意到有关字符串连接的这一点时,我正在查看StringJavadoc:
Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串.
String通过StringBuilder(或StringBuffer)实现连接
从Java 8 JLS 15.8.1开始,它是编译器的选择(强调我的):
实现可以选择在一个步骤中执行转换和连接,以避免创建然后丢弃中间String对象.为了提高重复字符串连接的性能,Java编译器可以使用StringBuffer类或类似技术来减少通过计算表达式创建的中间String对象的数量.
我制作了一个小程序来查看它编写的内容
public class Tester {
public static void main(String[] args) {
System.out.println("hello");
for (int i = 1; i < 5; i++) {
String s = "hi " + i;
System.out.println(s);
}
String t = "me";
for (int i = 1; i < 5; i++) {
t += i;
System.out.println(t);
}
System.out.println(t);
}
}
Run Code Online (Sandbox Code Playgroud)
运行时的输出javap -c Tester显示StringBuilder正在使用的输出:
Compiled …Run Code Online (Sandbox Code Playgroud) 我想优化此解决方案(习惯上)。
我有一个仅包含整数值的字符串。我想将此字符串转换为反向int数组。输出应为整数数组
这是我的解决方案:
private static int[] stringToReversedIntArray(String num) {
int[] a = new int[num.length()];
for (int i = 0; i < num.length(); i++) {
a[i] = Integer.parseInt(num.substring(i, i + 1));
}
a = reverse(a);
return a;
}
/*
* Reverses an int array
*/
private static int[] reverse(int[] myArray) {
int[] reversed = new int[myArray.length];
for (int i = 0; i < myArray.length; i++) {
reversed[i] = myArray[myArray.length - (i + 1)];
}
return reversed;
}
Input: "1256346258"
Output: {8,5,2,6,4,3,6,5,2,1} …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的字符串:
CALDARI_STARSHIP_ENGINEERING
Run Code Online (Sandbox Code Playgroud)
我需要编辑它看起来像
Caldari Starship Engineering
Run Code Online (Sandbox Code Playgroud)
不幸的是,早上三点,我不能为我的生活弄清楚这一点.我总是在更换字符串中的东西时遇到麻烦,所以任何帮助都会很棒,并且会帮助我了解将来如何做到这一点.
StringBuilder和Stringbuffer有什么区别?
我正在尝试做一个简单的字符串操作.输入是"谋杀",我想得到"谋杀".
我试过这个
String str = "murder";
StringBuffer buf = new StringBuffer(str);
// buf is now "murder", so i append the reverse which is "redrum"
buf.append(buf.reverse());
System.out.println(buf);
Run Code Online (Sandbox Code Playgroud)
但现在我得到"redrumredrum"而不是"murderredrum".
谁能解释我的程序有什么问题?谢谢.
这可能很容易解决,但我现在坚持了一段时间.我有一个while循环,我用来写数据.我想将while循环中的数据写入String.
public void dumpPart(Part p) throws Exception {
InputStream is = p.getInputStream();
if (!(is instanceof BufferedInputStream)) {
is = new BufferedInputStream(is);
}
int c;
System.out.println("Message: ");
while ((c = is.read()) != -1) {
System.out.write(c); //I want to write this data to a String.
}
sendmail.VerstuurEmail(mpMessage, kenmerk);
}
Run Code Online (Sandbox Code Playgroud)
解决了:
public void dumpPart(Part p) throws Exception {
InputStream is = p.getInputStream();
if (!(is instanceof BufferedInputStream)) {
is = new BufferedInputStream(is);
}
int c;
final StringWriter sw = new StringWriter();
System.out.println("Message: ");
while …Run Code Online (Sandbox Code Playgroud) java ×10
string ×3
arrays ×1
camelcasing ×1
java-8 ×1
java-me ×1
object ×1
performance ×1
replace ×1
reverse ×1
stringbuffer ×1