본문 바로가기

BackEnd/Java

[Java] 자바 출력문 - println, printf,

1. println() 메소드

 

println 을 사용해 문자열을 출력할 수 있다.

// 변수 생성
int age = 25;
// A - 결과 출력
System.out.println("제 나이는 " + age + "세입니다.");

// 제 나이는 25세 입니다.

 

2. printf() 메소드

 

 

 

println() 과 printf() 출력 형식 비교

 

⁕ println(); 

System.out.println("7/2는 " + result + "입니다.");

 

 printf(); 

System.out.printf("7/2는 %d입니다.", result);

 

 

2.1 출력 형식

 

1) int 정수형 변수 삽입 - %d

printf() 메소드는, 출력하고자 하는 변수의 타입 (%d) 을 아래와 같이 명시해줘야 한다.

// 변수 생성
int age = 25;
// A - 결과 출력
System.out.printf("제 나이는 %d세입니다.", age);

// 제 나이는 25세 입니다.

결과는 println 을 사용했을 때와 같이 동일하다. 변수 age의 값이 %d의 위치로 삽입되어 출력된다.

 

* %d의 의미 - 정수

십진수를 영어로한 decimal의 약어이다. C언어의 문법을 그대로 차용한 것으로 이는 정수를 십진수의 형태로 출력한다.

정수는 %d 외에도 다양한 출력 법이 있다.

  • %d - 10진수 출력

  • %o - 8진수 출력

  • %x - 16진수 출력

2) 여러개의 정수값 출력 - ,

출력하고자 하는값이 여러개인 경우 변수사이에 콤마(,)를 사용해야 한다.

// 변수 생성
int month = 10;
int day = 3;
// 결과 출력
System.out.printf("개천절은 %d월 %d일 입니다.", month, day);

// 개천절은 10월 3일 입니다.

 

3) double 실수값 출력 - %f

실수형 변수를 출력하고자 할때는 %f를 사용한다.

// 변수 생성
double PI = 3.14;
// 결과 출력
System.out.printf("파이의 값은 %f 입니다.", PI);

// 파이의 값은 3.140000 입니다.
public class StringInterpolation3 {
  public static void main (String[] args) {
    // 변수 생성
    double x = 7.0 / 2.0; // 3.5
    double y = 7 / 2; // 3 -> (자동 변환) -> 3.0

    // 결과 출력
    System.out.printf("x = %f, y = %f", x, y);
  }
  
  // 결과: x = 3.500000, y = 3.000000
  
}

여기서 y = int(7) / int(2) 를 하게되면 int 값인 3이 나오는데, double type 이므로 자동변환 되어 결과는 3.0으로 출력된다.

 

 소수점 이하 자릿 수 설정

%f 실수값 출력 시, 소수점 이하 자리수를 다음과 같이 제한할 수 있다.

예시) 

소수점 이하 2자리 출력시 : %.2f

소수점 이하 5자리 출력시 : %.5f

 

 

3) String 문자열 출력 - %s

// 변수 생성

String name = "Hailey";
String hobby = "baking";

// 결과 출력 => "name : Hailey hobby: baking"

System.out.printf("name : %s\n", name);
System.out.printf("hobby : %s\n", hobby);

 

줄 내림 - n

println의 경우에는 자동으로 줄 변경이 되지만, printf의 경우 줄 변경시 "\n" 을 추가해야한다.

 

 

 

Math class 

원주율 - Math.PI

절대값 - Math.abs();

반올림 - Math.round();

// 원주율 - Math.PI
double pi = Math.PI; // 3.14159265..

//절대값 - Math.abs();
double x = Math.abs(-9.81); // 9.81

// 반올림 - Math.round();
long n = Math.round(10.6); //11

 

출력형식과 변수의 타입이 불일치할 경우

public class Casting {
	public static void main(String[] args) {
    
    	//변수 생성
        double pi = 3.14;
        
        // Error : 출력형식(%d)과 변수의 타입(double)이 불일치
        System.out.printf("%d", pi)
        
        
        // 1. 출력 형식을 올바르게 변경
        System.out.printf("%f", pi);
        
        // 2. 출력 변수의 타입을 강제변환(캐스팅)
        System.out.printf("%d", (int) pi);
        
	}
}

위 예시는 double 형 변수를 %d 인 정수형으로 출력하라고 선언되어있어 에러가 발생한 경우다.

 

이 상황에서 두가지 해결방법이 있다. 

 

1. 출력형식을 %d 에서 %f 로 변경한다.

2. 출력 변수의 타입인 double을 int로 강제 변환(Casting) 한다.

 

 

 

형변환 - 문자열을 숫자로 변환

public class StringToNumber {

  public static void main(String[] args) {
  
    //변수 생성
    String four = "4";
    String eight = "8";
    String six = "6";
    
    // 형변환 : 문자열 -> 숫자
    int a = Integer.parseInt(four);
    int b = Integer.parseInt(eight);
    int c = Integer.parseInt(six);
    
    // 결과 출력
    System.out.println("total : " + four + eight + six); //total : 486
    System.out.println("total : " + a + b + c); //total : 18
  
  }

}

 

문자 "4"와 숫자 4는 연산을 함에 있어 큰 차이가 있다. 위 예시와 같이 문자 4, 8, 6을 더하게 되면 486이 되지만

결과값으로 세 값을 더한 18을 얻기위해서는 int 즉 정수형태로 변경해야한다. 이때 Integer.parseInt(); 를 사용하면 숫자로 변환된 것을 볼 수 있다.