[부스트코스/쉽게 배우는 자바 1] 8. 변수와 데이터 타입의 변환(캐스팅/casting)

zzzzsb·2021년 2월 24일
0

부스트코스 쉽게 배우는 자바 1


Chaper 8


8-1. 변수의 정의

변수(variable)라는 말은 주로 수학에서 많이 들어보았을 것이다.
수학에서 변수는 변하는 값을 의미하는데, 프로그래밍에서 변수는 조금 다른 의미이다.

자바에서 변수 만들기

Data_and_operation 프로젝트에서 Variable 클래스를 생성해보자.

Variable.java 소스코드

public class Variable {
 
    public static void main(String[] args) {
         
        int a = 1; // Number -> integer  ... -2, -1 , 0, 1, 2 ...
        System.out.println(a);
         
        double b = 1.1; // real number -> double ... -2.0, -1.0, 0, 1.0, 2.0 ...
        System.out.println(b);
         
        String c = "Hello World";
        System.out.println(c);
    }
 
}

Variable.java 소스코드 분석

  • 자바에서는 변수를 지정할 때 데이터 타입을 먼저 선언한다.

정수 데이터(int)

  • 정수 데이터는 Integer, 즉 int 데이터 타입이다.

int a = 1;

  • 정수 데이터를 변수로 만들기 위해 앞에 int 데이터 타입을 선언하였다.

System.out.println(a);

  • a의 출력결과는 1이 된다.

실수 데이터(double)

  • 실수 데이터는 double 데이터 타입이다.
double b = 1.1;
  • 실수 데이터를 변수로 만들기 위해 앞에 double 데이터 타입을 선언하였다.
System.out.println(b);
  • b의 출력결과는 1.1이 된다.

문자열 데이터(String)

  • 문자열 데이터는 String 데이터 타입이다.
String c = "Hello World";
  • 문자 데이터를 변수로 만들기 위해 앞에 String 데이터 타입을 선언하였다.
System.out.println(c);
  • c의 출력결과는 Hello World가 된다.

데이터 타입을 지정하는 이유

자바에서는 변수의 데이터 타입을 즉시 판단하기 위해 변수를 생성할 때 데이터 타입을 지정해준다.


8-2. 변수의 효용

그렇다면, 코드를 입력할 때 변수는 왜 만드는 것일까?

변수 지정의 효용

Data_and_operation 프로젝트에 Letter 클래스를 만들어보자.

Letter.java 소스코드

public class Letter {
 
    public static void main(String[] args) {
        String name = "boostcourse";
        System.out.println("Hello, "+name+" ... "+name+" ... egoing ... bye");
         
        double VAT = 10.0;
        System.out.println(VAT);
    }
 
}

Letter.java 소스코드 분석

변수의 재사용

데이터는 한두번 사용될 수도 있지만, 수액수천번 이상, 훨씬 더 많이 사용될 수 있다.
이런 경우에 변수를 사용하면 훨씬 간편하게 코딩할 수 있다.

