본문 바로가기
BackEnd/Java

JAVA_데이터타입, 힙&스택 데이터

by telecaster0 2021. 4. 19.

오전엔 자바 데이터 타입에 대대해 공부했다.

digit : fixed data type, 고정되어있는값

int : 4 byte

long : 8 byte

short : 2 byte

1byte : 1 byte

character : flexible data type, 가변성이 있는 값

string

digit type은 선언(Delcartion)과 할당(Allocation)이 동시에 일어난다.

ex)

int a; 라는 선언은 4byte만큼의 숫자를 a값으로 사용하겠다는 뜻이다.

 

character type은 값이 주어지지 않으면 선언만 일어난다. 왜? flexible이라 용량을 알 수 없기 때문에. 글자수에 따라 크기가 달라진다는 이야기다.

ex)

String b; => 선언

b= "any". =>이 부분에서 3글자. 즉 6바이트의 용량의 할당이 이루어진다

또한 숫자 연산을할때 데이터타입이 다르다면 데이터 타입을 일치 시켜줘야 한다.

 

ex)

int a=1, int b=2;

int result = (a+b);는 성립 그러나

int a=1, int b=2;

short result = (a+b); <- 이건 에러남. 데이터타입이 달라서

마지막부분을

short result=(short)(a+b);로 정정해주어야 한다

---

또한 이런 데이터 타입을 이해하기 위해선 메모리 개념을 정리해야 함.

Stack=>fixed size data (int, digit..)

Heap=>flexible Size data(string, character.)

int a = 1 로 예를 들자면

데이터타입 변수 = 값(숫자)인데

fixed 된 숫자데이터 1부터 2의 8승까지 변수를 붙여 준다고 생각하면 됨.

1이라는 fixed(고정데이터(숫자 값)에 a라는 스티커, 호칭을 붙여준다고 생각하자.

=은 같다의 개념보다도 오른쪽 값을 왼쪽으로 치환한다. 혹은 계산한다로 생각하자.

-

 

 

오후엔 계산기 만드는 실습을 진행했음.

선언

할당

제어

출력

순으로 코딩을 진행하였고

일단 계산에 필요한것들은 두가지 숫자(int)입력값.

그리고 결과 값 숫자(int)

마지막으로 연산부호 ( +, -, * , /) (String)값을 작성했다.

총 4가지의 값들을 선언 해주고

int num1, num2, result;

(데이터타입은 4바이트 짜리, fixed int이다.)

String operates;

(데이터타입은 8바이트, flexible string이다.)

원하는 값들을 할당해준다.

num1=10; operates="+" num2=20

뒤에 if 조건문을 통해 연산부호 (사칙연산) 결정에 따란 결과값을 지정해준 뒤 출력하면 끝.

그 뒤, 조건문 if는

+입력시 result=num1+num2 아니면 (else)

- 입력시 result=num1-num2 아니면 (else)

* 입력시 result=num1*num2 아니면 (else)

/를입력하는게맞지만 그외 문자,부호가 들어가면 나누기로 계산하기 result=num1/num2로 계산하기

로 요약 할 수있고

 

3개의 조건이 주어진다 가정하였을때

if else의 양식은

if(조건문) {실행문1} {else

if(조건문2) {실행문2} {else {실행문3}

이렇게 정리 할 수 있으며

 

 

조건문 : (operates.equals("부호"))

operates가 부호와 일치할때

결과값 : {result = num1 + num2;} else

result는 num1과 num2의 합이다. 아닐 경우(else)

 

라고 해석해볼 수 있으며 조건에 따라 else뒤에 if문을 다시 기록하면된다.

즉 조건에 따라 복문을 붙여넣게 되고 마지막엔 else문만 기록하면 성립된다.

그리고 마지막에 출력값 result로 지정해주면 끝.!

 

 

명령끝에는 세미콜론 필수!

그리고 중괄호 헷갈리지않게 들여쓰기, 줄바꿈 잘하기. 이는 Ctrl + I 통해서 정렬 가능.