변수와 자료의 형 변환 > 학습자료 | IOTsw_u2 U2 Project
학습자료

JAVA 변수와 자료의 형 변환

본문

 

1.변수(variable)

 

 

변수란? 

변할 수 있는 값을 저장하는 공간

그 공간의 성격(유형)을 정의 해야 하는데 그것을 자료형 이라고 한다 

그 공간의 이름을 a 라고 이름표를 달면 다음과 같다.

 

 

String aaa ;

성격(타입)은 String 이고 이름표는 aaa  라고 하겠다!


 

 


String 은 뭐??

 

변수 타입은 기본형 8가지와 참조형으로 나눠지는데 기본형은 꼭 알아두어야 한다.

아래 변수의 타입은 머리속에 걍 넣어 둬!

 

 

 

 

변수의 타입과 크기

기본형(Primitive type) : boolean, char, byte, short, int, long, float, double

 

참조형(Reference type) : 기본형을 제외한 나머지 타입

 

 

 

1 byte

2 byte

4 byte

8 byte

논리형

boolean

 

 

 

문자형

 

char

(유니코드)

 

 

정수형

byte

short

int

(기본 자료형)

long

실수형

 

 

float

double

(기본 자료형)

 

데이터 타입

변수의 범위 

 기본값

크기 

boolean

true, false

 false

1 byte

byte

\u0000~\uffff (0~65,535)

 0

1 byte

char

-128~127

 '\u000'

2 byte

short

-32,768~32,767

 0

2 byte

int

-2,147,483,648~2,147,483,647

 0

4 byte

long

-9223372036854775808~9223372036854775807

 0L

8 byte

float

1.4E-45~3.4028235E38

 0.0f

4 byte

double

4.9E-324~1.7976931348623157E308

 0.0 또는 0.0d

8 byte

 

String 은 왜 빠졌을까요..

저도 모릅니다. (공부중 이라...) 

 

 

어째든 위의 데이타 타입의 기준으로 변수를 선언 해볼까요?

 

int a;    "메모리에 a라는 이름을 가진 공간을 만드는데 타입은 정수형이다~"

 

a = 10; "a의 이름을 가진 공간에 정수 10을 저장  하거라"

 

이렇게 명령어를 내리면 된다. 

 

위의 식을 줄이면  int a = 10;  이런식으로 줄일수 있다. 


 

 

 

 

 

 

 


1_2. 형(타입)변환(casting)


공부하기 전에 문제

장농에 집을 넣을 수 있나요?
집에 장농을 넣을 수 있나요?
답을 냈다면 왜 그런가요?

변수에서 형(타입)변환은 매우 자주 쓰면서도 조금만 잘못되도 오류가 일어나는 것이라 확실한 개념을 잡고 넘어가는것이 좋다.

형변환은 크게 두가지 종류가 있는데 
첫번째는 기본형끼리의 형변환 (장농을 다른장농을오 변환)
두번째는 참조형(참조변수)끼리의 형변환이 있다. 


형변환 방법은 매우 간단하며 형변환 하고 싶은 값 앞에 (변수형태)를 넣어주면 된다.
예를 들어 int형의 값을 byte형으로 바꿀때에
변수의 값 앞에 (byte)를 넣어주면 된다.

int a = 10;
byte b ;

b = (byte)a ; //a 를 바이트형으로 바꿔서 b에 넣어라

형변환에서 주의할점이 몇가지 있는데 그중 첫번째
기본형 8가지중에서 blooean은 형변환이 되지 않는다.
바꿔 말하면 그외에 7가지는 서로 형변환이 된다는 것이다.


여기서 궁금한점이 생긴다면 (안생실수도 있지만)
'문자를 넣는 'char'를 나머지 숫자를 넣는 다른 형태로 바꿀수도 있나?' 
일것이다.

여기서 주의할점 두번째!!
결론부터 말하면문자형인 'char'형도 실수형이나 정수형으로 변환할수 있다!
java에서 'A'를 char형의 저장공간에 넣을때 2진수로 변경되어 값이 저장되기 때문에
같이 2진수로 표현되는 다른 기본형으로 변경이 가능한것이다.'


char 형으로 저장된 'A' 라는 문자 는 실제 아래처럼 메모리에 저장된다

 

 0

 0

 0

 0

 0

 

int 형으로 변환이 일어나면 아래처럼 메모리에 저장되는 데이타는 같지만

 

 1

 0

 0

 0

 0

 

출력은 65 라는 숫자를 출력 한다
즉 char형에 A값을 저장 시켰을때 그 저장공간에 2진수로 1000001이 저장된다.
그것을 byte형으로 형변환을 시켰을때 똑같이 2진수의 1000001이 byte형 저장공간으로 이동하는것이다.

여기서 알수 있는 한가지!
byte형과 char형은 변수를 선언하였을때 메모리에 2byte의 저장공간을 준비한다.
똑같은 형태의 저장공간에 똑같이 1000001이 들어갔는데 왜 출력이 다를까?
그것은 byte형과 char형을 읽어올때 변수형태에따라 다르게 읽기 때문이다.

마지막으로 일중요한 주의할점 세번째!!
작은범위의 형태를 큰범위의 형태로 변환할때 그 값이 소실될수도 있다는것이다.
위 두가지는 주의할점이라기보다는 알아두어야 할점이라고 표현하는게 더 맞을것이며
세번째는 잘못하면 알수 없는 큰 오류가 나기때문에 정말 주의해야할 점이다.
아래 예제를 보자.


byte a = 100; // a라는 byte형 공간을 만들어 100이라는 값을 저장하여라.

short b = 300;// b라는 short형 공간을 만들어 300이라는 값을 저장하여라.

 

a = (byte)b; //b의 저장공간에 있는 값을 바이트형으로 바꾸어 a라는 공간에 저장하라.

          // 주의할점 : 이때 a에 있는 값 100은 300이 들어가면서 지워지게 된다.

System.out.println(a); // a를 화면에 출력하여라.

위예제를 화면에 프린트 하게되면 a의 값이 44로 출력이 된다.
왜냐면 byte의 정수 표현범위가 -128 ~ 127까지인데 만약  127에서 1을 더하면 128이 되는것이
아니라 -128 이 되어버린다.   

 

댓글목록

학습자료 목록

Total 91건 2 페이지
게시물 검색

IOTsw_u2 정보

회사 . U2
주소 . 어느별 하늘 아래에 있것지요
사업자 등록번호 . 백수임 대표 . 김씨 전화 . 02-123-4567 팩스 . 팩스없음
통신판매업신고번호 . 낼할께 개인정보관리책임자 . 김씨가 알아서 함 부가통신사업신고번호 신고안함
Copyright © 2001-2013 U2. All Rights Reserved.
닫기