우리가 학교 사물함에 뭐를 넣어놨다가 필요할때 빼고 하는것을 프로그래밍의 가장 기본 동작이라고

보면 된다

 

사물함이 메모리가 되고

사물함 번호가 변수라 보면 된다

 

데이터를 저장하기 위해 생성된 메모리 공간은 목적에 따라 크기와 특징이 다른데 이를 자료형 이라고 한다

 

즉 메모리 공간의 자료형에 따라 저장할 수 있는 값의 종류와 특징이 결정된다

 

 

변수, 상수, 메서드 이름 지을때 꼭 지켜야 할 사항들이다

- 영문 대소 문자와 한글을 사용할 수 있다

- 특수 문자는 밑줄 _ , 달러 $ 표시만 사용할 수 있다

- 아라비아 숫자를 사용할 수 있다, 단 첫 글자로는 사용 못한다

- 자바에서 사용하는 예약어는 사용할 수 없다

 

 

권장 사항들이다

- 영문 소문자로 시작하기

- 영문 단어를 2개 이상 결합 할때는 새로운 단어 첫글자는 대문자로 (낙타표기법 : camel case)

- 상수 이름은 모두 대문자로 하고 밑줄_ 을 사용해서 분리한다

- 메서드 지을때 변수명일때와 같다

 

 

자료형은 기본 자료형, 참조 자료형으로 나뉜다

 

기본 자료형 : 각 자료형마다 다름, 모두 소문자로

- boolean

- byte, short, int, long

- float, double

- char

 

참조 자료형 : 저장값이 객체(Object), 모두 대문자로

- 배열, 클래스, 인터페이스

- 기본 자료형이 아닌 모든것

 

이렇게 구분하는 이유는 값 저장 방식이 서로 다르기 때문이다

 

 

메모리 구조를 보면 3가지로 나뉘는데

1) 클래스 영역, 정적 영역, 상수 영역, 메서드 영역

 

2) 스택 영역

변수들이 저장되는 공간

 

3) 힙 영역

객체들이 저장되는 공간

 

 

모든 변수는 스택영역에 생성되지만

 

기본 자료형은 생성된 공간에 실제 변숫값을 저장하고

 

참조 자료형은 생성된 공간에 실제 변숫값이 자장된 힙 메모리의 위치값을 저장한다

셀제 데이터는 힙메모리에 저장되는거라 보면된다

 

대입연산자 = 를 기준으로 양쪽의 자료형이 똑같아야한다

 

직접 작성한 값을 리터럴 이라고 하는데 만약 3을 쓰면 이걸 넣을 수 있는 자료형이

 

4개나 있어서 컴파일러는 해당 값의 자료형을 그중 하나로 정해야 한다

 

또한 작은 자료형을 큰 자료형에 대입하면 컴파일러가 자동 타입 변환을 수행하기에

 

long = int 의 형태를 결국 long = long 으로 변환해 준다

 

 

char 같은 경우 char a = 'A'; 라고 저장을 해도 메모리에는 2진수 값만 저장할 수 있기에

유니코드 값으로 저장된다 그래서 유니코드를 직접 입력해 줘도 문자값이 나온다

char a = 'A'; == char a = 65;

char b = '3'; == char b = 51;

 

 

작은 자료형을 큰 자료형에 담으면 컴파일러가 자동으로 타입을 변환 이것을 업캐스팅 이라고 한다

자동 형변환의 예시로 모든 정수 리터럴값은 int 자료형으로 인식된다

 

큰 자료형을 작은 자료형에 대입하는 행위를 다운캐스팅 이라고한다

이때는 데이터 손실이 발생할 수 있으니 자동 형변환은 일어나지 않는다

개발자가 직접 명시적으로 타입 변환을 수행해 줘야한다

byte < short < char < int < long < float < double 순으로 커진다

byte A = (byte)128;

int B = (int)3.5;

 

* 정수형을 타입 변환할 때 나타나는 서큘러 구조로 인해서 정수형 자료형을 작은 범위의 자료형으로

캐스팅 할때는 범위의 반대쪽 끝부터 다시 시작하기 때문에

정수값 128을 byte 자료형으로 다운 캐스팅시 -128이 출력된다

 

기본 자료형 끼리는 연산이 가능하다 byte나 short는 어떤 식으로 합치든 int가 나온다

CPU에서 연산 최소 단위가 int이기 때문이다

이 외에는 큰 자료형에 자동형변환된다 int + long 이면 long을 반환한다