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언어에서는 차이를 보인다고 한다.)
- 비트 부정 연산자(~) : 비트 값을 반전시킴
- 산술연산 규칙
- 둘 중 하나가 double이면 둘 다 double로 바꿔준다.
- 둘 중 하나가 float이면 둘 다 float으로 바꿔준다.
- 둘 중 하나가 long이면 둘 다 long으로 바꿔준다.
- 그렇지 않으면 둘 다 int
- 비교연산자(equals) : String변수 비교할 땐 반드시 equals() 사용하기.
String변수를 비교할 때 '=='를 사용하면 주솟값을 비교하게 되어 같은 문자열이라도 false가 출력될 수 있다. 그럴 땐, equals()를 사용해야 정확한 비교를 할 수 있다.
- 논리연산자
- A && B : A와 B가 true일 때 true를 반환
- A || B : A와 B 중 하나라도 true이면 true 반환
논리 연산자를 활용한 연산은 효율적으로 &&를 연산할 때, 앞에 나온 연산이 false면 뒤의 값을 확인하지 않고 false를 산출한다. 또한, ||에서는 앞의 값이 true이면 뒤의 값을 확인하지 않고 true를 확인한다.
'Learning-log > JAVA' 카테고리의 다른 글
배열에서 정렬 없이 최댓값 바로 찾는 문법 (0) | 2023.03.23 |
---|---|
[Java] Comparable, Comparator 알아보기 (0) | 2023.03.23 |
Java - 기초문법(출력문, 주석)(2023-01-16) (0) | 2023.01.19 |
Java - 운영체제와 프로그램, 자료표현 단위(2023-01-16) (0) | 2023.01.19 |
JAVA-Object Class (2022.09.06) (0) | 2022.09.06 |