자료형
- 변수의 유형
- 변수 앞에서 반드시 선언, 변수에 어떤 값을 넣을지 지정
기본형(Primitive Type)
- 논리 - boolean
- 문자 - char
- 숫자
- 정수 - byte, short, int, long
- 실수 - float, double
- 메모리의 Stack공간에 저장 (변수명 : 값)
| Byte | 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| 논리형 | boolean | |||
| 문자형 | char | |||
| 정수형 | byte | short | int | long |
| 실수형 | float | double |
참조형(Reference Type)
- String, 배열, 객체 … 무한대로 생성 가능
- 메모리의 Heap 공간에 변수의 값이 저장됨
- Stack 공간에는 변수명 Heap
변수 선언 예시
boolean aBcD; //논리형, true/false에 넣을 수 있다. default는 false
aBcD = true ;
aBcD = false ;
//aBcD = 10 //오류발생
byte 가나다라 ; //1byte의 데이터만 저장
short $_abcd ; // 특수문자 _, $만 사용가능
//boolean %abcd ; 오류발생
//char 3abcd ; 오류발생
char a3cd ;
long abcd3 ;
// double private ; 오류발생 (자바에서 사용하는 예약어)
// int my work ; 변수명에 공백 사용 불가
String myClassName ; //이어서 여러 단어 적용할 때 단어 앞 대문자 적용(권장)
// 상수 : 값을 넣으면 그 값을 변화하지 못하도록 설정
// 변수 자료형 앞에 final 키가 붙으면 상수
// 상수명은 전체를 대문자 지정 (권장)
double PI = 3.141592 ; //변수 : PI값 변화 가능
System.out.println(PI); //3.141592
PI = 123.456 ;
System.out.println(PI); //123.456
final double PI2 = 3.141592 ; // 상수 : 값을 넣으면 수정할 수 없다.
System.out.println(PI2);
// PI2 = 123.456 ; 상수이므로 다른 값 대입 불가
final int MY_DATA = 10 ;
final float my_data ; //권고사항 위배 : 상수명은 전체를 대문자로 지정해야함.
논리형(boolean) : T/F
boolean bool1 = true; //선언과 동시에 변수 값 할당
boolean bool2;
bool2 = false ;// 선언 후 값 할당
System.out.println(bool1); //true
System.out.println(bool2); //false
문자형(char)
- 영문, 한글, 일본어, 숫자, 특수문자… 한 글자
- 변수의 값을 할당할 리터럴에 ‘ ‘
//1. char 자료형 변수에 직접 문자로 저장하는 방법
char value10 = 'A';
char value11 = 'a';
char value12 = '가';
char value13 = '3';
char value14 = '#';
System.out.println(value10); //A
//2. 정수 값으로 문자를 저장하는 방법 : 아스키코드 값으로 문자를 저장
char value15 = 65 ;
char value16 = 0xac00 ; //0x : 16진수, 0 : 8진수, 0b : 2진수
char value17 = 51 ;
System.out.println(value15); //A
System.out.println(value16); //가
System.out.println(value17); //3
//3. 유니코드로 저장하는 방법 : 전 세계의 모든 글자를 3byte로 저장
char value18 = '\\u0041' ;
char value19 = '\\uac00' ;
char value20 = '\\u0033' ;
System.out.println(value18); //A
System.out.println(value19); //가
System.out.println(value20); //3
// 1. 자바 코드를 사용해서 진법 변환 (10진수, 16진수, 8진수, 2진수)
int data = 13 ;
System.out.println(Integer.toBinaryString(data)); //2진수로 변환
System.out.println(Integer.toOctalString(data)); //8진수로 변환
System.out.println(Integer.toHexString(data)); //16진수로 변환
// 2. 2진수, 8진수, 16진수 => 10진수로 변환
System.out.println(Integer.parseInt("1101", 2)); //13, 2진수
System.out.println(Integer.parseInt("15", 8)); //13, 8진수
System.out.println(Integer.parseInt("d", 16)); //13, 16진수
// 3. 다양한 진법 표현 (0b : 2진수, 0 : 8진수, 0x : 16진수)
System.out.println(0b1101); //13
System.out.println(015); //13
System.out.println(0xd); //13
// 4. 비트 연산자 : 모두 2진법으로 변환해서 각 비트를 연산
//4-1. and (&)
//0&0 = 0, 0&1 = 0, 1&0 = 0, 1&1=1
System.out.println(3 & 10); //2
System.out.println(0b0011 & 0b1010); //2
System.out.println(0x03 & 0x0A); //2
//4-2. or (|)
//0|0 = 0, 0|1 = 1, 1|0 = 1, 1|1 =1
System.out.println(3|10); //11
//4-3. xor (^)
System.out.println(3^10); //9
//4-4. not (~)
//음수는 0을 기준으로 처리 +1
System.out.println(~10); //-11
숫자형
정수
- byte : 1byte
- short : 2byte
- int : 4byte
- long : 8byte
//byte : (1byte = 8bit) -2^7 ~ 2^7-1 : -128 ~ 127
byte value1 = -128 ;
System.out.println(value1);
//short : (2byte = 16bit) -2^15 ~ 2^15-1 : -32,768 ~ 32,767
short value3 = 32767 ;
System.out.println(value3);
//int : (4byte = 32bit) -2^31 ~ 2^31-1 : -2,147,483,648 ~ 2,147,483,647
int value5 = -2147483648 ;
System.out.println(value5);
//long : (8byte = 64bit) -2^63 ~ 2^63-1
//long의 변수에 값을 할당할 때는 l, L을 붙여줘야 한다.
//or not 기본적으로 int형으로 값이 저장됨
long value7 = -100L ;
System.out.println(value7);
실수
- float : 정밀도 7자리(4byte)
- double : 정밀도 15자리 (8byte)
//float : float으로 지정된 변수의 값을 할당할 때 리터럴에 f, F를 명시해야 한다.
float value8 = 1.123456789F;
System.out.println(value8); //1.1234568 :7자리 출력
double value9 = 1.12345678910112345 ;
System.out.println(value9); //1.123456789101123 : 15자리만큼 출력
문자열(String)
- 참조 자료형(객체), 글자수 무관
- 변수의 값을 할당할 리터럴에 “ “
String value21 = "안녕하세요. 오늘의 날씨는 매우 맑습니다"
System.out.println(value21) // 안녕하세요. 오늘의 날씨는 매우 맑습니다