① java 中String s="你好" 跟 String s=new String("你好")有什么区别
在操作s上没区别。
区别在于
Strings="你好";
这样"你好"这个字符串分配在栈中,随着所在函数的结束而被释放。
Strings=newString("你好");
这样"你好"这个字符串分配在堆中,不会因为所在函数的结束而被释放。只有等无人使用时,被Java虚拟机自带的垃圾回收机制释放。
② java string常用方法
常见String类的获取功能
public int length(): 获取字符串的长度。
public char charAt(int index): 获取指定索引位置的字符
public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。
③ Java数组中string的用法
String a[ ]={"1","2","3","4",null};
String b[ ]={"1","2","3","4",'c'};
A是正确的。
null表示空指针,所以你可以理解它是没有类型的,但也可以是任意类型的(任何指针都可以置null)。
而B中,当然不可以将一个字符类型(基本类型)赋值给一个字符串类型(类类型)。
④ java里String 和StringBuffer的区别
STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
使用 StringBuffer 主要就是在性能上的考虑。 String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行 String 的相关操作的时候会产生许多临时的 String 对象。而 StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些。
⑤ JVM能不能自动释放string所占用的存储空间
JVM能自动释放
总结:
JAVA里的回收机制并不是很可靠的,你不可能知道它何时才会启动
2. 每次都要等到下次运行回收机制时才真正的回收你所不用的内存。
3. 最好不要用String,用StringBuffer更好,
⑥ java如何手动释放内存
java当中数组是不需要手动释放的,底层有自动回收垃圾的机制,扩展如下:
前一次循环结果如果没有被引用,那么会等待被自动释放,如果被引用,则不释放。
String[] str2=new String[500];
意思是每次循环都重新定义,并且重新赋值为新创建的数组对象,而上次循环所声明的变量以及所创建的数组对象都被列入自动回收列表了。