Java 변수, 데이터 타입
변수
변하는 수
int number : 변수
상수
변하지 않는 수
final int number : 상수
final을 쓰면 상수가 되면서 한 번 저장한 값은 바뀌지 않는다.
상수에는 변하지 않는 수 를 저장 하면 됨 EX) PI -- 파이 : 3.14
선언
int number : 변수 선언
초기화
1. int number = 10; : 변수에 값을 저장(초기화)
2. int number = 12; number = 10; : 변수는 값 바꿀 수 있음 O
3. final int number = 12; number = 11; : 상수는 불가능 함 X
기본형
실제 값을 저장
Strack영역에 저장
boolean : 논리형 변수
true, false 2개의 값만 넣을 수 있음
char : 문자형 변수 (' 따옴표 사용 ')
' A ' , ' 1 '
문자 하나만 저장할 수 있음
문자 뒤에 \0(널문자) 가 없다
1byte만 쓴다
byte > short > int > long : 정수형 변수
숫자를 저장할 수 있음
저장할 수 있는 값의 크기가 왼쪽부터 커짐
1byte > 2byte > 4byte > 8byte
long l = 12039123L
long 은 값 뒤에 접미사 L을 적어야 함
1byte = 8bit
bit = 0과 1을 표현하는 최소단위
byte = -128 ~ 127 (총 256)
byte는 8자리를 가지고 있다
한 자리마다 bit고 한 자리마다 0과 1이 있다
2^8 = 256 = 1byte 가 된다.
float, double : 실수형 변수
실수를 저장할 수 있음
실수는 표현범위가 매우 넓어서 정수형 변수에 담지 못할 수 있다.
float 범위 : 3.4 * 10^38
double 범위 : 1.7 * 10^308
float f = 3.123F
float 은 값 뒤에 접미사 f를 적어야함
1. 고정소수점
뒤에 나올 소수점을 미리 제한해서 쓰는 방식
2.부동소수점
부호와 가수와 지수를 구분해서 저장하고 이 값들을 곱한 값을 저장하는 방식
참조형 = "주소형 변수" 라고도 함
뭔가 복잡한 것 (한번에 저장이 어려운 거)
별도로 저장한 주소값을 따로 참조해서 사용
실제 값이 아닌 원본 값의 주소값을 저장
Heap(동적으로 할당된 메모리 영역) 영역에 원본값이 있음
주소값은 Stack영역에
String : 문자열 변수 (" 큰 따옴표 사용 ")
문장을 저장할 수 있다.
" apple ", " 텍스트 "
몇byte를 쓸 지 몰라서
\0(널문자)가 함께 저장된다.
그 외
Object, Array, List
단일 저장공간에 담을 수 없는 값을 저장
배열
[대괄호 안 에 값이 하나씩 들어가 있음 여러 값을 가질 수 있다]
int[] a = {1,2,3}
래퍼클래스(Wrapper Class)
기본형 변수를 클래스로 한번 감싸는 변수
기본 타입 | 클래스 변수 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
래퍼클래스 사용
int number = 21;
Integer num = new Integer(number); // 옛날 방식 이제는 사용안함
Integer num = number; // 이걸 사용 (박싱)
System.out.println(num.intValue()); // (언박싱)
숫자와 문자
아스키코드
문자를 숫자값으로 저장을 할 때 아스키코드(10진)로 저장이 된다
동적 정적
동정 : 알 수 없을 때
고정되지 않는 값
Heap
정적 : 알 수 있을 때
고정된 값
Stack
형 변환 : 변수 타입을 바꾸는 방법
수동으로 형 변환을 할 때 // 이렇게 수동으로 형 변환을 하게 되면 데이터 값에 손실이 일어남
double or float a = 1010.22;
int number = (int)a;
실수 -> 정수로 바뀌면 소주점 자리는 사라짐
정수 -> 실수
int a = 1010.22;
double or float number = (double or float)a;
byte -> short -> int -> long -> float -> double
순으로 자동 형 변환이 된다.
자동 형 변환이 될 때
byte a = 127;
int number = a; // 자동으로 형변환 됨
char -> int 변환 가능
이렇게 할 때에는 아스키코드로 변환됨
카멜케이스(소문자로 시작 , 단어마다 앞 알파벳을 대문자로)
변수, 함수, 메서드, 속성 등의 이름에 주로 사용.
Ex) byteNumber, javaBasicByteNumber
파스칼케이스(대문자로 시작, 단어마다 앞 알파벳 대문자로)
클래스, 타입, 인터페이스 등의 이름에 주로 사용.
Ex) ByteNumber, JavaBasicByteNumber