게으른 개발자의 끄적거림

out.write() out.println() 차이점

끄적잉 2024. 8. 7. 21:46
728x90

`out.write()`와 `out.println()`은 자바의 기본 입출력 클래스인 `System` 클래스의 멤버로, 둘 다 출력 스트림을 통해 데이터를 출력하는 데 사용됩니다. 그러나 이 두 메서드는 사용 목적과 작동 방식에서 상당한 차이점이 있습니다. 이 글에서는 `out.write()`와 `out.println()`의 차이점에 대해 상세히 설명하고, 각각의 장단점과 사용 사례를 다룹니다.

 


### System.out의 이해

먼저, `System.out`에 대해 이해해야 합니다. `System.out`은 자바에서 표준 출력 스트림을 나타내는 `PrintStream` 객체입니다. 일반적으로 콘솔에 출력을 보내는 데 사용됩니다. 이 객체는 다양한 데이터 타입을 출력하는 여러 메서드를 제공합니다.

 

```java
System.out.println("Hello, World!");
Systehttp://m.out.write(65);
```

위 코드에서 `System.out.println("Hello, World!");`는 문자열 "Hello, World!"를 출력하고, `Systehttp://m.out.write(65);`는 아스키 값 65에 해당하는 문자인 'A'를 출력합니다.

 


### out.write()

`out.write()` 메서드는 주로 바이트 기반 스트림에서 사용되며, `OutputStream` 클래스의 메서드입니다. 이 메서드는 바이트 또는 바이트 배열을 출력 스트림에 씁니다.

#### 특징

1. **바이트 단위 출력**: `write` 메서드는 주로 바이트 단위로 데이터를 출력합니다. 예를 들어, `out.write(65);`는 아스키 코드 65에 해당하는 'A'를 출력합니다.
2. **배열 출력 가능**: 바이트 배열을 출력할 수 있습니다. 예를 들어, `out.write(byte[] b)`는 바이트 배열 `b`의 내용을 출력합니다.
3. **줄바꿈 없음**: `write` 메서드는 데이터를 출력할 때 자동으로 줄바꿈을 하지 않습니다. 따라서 여러 번 호출하면 출력이 연속적으로 이어집니다.

#### 사용 예

```java
try {
    Systehttp://m.out.write(65); // 출력: A
    Systehttp://m.out.write('\n'); // 출력: 줄바꿈 문자
    byte[] bytes = {66, 67, 68};
    Systehttp://m.out.write(bytes); // 출력: BCD
} catch (IOException e) {
    e.printStackTrace();
}
```

### out.println()

`out.println()` 메서드는 `PrintStream` 클래스에 정의된 메서드로, 다양한 데이터 타입을 출력할 수 있으며, 출력 후 자동으로 줄바꿈을 추가합니다.

#### 특징

1. **자동 줄바꿈**: `println` 메서드는 출력 후 자동으로 줄바꿈 문자를 추가합니다. 따라서 각 호출은 출력 결과를 새로운 줄에 표시합니다.
2. **다양한 데이터 타입 지원**: `println` 메서드는 문자열, 정수, 실수, 객체 등 다양한 데이터 타입을 출력할 수 있습니다.
3. **포맷팅 지원**: `println` 메서드는 `printf`와 함께 사용하면 형식을 지정하여 출력할 수 있습니다.

#### 사용 예

```java
System.out.println("Hello, World!"); // 출력: Hello, World!
System.out.println(123); // 출력: 123
System.out.println(45.67); // 출력: 45.67
System.out.println(new Object()); // 출력: 객체의 toString() 메서드 결과
```

### 비교

#### 기능적 차이

1. **줄바꿈 처리**:
   - `write`는 줄바꿈을 자동으로 추가하지 않음.
   - `println`은 줄바꿈을 자동으로 추가함.

2. **데이터 타입**:
   - `write`는 주로 바이트 또는 바이트 배열을 출력.
   - `println`은 문자열, 숫자, 객체 등 다양한 데이터 타입을 출력.

3. **사용 용도**:
   - `write`는 저수준의 바이트 스트림 처리가 필요할 때 사용.
   - `println`은 고수준의 텍스트 출력을 쉽게 처리할 때 사용.

#### 성능 차이

성능 면에서 큰 차이는 없지만, 용도에 따라 적절히 사용하는 것이 중요합니다. 바이트 단위의 정교한 제어가 필요하다면 `write`를 사용하고, 일반적인 텍스트 출력에는 `println`을 사용하는 것이 좋습니다.

### 결론

`out.write()`와 `out.println()`는 각기 다른 목적과 사용 사례를 가진 출력 메서드입니다. `write`는 저수준의 바이트 스트림 출력을 위해 설계된 반면, `println`은 고수준의 텍스트 출력을 편리하게 처리할 수 있도록 설계되었습니다. 이를 적절히 활용하면 자바 프로그램에서 효율적이고 직관적인 출력 처리가 가능합니다. 각 메서드의 특징을 잘 이해하고, 상황에 맞게 사용함으로써 더 나은 코드 품질을 유지할 수 있습니다.

728x90

'게으른 개발자의 끄적거림' 카테고리의 다른 글

프로시저란?  (0) 2024.08.21
이클립스 폰트 크기 조절 방법  (0) 2024.08.13
Java inputstream outputstream이란?  (0) 2024.08.06
Java 예외처리 방법(try catch finally)  (0) 2024.08.05
IT 솔루션이란?  (0) 2024.07.30