티스토리 뷰
저를 포함한 초보자 분들에게 도움이 됐으면 좋겠습니다.
초보자 분들은 수박 겉핥기 식으로 알고 넘어가지 마시고, 조금이라도 왜 이렇게 프로그램이 돌아가는지알고 가시는 시간이 됐으면 좋겠습니다.
자! 오늘은 프로그래밍에 없어서는 안 될 자료형편입니다.
그럼 자료형이란 무엇일까요??
int, char, float, double, boolean ... 등등 '자료'의 '형태'를 나타내는 겁니다.
int는 정수라는 자료를 저장하겠다. char는 문자라는 자료를 저장하겠다.... 를 나타내는 거죠.
그럼 자료형이 왜 필요할 까요??
어떠한 정보인지 알려주기 위함이라고 생각합니다.
자, 예를 들어 제가 필기체로 '0'를 써놨습니다. 그럼 이게 숫자0을 뜻하나요 문자o을 뜻하나요?
질문을 받은 여러분들은 완벽하게 설명할 수 없습니다. 틀릴 수도 있고 맞을 수도 있죠.
또, 알맞은 저장공간을 할당 시키기 위해서 입니다.(char 와 int의 할당 저장공간이 다름)
(1) public static void main(String[] args) throws IOException { Character k = new Character('0'); Integer a = new Integer(0); System.out.println(k.BYTES); System.out.println(a.BYTES); }제가 필기체'0'은 '문자 자료형이다'라고 알려주게 된다면, 숫자와 문자 사이의 애매함이 없어질 뿐더러, 할당해야하는 저장 공간을 줄 일 수 있습니다.
(1)코드를 보시죠. 코드의 결과는 2,4 가 나옵니다. char는 2바이트 저장 공간, int는 4바이트 저장 공간을 가집니다. 자료형을 선언함으로써 2바이트 저장 크기를 아끼게 되는 셈이죠.
이러한 애매함을 없애고 적절한 저장 공간 확보하기 위해 여러가지 자료형이 존재한다고 필자는 생각합니다.
간단하게 말해, 자료형은 어떤 형태의 자료가 들어갈지 알려주는 지표 역할을 한다고 생각하시면 됩니다.
자, 기본적인 자료형에 대한 설명은 끝이 났습니다.
이제부턴 기본 자료형 vs 참조 자료형에 대해서 알아 보도록 하겠습니다.
기본 자료형부터 알아보도록 하겠습니다.
기본 자료형의 형태는 다음과 같습니다. < '자료형 변수명 = 값' > 이처럼 사용하게 되죠.
대개 int, char, boolean, long, short... 가 있습니다. (String은 제외입니다.)
기본 자료형은 변수안에 '값'을 넣게 됩니다.
예를 들어 int k = 3;이라 하면, k는 3을 넣게됩니다. 당연한 소리죠.
하지만 참조 자료형은 그렇지 않습니다.
참조 자료형은 이름에서도 알 수 있듯이 '참조'를 하게 됩니다.
참조 자료형이란, 값을 가지고 있는 '위치'(객체의 위치)를 나타내는 해쉬코드를 가지고 있는겁니다.
즉 실제 값에 접근 할 수 있는 객체의 위치를 변수에 가지고 있는 겁니다.
< '자료형 변수명 = new 자료형(~~)' > 대게 이처럼 사용 되죠.
대표적인 참조 자료형은 Array(배열)이 있습니다.
(2)public static void main(String[] args) throws IOException { int[] k = new int[]{0}; System.out.println(k); }
(2) 코드를 봅시다.
int 정수형으로 한개의 값을 가지는 배열을 만들어 0 하나를 넣었습니다.
그리고선 k를 출력해 보았습니다. 출력 결과는 어떻게 나올까요? 0이 나올까요? 아닙니다.
'[I@424c0bc4'이란 값이 나왔습니다. 424c0bc4를 값으로 가지고 있다는 것입니다.
424c0bc4가 뭘까요? k배열에 저장된 0에 접근하기 위해선 배열k라는 객체에 접근을 해야 합니다.
이 객체에 접근하기 위한 값이 해시코드값이라 생각하시면 됩니다.
이 해시코드값을 이용하여 객체에 접근한 후 0이 저장된 메모리로 접근할 수 있는것이죠.
기본 자료형과 참조 자료형을 판단하는 방법은 아주 쉽습니다.
변수명. 을 했을 경우 사용 할 수 있는 메소드가 있다? 라면 참조 자료형이라 생각하시면 됩니다.
아주 쉽게 구분 할 수 있죠. 하지만 가장 중요한 점은 아무래도 참조 자료형 변수는 실제 값을 가지는것이 아닌 hashcode(객체의 위치)라는 중간단계를 걸쳐야만 실제 값이 저장되있는 메모리에 접근 할 수 있다는 것을 아셨으면 합니다,
자료형은 코드적으론 뜯어볼 것은 많이 없었던 것 같습니다. 하지만 자료형에 대해서 알아가는 시간 되셨으면 좋겠습니다.
다음은 클래스에 대해서 올리도록 하겠습니다!
'JAVA' 카테고리의 다른 글
[JAVA]3-1. 자바 뜯어보기 - 입력처리(StringTokenizer) (0) | 2018.08.28 |
---|---|
[JAVA]5. 자바 뜯어보기 - 클래스편 (0) | 2018.08.28 |
[JAVA]3. 자바 뜯어보기 - 입력편(BufferedReader) (0) | 2018.08.25 |
[JAVA]2. 자바 뜯어보기 - 입력편(Scanner) (0) | 2018.08.25 |
[JAVA]1. 자바 뜯어보기 - 출력편 (0) | 2018.08.25 |
- Total
- Today
- Yesterday
- python
- V11
- 도커
- 초보자
- GIT
- 오류
- 알고리즘
- YOLO
- c3k2
- 딥러닝
- 어탠션
- 정리
- github
- 이미지
- java
- 백준
- 티스토리챌린지
- DeepLearning
- 뜯어보기
- 디텍션
- YOLOv8
- GNN
- 자바
- 욜로
- 깃
- Tree
- CNN
- docker
- yolov11
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |