Java 기본 사용법 요약 (2)

이어서 전편에서 여러분에게 자바 응용과 입력과 출력의 상용 방법을 소개하여 참고하도록 하겠습니다. 구체적인 내용은 다음과 같습니다.
1. 응용
1. StringBuilder 또는 StringBuffer 사용

// join(["a", "b", "c"]) -> "a and b and c"

String join(List<String> strs) {

 StringBuilder sb = new StringBuilder();

 boolean first = true;

 for (String s : strs) {

 if (first) first = false;

 else sb.append(" and ");

 sb.append(s);

 }

 return sb.toString();

}

  • 이렇게 중복된 문자열 연결을 사용하지 마십시오: s+=item, 시간 효율이 O(n^2)이기 때문에..
  • StringBuilder 또는 StringBuffer를 사용할 때 append () 방법으로 텍스트를 추가하고 toString () 방법으로 연결된 전체 텍스트를 가져올 수 있습니다
  • 더 빠르기 때문에 StringBuilder를 우선적으로 사용합니다.StringBuffer의 모든 방법은 동기화됩니다. 일반적으로 동기화 방법은 필요하지 않습니다
  • 2. 한 범위 내의 무작위 정수 생성
    
    Random rand = new Random();
    
     
    
    // Between 1 and 6, inclusive
    
    int diceRoll() {
    
     return rand.nextInt(6) + 1;
    
    }
    
    
  • 항상 Java API 방법을 사용하여 정수 범위 내의 무작위 수를 생성합니다
  • Math를 사용하려고 하지 마세요.abs (rand.next Int ())% n 이 불확정한 용법은 결과에 편차가 있기 때문이다.그 밖에 그것의 결과 값은 마이너스일 수도 있다. 예를 들어rand일 수도 있다.nextInt() == Integer.MIN_VALUE 때 이렇게 되는데..
  • 3. Iterator를 사용합니다.remove()
    
    void filter(List<String> list) {
    
     for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) {
    
     String item = iter.next();
    
     if (...)
    
      iter.remove();
    
     }
    
    }
    
    
    remove () 방법은next () 방법이 최근에 되돌아온 항목에 작용합니다.항목마다 Remove () 방법을 한 번만 사용할 수 있습니다.
    4, 반환 문자열
    
    String reverse(String s) {
    
     return new StringBuilder(s).reverse().toString();
    
    }
    
    
    이 방법은 자바 표준 라이브러리에 넣어야 할 수도 있습니다.
    5. 라인 시작
    다음 세 가지 예는 서로 다른 방식으로 같은 일을 완성했다.
    Runnnable 구현 방법:
    
    void startAThread0() {
    
     new Thread(new MyRunnable()).start();
    
    }
    
     
    
    class MyRunnable implements Runnable {
    
     public void run() {
    
     ...
    
     }
    
    }
    
    
    Thread를 상속하는 방법:
    
    void startAThread1() {
    
     new MyThread().start();
    
    }
    
     
    
    class MyThread extends Thread {
    
     public void run() {
    
     ...
    
     }
    
    }
    
    익명으로 Thread를 상속하는 방법:
    
    void startAThread2() {
    
     new Thread() {
    
     public void run() {
    
      ...
    
     }
    
     }.start();
    
    }
    
    
    run () 방법을 직접 호출하지 마십시오.항상 Thread를 호출합니다.start () 방법, 이 방법은 새로운 라인을 만들고 새 라인을 run () 로 호출합니다.
    6. try-finally 사용
    입출력 흐름 예:
    
    void writeStuff() throws IOException {
    
     OutputStream out = new FileOutputStream(...);
    
     try {
    
     out.write(...);
    
     } finally {
    
     out.close();
    
     }
    
    }
    
    
    잠금 예:
    
    void doWithLock(Lock lock) {
    
     lock.acquire();
    
     try {
    
     ...
    
     } finally {
    
     lock.release();
    
     }
    
    }
    
    
  • 만약try 이전의 문장이 실행에 실패하고 이상을 던지면finally 문장 블록이 실행되지 않습니다.그러나 어쨌든 이 예에서는 자원의 방출을 걱정할 필요가 없다
  • 만약try문장 블록 안의 문장이 이상을 던지면 프로그램의 운행은finally문장 블록에 뛰어들어 가능한 한 많은 문장을 실행하고 이 방법을 튀어나온다(이 방법이 다른 외곽의finally문장 블록이 있는 경우를 제외하고)..
  • 2. 입력/출력
    1. 입력 흐름에서 바이트 데이터 읽기
    
    InputStream in = (...);
    
    try {
    
     while (true) {
    
     int b = in.read();
    
     if (b == -1)
    
      break;
    
     (... process b ...)
    
     }
    
    } finally {
    
     in.close();
    
    }
    
    read () 방법은 다음 흐름에서 읽은 바이트 (0에서 255, 0과 255 포함) 를 되돌리거나 흐름의 끝에 도달했을 때 -1을 되돌려줍니다.
    2. 입력 흐름에서 블록 데이터 읽기
    
    InputStream in = (...);
    
    try {
    
     byte[] buf = new byte[100];
    
     while (true) {
    
     int n = in.read(buf);
    
     if (n == -1)
    
      break;
    
     (... process buf with offset=0 and length=n ...)
    
     }
    
    } finally {
    
     in.close();
    
    }
    
    
    기억해야 할 것은read () 방법이 반드시 buf 전체를 채우는 것은 아니기 때문에 처리 논리에서 되돌아오는 길이를 고려해야 한다는 것이다.
    3. 파일에서 텍스트 읽기
    
    BufferedReader in = new BufferedReader(
    
     new InputStreamReader(new FileInputStream(...), "UTF-8"));
    
    try {
    
     while (true) {
    
     String line = in.readLine();
    
     if (line == null)
    
      break;
    
     (... process line ...)
    
     }
    
    } finally {
    
     in.close();
    
    }
    
    
  • BufferedReader 객체의 생성이 지루합니다.이것은 자바가 바이트와 문자를 두 가지 다른 개념으로 생각하기 때문이다
  • File InputStream 대신 어떤 종류의 InputStream을 사용할 수 있습니다. 예를 들어 socket..
  • 흐름의 끝에 도달했을 때, Buffered Reader.readLine () 은 null로 돌아옵니다
  • 한 번에 한 문자를 읽으려면 Reader를 사용하십시오.read () 메서드..
  • UTF-8을 사용하지 않고 다른 문자 인코딩을 사용할 수 있지만 그러지 않는 것이 좋습니다
  • 4. 파일에 텍스트 쓰기
    
    PrintWriter out = new PrintWriter(
    
     new OutputStreamWriter(new FileOutputStream(...), "UTF-8"));
    
    try {
    
     out.print("Hello ");
    
     out.print(42);
    
     out.println(" world!");
    
    } finally {
    
     out.close();
    
    }
    
    
  • Printwriter 객체의 생성이 지루합니다.이것은 자바가 바이트와 문자를 두 가지 다른 개념으로 생각하기 때문이다
  • 시스템 같아.out, print () 와 println () 을 사용하여 다양한 종류의 값을 인쇄할 수 있습니다
  • UTF-8을 사용하지 않고 다른 문자 인코딩을 사용할 수 있지만 그러지 않는 것이 좋습니다
  • 이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기