我是Java的新手,也是学习Java ME开发的人.我陷入了这种转变.请帮我转换StringBuffer成InputStream.谢谢!
假设我们的应用程序只有一个线程.我们正在使用StringBuffer那么问题是什么?
我的意思是如果StringBuffer可以通过同步处理多个线程,使用单线程有什么问题?
为什么要用StringBuilder呢?
java stringbuilder multithreading synchronization stringbuffer
我有一个StringBuffer在for循环外部和内部for循环初始化我连接一些字符串.
我收到了警告
'StringBuffer stringBuffer'可以声明为'StringBuilder'
和
字符串连接作为'stringbuilder.append()'调用的参数
然后我将StringBuffer更改为StringBuilder,因为它比StringBuffer快.现在我收到了警告
字符串连接作为'stringbuilder.append()'调用的参数
示例代码:
public static String stringConcat(String[] words) {
StringBuffer stringBuffer = new StringBuffer();
for (String word : words) {
stringBuffer.append(word).append(" ");
}
return stringBuffer.toString();
}
Run Code Online (Sandbox Code Playgroud)
为什么我收到这些警告.
编辑实际代码:
stringBuffer.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()).append(" ");
Run Code Online (Sandbox Code Playgroud) java stringbuilder android string-concatenation stringbuffer
我们如何重新赋值StringBuffer或StringBuilder变量的值?
StringBuffer sb=new StringBuffer("teststr");
Run Code Online (Sandbox Code Playgroud)
现在我必须将sb的值更改为"testString"而不清空内容.我正在寻找一种方法,可以直接执行此分配,而无需使用单独的内存分配.我认为我们只能在清空内容后才能执行此操作.
人们经常认为避免创建对象(特别是在循环中)被认为是一种很好的做法.
那么,最有效的是StringBuffer什么?
StringBuffer sb = new StringBuffer();
ObjectInputStream ois = ...;
for (int i=0;i<1000;i++) {
for (j=0;i<10;j++) {
sb.append(ois.readUTF());
}
...
// Which option is the most efficient?
sb = new StringBuffer(); // new StringBuffer instance?
sb.delete(0,sb.length()); // or deleting content?
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,有人可能认为创建一个对象比循环遍历一个数组要快.
如何在IntelliJ或Eclipse ....中完成在命令行上运行以下行的等价物:
java MyJava < SomeTextFile.txt
Run Code Online (Sandbox Code Playgroud)
我试图在IntelliJ中的Run/Debug Configuration的Program Arguments字段中提供文件的位置
在许多情况下,我们需要删除StringBuilder/StringBuffer的最后一个字符.例如,给定a int[]{1,2,3},实现String toString(int[] a)方法,用逗号分隔符联系每个元素.输出应该是1,2,3,没有拖尾逗号.
我们可以轻松编写一个循环:
int[] nums = new int[]{1,2,3,4,5};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
sb.append(nums[i]);
sb.append(",");
}
//here we need to remove the tailing ','
Run Code Online (Sandbox Code Playgroud)
但我们总是需要去除拖尾','.有两种方法可以实现它:
sb.deleteCharAt(sb.length() - 1);
Run Code Online (Sandbox Code Playgroud)
和
sb.setLength(sb.length() - 1);
Run Code Online (Sandbox Code Playgroud)
推荐哪一个?为什么?
注意:我知道做了Arrays.toString什么.这只是一个描述我的问题的例子,可能不太合适.
这不是关于字符串连接的讨论,而是StringBuffer/StringBuilder的最佳实践.
有没有办法获取Java对象的地址?
问题来自哪里?:首先,我读取属性文件,文件中的所有数据都放在表格中.属性文件可以更新.所以,我想听那个文件.我使用PropertyChangeSupport和PropertyChangeListener监听对象.
updatedStatus = new basit.data.MyString();
updatedStatus.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
//After changes "i", we inform the table model about new value
public void propertyChange(PropertyChangeEvent evt) {
Object objec=evt.getNewValue();
tableModel.setValueAt(objec.toString(), 0, 5);
}
});
Run Code Online (Sandbox Code Playgroud)
如果updatedStatus更改,那么我更新表.MyString类具有私有字符串"Value".我想听属性文件.因此,它应该使updatedStatus.value和属性文件的字符串在相同的地址相等.如果我能做到,所以我不需要听属性文件.
updatedStatus.setValue(resourceMap.getString("HDI.Device.1.Name"));
Run Code Online (Sandbox Code Playgroud)
我试图使用StringBuffer,但我无法实现它.这就是为什么,我问了这个问题.
当我运行此代码时:
StringBuffer name = new StringBuffer("stackoverflow.com");
System.out.println("Length: " + name.length() + ", capacity: " + name.capacity());
Run Code Online (Sandbox Code Playgroud)
它给出了输出:
长度:17,容量:33
明显的长度与字符串中的字符数有关,但我不确定容量是多少?在重新分配空间之前,StringBuffer可以容纳的字符数是多少?
java ×10
stringbuffer ×10
string ×2
android ×1
inputstream ×1
instance ×1
java-me ×1
midlet ×1
performance ×1