5월 13일 목요일 (4일차) - 상수,치환,형변환ㅇ

@_@·2021년 5월 15일
0

Java 1부

목록 보기
4/27

<목차>
ㅇ 상수
ㅇ 치환 문제
ㅇ 형변환




ㅇ 상수

  • 절대로 변하지 않는 값
  • 자료형 앞에 마지막(최종)을 의미하는 final을 붙여줘. (last는 이전이라는 의미도 있어서 안 쓰는 듯)
    • 그 변수에 다른 값을 넣으면 빨간 밑줄 생겨
  • 상수가 필요한 이유
    • 메이플 스토리 확률. 개발하다가 확률 건드리면 안 돼
    • 정해진 실숫값 예) π 파이
    • 여기서부터 어디까지의 이동 거리
    • 남들이 건드리면 안 되는 값들



ㅇ 치환 문제

  • 변수에 들어있는 수 뒤바꾸기
  • 일시적인 변수 사용해서 담아둬 : 변수명 temp



ㅇ  형변환 (Casting)

  • 형은 자료형을 의미. 영어로는 데이터타입. 형변환은 다른 자료형으로 넘어가는 것
  • num1, num2, num3 모두 10이라는 데이터를 가지는데 3번째 줄은 에러 남. why?
    • byte num1에 10을 넣는 건 가능 (∵ -128~127)
    • int num2에 num1을 넣는 건 가능 (∵ 바이트는 1칸. 인트는 4칸)
    • 그릇의 크기 1짜리는 4칸에 들어갈 수 있어
      => 이때 자동으로 형변환이 된 것. 즉 int형 자료형으로 변환이 된 것 : 자동 형변환(묵시적 캐스팅)
  • 이제 num2를 byte num3에 넣으려고 하면? 안돼
    • 이미 4칸짜리(int)는 그 공간이 비어있더라도 1칸(byte)에 들어갈 수는 없어
      • 10 자체의 크기는 한 칸이지만 int 에 넣는 순간 담긴 그릇의 크기가 4칸이 돼
    • 만약 꽉 찬 상태라면 앞의 3칸 데이터가 사라질 거야
    • 이러한 현상을 데이터가 누수됐다. = 데이터가 넘쳐흘렀다. = 오버플로우 현상이 발생했다.
    • 즉 빨간 줄은 : num2에 어떤 값이 들어가 있는지는 모르겠는데 너 데이터 누수현상 일어날 수 있어~ 라고 알려주는 것

  • 강제형변환 : 우겨서 넣어서 쓰고 싶으면 데이터 누수 감수하면서 형변환 사용
    • (강제로변환할자료형) 변수명


  • 강제형변환 예제 : 이러니까 -128이 나오네?? why???
    • 128은 2진수로 10000000 -> 이건 byte에서는 -128
    • 맨 앞의 1은 부호비트 : 1은 -, 0은 + 를 의미
    • 부호비트.사전
      : 부호 위치를 차지하는 2진 숫자 또는 2진 문자로서, 그 수 표시가 표현하는 수의 대수 부호를 나타내는 것. 부호 위치에 있는 비트로서 그 수의 정/부를 나타낸다.
    • 부호비트 검색해서 나온 설명



ㅇ -로 넘어가 버리는 썰

  • '바람의나라' 도스ㅋㅋ
    54억5천이 풀 경험치 4byte(즉 int)를 사용했었어
    => 그래서 경험치 풀로 채운 상태에서 다람쥐를 한 마리 더 잡아버리면 경험치가 0 돼버렸대ㅋㅋㅋ
  • 스타크래프트 풀업은 255까지 업그레이드 가능해. 스타크래프트는 1byte (256) 써서 그래

ㅇ 쉬운 비유
밥그릇에 담은 물 양동이로 그냥 옮길 수 있어 : 자동형변환
양동이에 담은 물 밥그릇으로 옮기려고 하면 넘칠 가능성 있어. 이때, 오버플로우 상관없어 누수 시키고 그냥 할래 : 강제형변환



ㅇ (교재) 73p 타입 변환 파트 읽어보기
형변환은 후반되서도 많이 쓰이니까 공부해두면 좋아


profile
STEP BY STEP

0개의 댓글