변수
변수란?
- 특정 타입의 데이터를 메모리상에 담을 수 있는 영역을 의미한다.
변수를 선언하는 방식
데이터 타입 변수이름 ;
ex) int num;
ex) String name;
위와 같은 변수명에 데이터를 정해주는 방법
변수이름 = 데이터 값;
ex) num = 10;
ex) name = 홍길동;
변수이름 = 데이터 값;
ex) num = 10;
ex) name = 홍길동;
2줄로 입력하지 않고 1줄로 데이터를 주는 방법
데이터 타입 변수이름 = 데이터 값;
ex) int num = 10;
ex) String name = 홍길동;
데이터 타입
컴퓨터도 10인 영역에 2만 사용하면 영역을 낭비하는 일이 발생한다.
그 영역 낭비를 방지하고 효율적으로 사용하기 위해서 데이터 타입이 나뉘어진다.
기본형 데이터 타입
정수형
byte | 8비트(1byte) 범위 : ( -128 ~ 127 ) | |||
short | 16비트(2byte) 범위 : ( -32768 ~ 32767 ) | |||
int | 32비트(4byte) | |||
long | 64비트(8byte) |
// 1byte = 8bit
byte var1;
var1 = 127;
System.out.println(Byte.MAX_VALUE); // 127 출력
System.out.println(Byte.MIN_VALUE); // -128 출력
short var2 = 20; // short 2byte 정수 기억 -32768 ~ 32767
// short var22 = 222222; // short 범위를 벗어나기 때문에
System.out.println("var2 : " + var2);
int var3 = 2147483647; // int 4byte 정수 기억 -2147483648 ~ 2147483647
// int var33 = 21474836477; // int 범위를 벗어나기 떄문에 컴파일 오류
System.out.println("var3 : " + var3);
long var4 = 8999999999999999999L;
System.out.println(Long.MAX_VALUE); // long형의 최대값이 출력
System.out.println("var4 : " + var4); // var4에 89999999999를 준 값 출력
|
여기서 각 타입의 최대값과 최소값을 보고 싶다면
데이터 타잊 | 최소값 | 최대값 |
byte | Byte.MIN_VALUE | Byte.MAX_VALUE |
short | Short.Min_VALUE | Short.MAX_VALUE |
int | Integer.MIN_VALUE | Integer.MAX_VALUE |
long | Long.MIN_VALUE | Long.MAN_VALUE |
형변환
//promotion : 자동 형변환(작은기억장소 -> 큰 기억장소)
//cast : 강제 형변환(큰기억장소 -> 작은기억장소)
byte b1 = (byte)128;
System.out.println("b1 : " + b1);
int b2 = 10;
byte b3 = (byte)b2; // cast : 강제 형변환
// 변수 형태만 본거기 때문에 int가 들어가면 byte보다 큰값도 있으므로
// 실제 값은 byte형을 충족하여도 오류가 뜬다
// int형으로 충족시키고 싶다면 (byte)b2 를 기입하여야함
System.out.println("b3 : " + b3);
short s1 = 10;
int i1 = s1; // promotion : 자동 형변환
System.out.println("i1 : " + i1);
|
실수형
float | 32비트(4byte) |
double | 64비트(8byte) |
double d1 = 10.5;
d1 = 5; // 실수형의 저장장소가 정수형 저장장소의 크기보다 크다
System.out.println("d1 : " + d1); // 5.0 출력
float f1 = (float)4.5; // 또는
float f11 = 4.5F; // 로 입력해주어야한다.
f1 = 5.1F; // 왜냐하면 (float)또는 F를 생략하면 double로 읽기때문이다.
System.out.println("f1 : " + f1); // 5.1 출력
|
실수형도 정수형과 마찬가지로 최소값과 최대값을 보고싶다면
데이터 타입 | 최소값 | 최대값 |
float | Float.MIN_VALUE | Float.MAX_VALUE |
double | Double.MIN_VALUE | Double.MAX_VALUE |
Boolean형
Boolean | true 또는 false 출력 |
boolean bu = true; // true 또는 false
boolean bu1 = false;
System.out.println("bu : " + bu); // true 출력
System.out.println("bu1 : " + bu1); // false 출력
|
char 형
char | 16비트, 유니코드(0~65535) 출력 |
char c1= 'a';
char c11 = 'A';
System.out.println("c1 : " + c1); // a 출력
System.out.println("c11 : " + c11); // A 출력
System.out.println((int)c1); // 97 출력
System.out.println((char)97); // a 출력
|
(int)c1이 왜 97일까 ? (char)97이 왜 a 일까?
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
아스키 코드 - 나무위키
UTF-8의 경우 ASCII 영역은 그대로 1바이트를 사용하기 때문에 호환이 된다. 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 BOM까지 없다면 그냥 ASCII 문서와 다를 게 없다. 하지만 UTF-16은 2바이트에서 시작하기 때문에 서로 호환이 되지 않는다. 이 때문에 UTF-16에서 ASCII 문자를 나타낼 때는 앞에 0x00이 붙는다. 예를 들어 A라는 글자를 표현하려면, ASCII나 UTF-8에서는 0x41이라
namu.wiki
해당 글을 참고하면 도움이 될 것 같다. 아스키 코드를 활용해서 hex 16진수와 octal 8진수 값도 한번 출력해보았다.
// hex 16진수
System.out.println(0xa); // 10 출력
System.out.println(0xf); // 15 출력
// octal 8진수
System.out.println(05); // 5 출력
System.out.println(011); // 9 출력
|
위 나무위키 링크에 있는 값과 예시 출력 값을 비교하면 같은 것을 알 수 있다.
참조형데이터타입
기본형 데이터 타입을 제외한 데이터 타입
String irum = "홍길동";
// 어딘가의 주소해 홍길동이라는 이름이 있고 그것을 irum이 참조하는 것
System.out.println(irum);
|
'JAVA > JAVA' 카테고리의 다른 글
6 - 클래스 ( class ) (0) | 2020.03.03 |
---|---|
5 - 배열(Arrary) (0) | 2020.03.03 |
4 - 조건문 if & switch (0) | 2020.03.03 |
3 - 반복문 for & while (0) | 2020.03.03 |
2 - 연산자 (0) | 2020.03.03 |