关于java中的String类的方法的问题

新人初学java,今天遇到这样一个问题:
我知道在java中,String是一个字符串类,但是它的一些问题有点疑惑不解
1.定义数据类型
String str;
我知道这是定义了一个str变量
但是却又出现了一个问题;
Sting str = new String(c,0,4) // c是数组
我查了下jdk
文档,Sring类当中有很多方法,我知道调用其中的的方法必须要实例化,也就是创建一个对象,但是我不明白就是为什么在声明变量的时候不用new呢,应该也是要分配空间去存放这个变量的呀,这是为什么呢,麻烦各位解答了,在下谢谢各位了

此问题在项目中被发现,经查看JDK源码(JDK1.6),String类的public String substring(int beginIndex, int endIndex)的实现让我很意外。

想重现这个场景很容易,请看代码。

 

 

[java] view
plaincopy

import&n......
答案就在这里:String类substring方法导致的Java内存泄漏问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

  你的第一个代码肯定是在类定义时声明的类的成员变量,所以允许不用初始化然后在类的构造函数中初始化这个成员变量的。如果是在方法中声明变量必须初始化要么直接new创建对象,要么初始化为null。这是Java的语法特征。

声明的时候不分配内存,只是跟你说一下,创建对象才会分配

变量你有没有初始化,怎么给你分配内存