System.out.println("Hello, boostcourse ... boostcourse ... egoing ... bye");`

위의 코드에서 boostcourse 가 중복됨을 알 수있다.
이를 변수를 활용해 좀더 간편하게 바꿔보자.

String name = "boostcourse";
  • name 이라는 문자열 변수를 boostcourse로 지정한다.
System.out.println("Hello, "+name+" ... "+name+" ... egoing ... bye");
  • Hello, boostcourse ... boostcourse ... egoing ... bye 가 출력됨을 확인할 수 있다.

코드의 가독성

변수의 이름을 어떻게 짓느냐에 따라 코드의 가독성이 달라진다.

double VAT = 10.0;
  • VAT 라는 실수형 변수를 10.0로 지정한다.
System.out.println(VAT);
  • 10.0이 출력됨을 확인할 수 있다.
  • 여기서 VAT는 부가가치세를 의미한다. 변수에 VAT라는 이름을 지정해주면, 단순한 실수 10이 아닌 부가가치세를 의미하는 실수가 된다.
  • name 이라는 변수 또한 마찬가지다. 단순한 문자열 "boostcourse"가 아닌, 이름이라는 의미를 지니게 된다.

변수는 값에 이름을 부여하는 것이고, 이의 가독성과 재사용을 위해서 보다 좋은 이름을 부여해야 한다는 사실을 알 수 있다.


8-3. 데이터 타입의 변환 - casting

자바에서 변수를 만들기 위해서는 데이터 타입을 지정해 주어야 한다.
만약 지정한 데이터 타입을 변경해야 하는 경우가 생긴다면, 어떻게 해야할까?
자바에서는 캐스팅(casting)을 통해 지정한 데이터 타입을 변경할 수 있다.

데이터 타입의 변환

숫자 3을 2로 나누면 1.5가 나온다.
하지만, 자바에서 정수 3을 정수 2로 나누게 되면 결과는 1.5 대신 1이 나오게 된다.
우리가 원하는 1.5를 얻기 위해서는 데이터 타입을 정수에서 실수로 변환하는 과정이 필요하다.


Data_and_operation 프로젝트에서 Casting 클래스를 생성해보자.

Casting.java 소스코드

public class Casting {
 
    public static void main(String[] args) {
         
        double a = 1.1;
        double b = 1;
        double b2 = (double) 1;
         
        System.out.println(b);
         
        // int c = 1.1;
        double d = 1.1;
        int e = (int) 1.1;
        System.out.println(e);
         
        // 1 to String 
        String f = Integer.toString(1);
        System.out.println(f.getClass());
 
 
    }
 
}

Casting.java 소스코드 분석

double b = 1;
  • 1은 정수이지만 b라는 double형 변수에 담길때 b가 실수형이기 때문에 실수형으로 컨버팅이 된다.
  • 그렇기에 출력하면 1.0이 출력된다.

  • 실수인 1.1을 정수형 변수 d에 담으려고 하면 에러가 발생한다.

  • 에러가 발생한 부분을 확인하면 두가지 해결방법을 알려준다.
    1. Change type of 'd' to 'double' 을 클릭하면 c의 자료형이 double로 변환된다.
    • int d = 1.1;double d = 1.1; 로 변환되는 것을 확인할 수 있다.
    1. Add cast to 'int'를 클릭하면 실수인 1.1이 강제로 정수형 int로 변환된다.
    • int e = 1.1;int e = (int) 1.1; 로 변환되는 것을 확인할 수 있다.
    • 1.1이 int형으로 변환 되면서 0.1이 손실되었다.

정수와 실수 간에 변환하기

정수에서 실수 변환

  • double b = 1; 과 같이 변수의 데이터 타입을 실수로 지정하는 것만으로 변환이 가능하다.

실수에서 정수 변환

실수에서 정수로 변환하는 경우에는 데이터 타입을 명시적으로 변경해 주어야 한다.

  • int e = (int) 1.1; 과 같이 실수 1.1을 정수로 변환하기 위해 데이터 타입을 int형으로 변환해 주어야 한다.

정수를 문자열로 변환하기


포털사이트에 java int to string casting을 검색해보자.

스택 오버플로우 사이트의 결과를 토대로 코드를 입력해보자.

String f = Integer.toString(1);
  • 정수 1을 String으로 변환하여 문자형 정수 f에 저장한다.
  • 1이 출력된다.

Integer 객체의 toString 메소드를 이용하면 숫자를 문자열로 변환할 수 있다.

변환한 f가 문자형인지 확인하려면 어떻게 해야할까?

System.out.println(f.getClass());

  • getClass() 메소드를 통해 f가 String, 문자형임을 알 수 있다.

부스트코스
https://www.boostcourse.org/opencourse

부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126


profile
성장하는 developer

0개의 댓글