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; 이런식으로 줄일수 있다.
공부하기 전에 문제
변수에서 형(타입)변환은 매우 자주 쓰면서도 조금만 잘못되도 오류가 일어나는 것이라 확실한 개념을 잡고 넘어가는것이 좋다.
첫번째는 기본형끼리의 형변환 (장농을 다른장농을오 변환)
두번째는 참조형(참조변수)끼리의 형변환이 있다.
형변환 방법은 매우 간단하며 형변환 하고 싶은 값 앞에 (변수형태)를 넣어주면 된다.
예를 들어 int형의 값을 byte형으로 바꿀때에
int a = 10;byte b ;b = (byte)a ; //a 를 바이트형으로 바꿔서 b에 넣어라
1 |
0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 |
0 | 0 | 0 | 0 | 0 | 0 | 1 |
그것을 byte형으로 형변환을 시켰을때 똑같이 2진수의 1000001이 byte형 저장공간으로 이동하는것이다.
여기서 알수 있는 한가지!
똑같은 형태의 저장공간에 똑같이 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를 화면에 출력하여라.