TIL-Java(변수의 정의, 데이터타입의 반환)

연시아·2022년 7월 12일
0

TIL

목록 보기
43/51
post-thumbnail

22.07.12

🍳 변수의 정의

변수는 변할 수 있는 자 그 값이 변할 수 있는 문자를 변수라고 합니다.
변수를 만들 때 변수 안에 어떤 데이터 타입이 들어갈 수 있는지를 변수를 만들 때 지정을 해야합니다.

데이터 타입으로 치면 지금까지 넘버 라고 했지만 이제 조금 더 정확한 표현을 알아야합니다. 숫자 1은 integer입니다. integer정수 라는 뜻입니다. 0과 -1234 이것들을 다 합치는 것을 정수라고 합니다. int라고 앞에다가 붙여주면 a는 1인데 1이라고 하는 숫자는 정수이기 때문에 a라는 저 변수에 담길 수 있습니다.
실수는 real number 라고 합니다. -2.0과 -1.0 사이에도 무한히 많은 값이 있는 숫자 체계를 실수라고 합니다. 이 실수는 자바에서는 정확한 표현이 아니지만 double라고 생각하면 됩니다. b 앞에 double을 입력하면 b라고 하는 변수에는 더블 즉, 실수 값이 올 수 있다라는 뜻이라 더이상 에러가 발생하지 않습니다.
이젠 c라고 하는 값은 문자열이라서 앞에 string이라고 해주시면 됩니다. 문자열 c라는 변수라고 데이터 타입을 지정해주는 겁니다.
그러면 콘솔창에는 차례대로 1, 1.1, Hello World라고 출력됩니다.

예를 들면,
테이블에 다음과 같이 머그컵에 담긴 물과 뜯지 않은 음료수가 놓여 있습니다. 머그컵에 담긴 물을 의심없이 마실 수 있을까요 ? 뭐가 들었는지 알 수가 없기 때문에 마실 수 있는 사람은 없을 것입니다. 하지만, 오른쪽에 음료수는 뜯어져 있지 않다면, 안의 내용물을 의심없이 마실 수 있을 것입니다.

즉, 자바와 같은 컴퓨터 언어들의 변수는 이 오른쪽에 있는 음료수의 용기와 같은 것입니다. 그래서 이 변수에는 반드시 '정수가 온다' 또는 '문자열이 온다' 라고 정의를 해놓으면 그 것이 아닌 정보가 들어갈 때 아예 자바가 컴파일이 되지 않습니다. 따라서 변수에 값이 들어갔다면, 그 변수 안에 있는 값은 반드시(선언한 데이터타입) 정수거나 문자열이라는 것을 확신할 수 있습니다. 그래서 "꺼낼 때마다 변수안의 값이 정수인지 문자인지를 확인하지 않아도 된다" 는 편리함을 제공합니다. 대신 값을 넣을 때 까다로울 수 있습니다.

🍞 변수의 효용

예를 들어서 우리가 누군가한테 편지를 보내는데 그 편지의 내용이 헬로 이고잉 블라블라 안에 또 이고잉이 있습니다. 이런 상황에서 여기 있는 이고잉 이라고 되어 있는 텍스트들이 계속 바뀌어야 된다면 변수를 이용하는 겁니다.

이제부턴 name이라는 변수가 어떤 값이냐에 따라서 밑에 있는 아웃풋은 저렇게 만들어진 결과는 문제가 없을 것이다라는 것을 확신할 수 있기 때문에 우리의 관심사는 name이라는 변수로 옮겨가게 됩니다. 우리가 사용하고 있는 변수에 값이 이렇게 라면 여기 있는 걸 리체로 바꾸면 네임변수의 구체적인 값 일억개가 한꺼번에 바뀌는 효과를 나타냅니다.
값만을 출력하지 않고 변수를 사용해서 출력한다면, 변수명을 통해서 값에 대한 의미를 파악하기 쉽습니다. VAT라는 이름의 변수를 보고 "부가가치세의 세율"을 나타내는 것임을 알 수 있습니다.

🥚 데이터 타입의 반환

1.1은 더블형입니다. 이걸 정수인 변수 c에 담으려고 하면 보시는 것처럼 밑줄이 가있으면서 에러가 발생합니다.

여기 있는 이 값은 더블형의 데이터인데 그것을 담으려고 하는 c는 int인데 double형을 c로 바꾸려고 했더니 안된다 라고 알려줍니다. 왜냐하면 double형은 보시는 것처럼 소수점이 있고 정수는 소수점이 없기 때문에 저걸 자동으로 바꿔주면 0.1을 잃어버리는 현상이 생길 수 있기 때문입니다.

빨간색 밑줄 쳐져있는 곳을 마우스로 올려놓으면 이클립스가 우리한테 컴파일도 안했는데 cannot convert from double to iny라고 되어 있습니다. 더블형을 자동으로 인 트 형으로 정수로 못 바꿉니다. 왜냐하면 손실이 일어나기 때문에 이제 귀하께서 할 수 있는 조치는 이 둘 중에 하나정도가 있을 것 같습니다 라고 우리한테 알려주는 겁니다. 두번째 Change type of 'd' to double 라고 되어 있습니다. 즉, d라고 하는 변수는 현재 integer(정수)인데 그것을 double로 바꿔주겠다라는 뜻입니다. 두번째를 클릭하면 자동으로 바껴지는 걸 볼 수가 있습니다.

또 하나의 솔루션은 add casting이라고 되어 있습니다. 즉, 우리가 적은 1.1은 더블인데 저것을 int라는 형태로 강제로 바꾸는 코드를 자동으로 추가 해주겠다 라는 뜻입니다. 더블형인데 걔를 강제로 integer로 바꾸겠다 란 뜻이고 그럴 때는 앞에다가 이런 기호를 써주면 됩니다.

실행을 시켜보면 1이 된 것을 확인할 수 있습니다. 즉, 1.1을 강제로 정수로 바꾸면 소숫점 밑에 있는게 완전 사라지기 때문에 손실이 일어납니다. 손실이 일어날 수 있기 때문에 우리가 명시적으로 int 라고 하기 전까지는 자동으로 해주지 않는겁니다. 자동으로 double형을 int로 바꾸면 손실이 있기 때문에 반드시 명시적으로 우리가 형 변환을 해야 된다는 얘기입니다.

String strI = Integer.toString(i);

여기에다가 숫자 1을 넣으면 이 숫자 1을 , 정수를 투 스트링 스트링으로 바꾸나 보다. 이렇게 하면 어떻게 되는지 한 번 살펴봤는데 결과는 1이 나왔지만 여기 있는 이런 데이터 타입이 더 이상 숫자가 아니라 문자 1입니다.

.getClass()뒤에다가 이렇게 붙여 주게 되면 여기 있는 이 변수가 갖고 있는 값이 어떤 데이터 타입인지를 알려주는 코드입니다. 보시는 것처럼 스트링 문자 라는 것을 알려주는 것을 볼 수 있습니다.

profile
backend developer

0개의 댓글