java String赋值问题,nul,new String()函数赋值问题

时间:2021-12-27 16:20:29

   今天写代码的时候用String赋值碰到的问题,特地记录下,方便自己也方便大家。

        新建一个String的时候,有三种方法: new String()、 null、“” , 以下分别对这几种方法进行测试 

1. 使用null赋值的时候,不能使用String的length方法,同时也不等于空字符“”,如下所示:

java String赋值问题,nul,new String()函数赋值问题java String赋值问题,nul,new String()函数赋值问题


2. 使用new String()赋值的时候,不等于null,也不为空, 如下所示 

java String赋值问题,nul,new String()函数赋值问题java String赋值问题,nul,new String()函数赋值问题


3. 使用 “”赋值时,不等于null,有长度

java String赋值问题,nul,new String()函数赋值问题   java String赋值问题,nul,new String()函数赋值问题

 

   最后把3个综合起来的执行结果如下所示:

java String赋值问题,nul,new String()函数赋值问题java String赋值问题,nul,new String()函数赋值问题


   总结和出现的原因

         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