본문 바로가기
Learning-log/JAVA

Java - 기본문법 (변수, 자료형, 형변환, 연산자)

by why제곱 2023. 2. 15.

1. 변수


 

- 데이터를 저장할 때 메모리의 위치를 나타내는 이름으로, 메모리 상에 데이터를 보관할 수 있는 공간을 확보한다.

- 적절한 메모리 공간을 마련하기 위해 Java에서는 변수의 타입을 지정해줘야 한다.

- 할당 연산자('=')를 통해 변수에 데이터의 주소를 대입한다.

- Java에서 변수명은 변수 작명 규칙을 따라야 하며, 작명 규치은 아래와 같다.

- 변수 작명 규칙

 

- 자바 예약어 목록

2.  자료형


- Java에서 변수가 선언될 때 반드시 함께 지정되야 하며 변수에 담길 데이터의 종류를 의미한다.

- 변수가 선언될 때 해시맵에 변수에 담길 데이터가 들어갈 메모리 공간을 마련하는데, 이 메모리의 크기를 얼마나 잡아둘 지를 지정해 준다.

- Java에는 기본 자료형과 참조 자료형이 있다.

1) 기본 자료형 : 미리 정해진 크기의 memory size를 표현하며 변수 자체에 값을 저장하는 자료형

 

   - 종류

기본 자료형 기본형  
boolean false 1bit
byte 0 1Byte
char '\u0000' 2Byte
short 0 2Byte
int 0 4Byte
long 0L 8Byte
float 0.0f 4Byte
double 0.0d 8Byte

a) 바이트(byte)

   - 값의 범위 : -128 ~ 127

   - 메모리 절약이 가장 필요한 대형 배열에서 가장 유용하게 사용됨.

   - 차지하는 메모리 공간이 정수의 1/4배이므로 메모리 공간 절약에 도움됨.

b) short 

   - 값의 범위 : -32768 ~ 32767

   - 바이트와 같이 정수에 비해 메모리 공간 절약에 도움이 되어 표현할 수 있는 값의 범위 이내라면 short를 사용하기도 한다. 

 

c) int 

   - 정수를 사용할 때 가장 많이 사용되는 자료형

   - 값의 범위 : -2,147,483,648 (-2의 31제곱) ~ 2,147,483,647(2의 31제곱 -1)

 

d) long 

   - 값의 범위가 정수보다 커서 수의 범위가 큰 알고리즘 문제를 풀 때 주로 사용 중이다.

   - -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-2의 63제곱 ~ 2의 61제곱-1)

 

e) float 

   - 실수를 표현하는 자료형

   - 부동 소수점 방식을 이용하여 값이 정확하지 않은 경우도 있으나, 대신 표현할 수 있는 값위가 매우 커졌다.

   - 값이 정확하지 않은 경우가 있으므로 정확한 값이 요구되는 통화와 같은 곳에는 사용해서는 안 된다.

 

f) double 

   - 가장 일반적으로 사용되는 10진수 실수값 유형

   - float과 같이 부동소수점 방식을 사용

 

g) char

   - 단일 유니코드 문자 자료형

   - 값의 범위 : '\u0000' ~ '\uffff'

 

 

2) 참조 자료형 : 데이터의 크기를 미리 예측할 수 없는 자료형으로, 입력된 데이터 만큼의 메모리 공간을 차지하게 되고 기본 자료형과 달리 변수 자체에 값을 저장하지 않고 해시맵 상의 주소를 기억해와서 변수에 저장한다.

   - Java에서는 String이 참조 자료형에 정의된 유일한 자료형.

   - 그 외에는 class, Object, Enum, Interface 등이 참조 자료형에 해당된다.

 

 

3. 형변환


1) 묵시적 형변환 : 컴파일러에 의해 자동으로 형변환이 이루어지는 것.

   - 아래 사진 처럼 표현 가능한 데이터 범위가 좁은 쪽에서 넓은 쪽으로의 변환만 허용된다.

   - 이 때, long은 8Byte, float는 4Byte라 어떻게 8Byte에서 4Byte로 변환될 수 있는지 의문을 품을 수 있지만, 묵시적 형변환의 기준은 차지하는 메모리의 크기가 아니라 표현 가능한 수의 범위임을 명심하도록 하자.

 

2) 명시적 형변환 : 프로그래머가 명시적으로 형변환 하겠다고 선언해줘야 하는 형변환.

   - 묵시적 형변환과 달리 범위가 큰 쪽에서 작은 쪽으로 형변환을 할 때는 Java 내에서 자동으로 형변환을 해주지 않는다. 형변환을 하다가 기존 데이터의 손실이 발생할 수 있기 때문이다. 따라서 이런 상황에 형변환을 하고자 할 때는 형변환 연산자를 반드시 사용해줘야 한다.

//형변환

int a = (int) 8.0f

4. 연산자


- 전위형 (++a) : 먼저 변수의 값을 변화시키고 사용

- 후위형 (a++) : 변수값을 먼저 사용한 후 변화시킴. => 값을 사용하고 사용한 값을 기억해놨다가 1을 늘려야 하므로 메모리를 전위형보다 아주 조금 더 사용한다.(Java에서는 큰 차이가 없으나 C언어에서는 차이를 보인다고 한다.)

- 비트 부정 연산자(~) : 비트 값을 반전시킴

- 산술연산 규칙

  1.  둘 중 하나가 double이면 둘 다 double로 바꿔준다.
  2. 둘 중 하나가 float이면 둘 다 float으로 바꿔준다.
  3. 둘 중 하나가 long이면 둘 다 long으로 바꿔준다.
  4. 그렇지 않으면 둘 다 int

- 비교연산자(equals) : String변수 비교할 땐 반드시 equals() 사용하기.

String변수를 비교할 때 '=='를 사용하면 주솟값을 비교하게 되어 같은 문자열이라도 false가 출력될 수 있다. 그럴 땐, equals()를 사용해야 정확한 비교를 할 수 있다.

 

- 논리연산자 

  • A && B : A와 B가 true일 때 true를 반환
  • A || B : A와 B 중 하나라도 true이면 true 반환

논리 연산자를 활용한 연산은 효율적으로 &&를 연산할 때, 앞에 나온 연산이 false면 뒤의 값을 확인하지 않고 false를 산출한다. 또한, ||에서는 앞의 값이 true이면 뒤의 값을 확인하지 않고 true를 확인한다.