黑马程序员技术交流社区
标题:
StringBuilder方面
[打印本页]
作者:
王广彬
时间:
2012-8-21 00:41
标题:
StringBuilder方面
class Turn{
public void turn(String sb){
String[] str=sb.split(" "); //把字符串sb以空格为分割点分成字符串数组
int[] arr = new int[str.length];
StringBuilder builder=new StringBuilder();//???????????为什么不能写成StringBuilder builder=null;
for(int i=0;i<str.length;i++){
arr[i]=Integer.parseInt(str[i]); //把字符串数组转换成整型数组
}
arraySort(arr);
for(int i=0;i<arr.length;i++){
builder.append(arr[i]).append(" ");
}
builder.toString().trim();
System.out.println(builder);
}
public int[] arraySort(int[] ar){
for(int i=0;i<ar.length-1;i++){
for(int j=i+1;j<ar.length;j++){
if(ar[j]<ar[i]){
int temp=ar[j];
ar[j]=ar[i];
ar[i]=temp;
}
}
}
return ar;
}
}
public class Practice3 {
public static void main(String[] args) {
String s="48 -1 23 0 43 8 36";
Turn t=new Turn();
t.turn(s);
}
}
为什么不能写成StringBuilder builder=null;
作者:
位雪
时间:
2012-8-21 05:12
StringBuilder是一个可变的字符序列,是 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用,在实现过程中比StringBuffer 要快。
不论是在单线程中创建StringBuilder还是在多线程中创建StringBuffer,都是为了提高效率。StringBuilder builder=new StringBuilder()传递的是
需要被提高效率的对象,如果直接写StringBuilder builder=null;这句代码存在又有什么意义呢?除非在异常处理时try代码块外定义StringBuilder builder=null;
但是在try代码块中需要写builder = new StringBuilder()并传递相应对象
我自己的理解,你可以参考一下
作者:
唐杨老师
时间:
2012-8-21 06:55
StringBuilder builder=null 表示 StringBuilder没有创建对象,在内存中没有申请到地址,这个没有产生对象的builder是不可用的
而StringBuilder builder= new StringBuilder() ; 虽然builder里边也没有东西,但在内存中可以使用了,只不过内容是一个空字符串 "" ,等待被添加而已.
你这个问题跟他的很有相似性
http://bbs.itheima.com/thread-22902-1-1.html
希望这样解答你能看的清楚明白一些
作者:
胡进辉
时间:
2012-8-21 12:14
直接写的话对象没有创建,这个是初学者最容易犯得错误,经常就是空指针。应为对象更本就没有创建,引用对象的方法和成员肯定是空指针。所以使用一个对象前一定要记得是否需要new出该对象。
作者:
李知伦
时间:
2012-8-21 12:40
Java编译器自动根据成员变量类型对其赋默认值进行初始化
方法中定义的变量要手动初始化,来创建对象,才能通过对象调用非静态方法
StringBuilder builder=null;只是定义了一个变量,初值为null,没有产生新对象builder
当直接用builder调用方法时就会引发空指针异常
所以用new创建一个新对象new StringBuilder()
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2