StringBuffer sb=new StringBuffer();
String path=new String(sb);
String[] array=path.split(";");
System.out.println(array);
System.out.println("------------------------");
String path1=null;
String[] array1=path1.split(";");
System.out.println(array1);显示结果如下:[Ljava.lang.String;@35ce36
------------------------
Exception in thread "main" java.lang.NullPointerException
at qiu.teststring.TestSplitNull.main(TestSplitNull.java:11)
打印出的结果array没有报错,正常显示;而array1报错。小弟现在捣鼓不清楚了,还望路过的帮忙看看
解决方案 »
- 跪求.......
- 100分求SCJP 1.4(310-025,SL-275) 中文题库
- 怎么无法显示图片啊
- 新手,请帮帮忙!!!谢谢
- 如何访问其他窗体上的控件
- Rational ROSE 和 Rational XDE 有啥区别?
- 请教高手。
- 50分征集一个针对初学者的最好的java论坛?
- serversocket.accept().getOutputStream() 服务器最多能够维持多少个OutputStream?
- 我想试试我的msn(hotmail登录的那个聊天软件)是否能用,但是没有再线的其他用户!那为朋友能提供一个那我测试一下?
- linux 下的错误:IOException: Broken pipe,求解、、、、、
- LinkedList类型中的元素是不是不能为Set这些Collection类的子类
String[] array1=path1.split(";");
Object a = null;
int hashCode = a.hashCode();这两个代码原理是一样一样的
第二个我知道肯定会报错,我想知道第一个同样sb是空的,但是赋值给path后就不报错了,为什么?????
第一个是path是一个空字符串,不是null。即path=""
所以可以执行String[] array=path.split(";");空字符串和null是不同的。
至于String和StringBuffer类的区别 在你这个例子中根本就没有体现。
StringBuffer:字符串变量,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
StringBuilder 字符串变量(非线程安全)一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。
注:如果针对某一String用“+”拼接的话,效率比StringBuffer还快,比如:String x="a"+"b";JVM认为x="ab";不过如果是几个不同的String拼接的话就不行了。
而 StringBuffer 的长度是可变的 并且 始终保持同一个对象 而你出现的NullPointException(空指针异常) 那是因为你的path1是null值 这样path1.split 必定会出现空指针异常
String path1=null;
String[] array1=path1.split(";");
System.out.println(array1);你使用了一个为null的对象去调用方法,能不报NullPointerException吗?
public class Test {
public static void main(String args[]){
StringBuffer sb1 = null;
StringBuffer sb = new StringBuffer();
System.out.println("-------"+sb1+"-------");//sb1=null
System.out.println("-------"+ sb+"-------");//sb=""
String path=new String(sb);
System.out.println("-------"+path+"-------");//path=""
String[] array=path.split(";");
System.out.println(Arrays.toString(array));
// String path1=null;
// String[] array1=path1.split(";");
// System.out.println(array1);
}
}
///////////////////result////////////////////////
-------null-------
--------------
--------------
[]