2 u010775468 u010775468 于 2016.04.24 16:03 提问

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

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

4个回答

CSDNXIAOC
CSDNXIAOC   2016.04.24 16:12

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

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

 

 

[java] view
plaincopy

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

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.24 18:14
  你的第一个代码肯定是在类定义时声明的类的成员变量,所以允许不用初始化然后在类的构造函数中初始化这个成员变量的。如果是在方法中声明变量必须初始化要么直接new创建对象,要么初始化为null。这是Java的语法特征。
u010775468
u010775468 谢谢,有一点不懂的是,这第一个str是不是可以把它和int等其他基本数据类型看成是一样的,在定义之初就已经分配好了内存,所以不需要再new了,然后只要是String类型的,是不是可以直接调用其中的方法?
一年多之前 回复
qq_16659099
qq_16659099   2017.05.30 18:53

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

qq_16659099
qq_16659099   2017.05.30 18:54

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!