b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java语言程序设计(8)

电脑杂谈  发布时间:2016-12-30 16:06:08  来源:网络整理

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

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 蔺雷阳
      蔺雷阳

      现在中国人咋啦

    • 文丙
      文丙

      超市有个破了的包装袋太正常了

    热点图片
    拼命载入中...