String s1 = new String(""); //第一种
String s2 = ""; //第二种
第一种始终不会入池的.
第二种要看情况而定(等号右边如果是常量则入池,非常量则不入池)
例:
String s3 = "a" "b"; //"a"是常量,"b"是常量,常量常量=常量,所以会入池.
String s4 = s1 "b"; //s1是变量,"b"是常量,变量常量!=常量,所以不会入池.
一旦入池的话,就会先查找池中有无此对象.如果有此对象,则让对象引用指向此对象;如果无此对象,则先创建此对象,再让对象引用指向此对象.
现在考虑上述代码,为了节省Java虚拟机的效率和内存,在以String s1=“abc”的方式建立String引用声明时,会首先去Java的字符串池中查找是否有这个对象,如果有了,则直接指向它。所以这里建立s1时,字符串池为空,所以在字符串池中建立对象“abc”,并将s1指向它,后又建立s2,会先去字符串池中查找,有了,所以也指向它,这样,s1与s2指向的其实是同一个对象。
而用String s2=new String("abc")方法声明的,都不会去常量池,这时s2单独会生成一个对象,二者指向不同。
java字符串String的实例方法intern()【也叫字符串扣留】就是为解决这个问题而来的,但使用了intern()字符串扣留方法后能使用“==”操作符比较字符串的结果只是该方法的衍生品,它的主要目的是为了减少java程序中对同一字符串对象的重复引用(reference)从而减少内存的使用提升效能,因为使用字符串扣留intern()实例方法就能够确保不存在封装有完全相同字符串的两个String对象,因此所有的String对象封装的字符串对象都唯一。
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。java语言程序设计
Java为每一种基本数据类型提供类一个包装类:
示例代码如下,编写名为ReplaceText类,用新的文本字符串代替旧的文本字符串,使用方法:java ReplaceText sourceFile targetFile oldString newString
主要使用Scanner来读数据,用PrintWriter来写数据:
import java.io.*;
import java.util.*;
public class ReplaceText {
public static void main(String[] args) throws Exception {
// Check command line parameter usage
if (args.length != 4) {
System.out.println("Usage: java ReplaceText sourceFile targetFile oldStr newStr");
System.exit(0);
}
// Check if source file exists
File sourceFile = new File(args[0]);
if (!sourceFile.exists()) {
System.out.println("Source file " args[0] " does not exist");
System.exit(0);
}
// Check if target file exists
File targetFile = new File(args[1]);
if (targetFile.exists()) {
System.out.println("Target file " args[1] " already exists");
System.exit(0);
}
// Create input and output files
Scanner input = new Scanner(sourceFile);
PrintWriter output = new PrintWriter(targetFile);
while (input.hasNext()) {
String s1 = input.nextLine();
String s2 = s1.replaceAll(args[2], args[3]);
output.println(s2);
}
input.close();
output.close();
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23953-8.html
超市有个破了的包装袋太正常了
现在中国人咋啦