본문 바로가기
학원 수업

5일차 - java '형변환'

by Hiolet 2021. 10. 5.

오늘 가는 버스 안에서 영어공부를 해야 했는데 꿀잠잤다. 

그리고 내리기 2분 전에 깸.

 

오늘도 어김없이 자바 수업 시작

 

변수와 메모리

자료형의 종류
  정수형 문자형 실수형 논리형
1바이트 byte     boolean
2바이트 short  char    
4바이트 int   float  
8바이트 long   double  

 float형은 어제 배운 long형과 똑같이 숫자 뒤에 F(대문자) or f(소문자)를 써줘야 한다.

자바에서는 실수를 더 정밀하게 표현하기 위해 float형(4바이트)보다 double(8바이트)를 주로 사용한다.

 

자료형 없이도 변수를 선언할 수 있다.

자바 10부터는 var를 자료형 대신 사용할 수 있다. 변수에 대입되는 값을 보고 알아서 컴파일이 된다.

자바 스크립트에서는 아예 var를 쓴다.  기억나니? 난 너 기억나는데....  

 

var를 쓸 때 유의점

  1. 한번 선언한 변수는 다시 사용할 수 없다.
  2. 지역변수만 가능하다.

그러니까 변수 이름을 똑같이 쓸 수 없다는 소리다.  이건 당연한 소리고. 

지역변수는 그 변수가 있는 괄호 안에서만 쓸 수 있는 변수다. 간단하게 말하면 메소드 안에서 사용하는 변수.

괄호를 밖 유효범위를 넘어서 쓰면 오류가 생긴다.  당연한 소리22  

for 반복문의 괄호 밖에서 i 변수를 쓸 수 없다.

괄호 밖에서 쓸 수 있는 변수는 전역변수다. 클래스 바로 밑에 두고 사용한다.

클래스 밑에 쓸 수 있는 것은 메소드, 생성자, 그리고 변수(전역변수) 이렇게 세가지가 있다.

for 반복문 같은 실행문들은 클래스 밑에 바로 못 쓴다.

지역변수와 전역변수는 서로 이름이 같아도  계층구조가 다르기 때문에 오류가 생기지 않는다.  음 김민지팀장님이랑 김민지 사원같은 건가 

 

생활코딩으로 공부하면서 이런 이론은 부족했는데 이렇게 수업에서 알 수 있어서 참 좋다.

자바가 어떤식으로 돌아가는지 구조를 미리 공부해 두고 이런 이론을 배우니까 뭔가 더 아~ 그렇구나하고 잘 이해되는 느낌.

 

상수

상수를 선언할 때는 앞에 final을 쓰고 변수를 선언하면 된다.  변수가 상수가 되는 매직  

상수 이름은 대문자를 쓰기 때문에 이름으로 의미를 파악하기 위해 카멜표기법을 이용할 수 없다.

상수 선언

 

그래서 그 상수의 의미를 나타내기 위해 여러 단어로 만들어진 이름은 _로 구분해주면 된다. 

변하지 않는 수를 굳이 왜 상수로 만드는 걸까?

변하지 않아야 하는 해당 값을 반복적으로 써야 한다면 상수로 만들어 놓으면 작업이 확실히 편해진다.

그리고 그 상수값에 따로 이름을 붙이면 값의 의미를 파악하기 좋다.

 

형변환

1+1.0 = ?

작은 자료형에서 큰 자료형으로 바뀔 때는 자동형변환이 일어난다.

그리고 정수에서 실수로 바뀌는 것도 자동으로 형변환이 된다.

화살표 방향으로 자동형변환이 된다.

 

그럼 위의 수식을 계산해보면 정수형 + 실수형이다. 그러면 정수에서 실수로 바뀌고 값도 실수로 바뀌게 된다.

1+1.0 = 2.0

 

아래는 작은 자료형에서 큰 자료형으로, 정수에서 실수로 형변환을 한 예제이다.

 

형변환은 계산하기 전에 일어난다. 형변환 다음에 계산이 된다.

그렇기 때문에 강제형변환을 할 때 형변환 위치에 따라서 값이 달라지기도 한다.

 

아래 예제를 보면 계산식은 dNum1 + fNum2 으로 똑같지만 int형으로 강제형변환을 하는 위치에 따라 값이 달라졌다.

어느 방식은 틀렸고 맞는게 없다고 한다.
프로그램의 컨셉에 맞게 프로그래머가 잘 위치 선정을 해야 한다.

그리고 강제형변환은 자동형변환의 반대로 큰 자료형에서 작은 자료형으로 형변환을 하기 때문에 자료 손실이 있다.