今天写代码的时候用String赋值碰到的问题,特地记录下,方便自己也方便大家。
新建一个String的时候,有三种方法: new String()、 null、“” , 以下分别对这几种方法进行测试
1. 使用null赋值的时候,不能使用String的length方法,同时也不等于空字符“”,如下所示:
2. 使用new String()赋值的时候,不等于null,也不为空, 如下所示
3. 使用 “”赋值时,不等于null,有长度
最后把3个综合起来的执行结果如下所示:
总结和出现的原因
1、String nullString = null;
这种定义方式表示这个变量是没有被分配内存的,源码里面如果运行被注释掉的代码则会报空指针异常java.lang.NullPointerException的错误,由此可以证明内存并没有分配;
2、String newString= new String();
这种定义方式会给newString变量分配出相应的内存,而由于new String()中的参数为空,则其实质上是一个有分配内存,但是值为空的一个变量;
3、String blackString = "";
这种定义方式和前者new String()的定义方式同样的都会分配出内存给这个变量,但与之不同的是,这种定义方式较之前者而言,相当于是new String(“”)定义的,拥有了参数(即调用了不同的构造方法)之后,blackString则是一个既有内存分配又有值(这个值是一个空的字符串)的变量。
参考: http://blog.csdn.net/o0DarkNessYY0o/article/details/52526411