java I/O输入输出优化


/*
 * A Input/output operations in Java may be very slow in the case of wrong usage.
 *
 * Here are some rules which should be followed to avoid input/output performance problems:
 *Scanner is suitable to read input data for the most of problems,
 *but it is very slow. You should use it to read small input data only.
 *
 *BufferedReader provides quite fast read operations for almost all problems.
 *But this class may be used to read single characters and lines only.
 *
 *To read tokens and numbers you should use StringTokenizer or StreamTokenizer.
 *PrintWriter is preferred in all cases and works rather fast.
 *But its method printf is too slow as well as calls like println(a+" " + b).
 *You should output variables one-by-one to reach the highest performance.
 *
 *To read and write ASCII characters with codes more than 127 in the same way as in other programming languages,
 *you should use the following constructors:
 *Scanner scanner = new Scanner(System.in, "ISO-8859-1");
 *BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1"));
 *PrintWriter writer = new PrintWriter(new OutputStreamWriter(System.out, "ISO-8859-1"));
 *
 */

 

import java.util.Scanner;
import java.math.*;
import java.io.*;


public class IOput {

 public static void method1(){
  Scanner cin =new Scanner(System.in);
  while(cin.hasNext()){
   BigInteger a = cin.nextBigInteger();
   BigInteger b = cin.nextBigInteger();
   BigInteger c = a.add(b);
   System.out.println(c);
  }
 }
 
 public static void method2() throws Exception{
  StreamTokenizer cin = new StreamTokenizer(new InputStreamReader(System.in));
  PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
  while(cin.nextToken()!=StreamTokenizer.TT_EOF){
   int a =  (int)cin.nval;
   cin.nextToken();
   int b= (int)cin.nval;
   out.print(a+b);
  }
  out.flush();
 }
 
 public static void main(String args[]){
  //这里重定向标准输入输出,然后可调用上方法

  BufferedInputStream  in = new BufferedInputStream(new FileInputStream("d:/test.txt"));

  printStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("d:/result.txt")));

  System.setIn(in);

  System.setOut(out);

  method1();

  method2();
 }
}

你可能感兴趣的:(java,C++,c,C#,performance)