organize/자바

Java Chapter 2 타입과 연산자

001cloudid 2023. 12. 3. 14:38
728x90

2. 타입

2-1 변수(variable)

데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미하며 저장된 값은 변경될 수 있다.

 

변수의 이름 생성 규칙

  1. 영문자, 숫자, _, $로만 구성할 수 있다.
  2. 숫자로 시작할 수 없다.
  3. 공백을 포함할 수 없다.
  4. 자바에서 미리 정의된 키워드는 사용할 수 없다.

변수의 종류

변수는 기본형(primitive type) 변수와 참조형(reference type) 변수로 구분되며,

기본형 변수는 실제 연산에 사용되는 변수이다.

기본형 변수는 정수형, 실수형, 문자형, 논리형으로 구분되며,

참조형 변수는 기본형 변수를 사용하여 사용자가 직접 만들어 사용하는 변수를 의미한다.

2-2 상수(Constant)

변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미하며,

변수와 차이점은 프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없다는 점이다.

상수는 선언과 동시에 반드시 초기화해야한다.

※상수의 이름은 일반적으로 모두 대문자를 사용하여 선언한다.

2-3 리터럴(literal)

값을 의미한다. 즉 변수와 상수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름으로 가지고 있지 않다.

접미사

실수형이나 정수형을 사용하면 실수형은 double로, 정수형은 int로 인식할 것이다.

하지만 실수형 리터럴 뒤에 F를, 정수형 리터럴 뒤에 L을  추가하하면 각각 float형 long형으로 인식한다.

//리터럴
float x = 3.14F;
long y = 12345L;

 

2-4 타입 변환

하나의 타입을 다른 타입으로 바꾸는 것, boolean형을 제외한 나머지 기본 타입 간의 타입 변환을 자유롭게 수행할 수 있다.

 

다른 타입끼리의 연산은 피연산자들끼리 모두 같은 타입으로 만든 후 수행된다.

메모리에 할당받은 바이트의 크기가 상대적으로 작은 타입에서 큰 타입으로의 변환은 생략할 수 있다.

하지만 메모리에 할당받은 바이트의 크기가 큰 타입에서 작은 타입으로의 타입 변환은 데이터의 손실이 발생한다.

따라서 상대적으로 바이트의 크기가 작은 타입으로 타입 변환을 할 경우 오류를 발생시킨다.

 

묵시적 타입 변환(자동 타입 변환, implicit conversion)

대입 연산이나 산술 연산에서 컴파일러가 자동으로 수행해주는 타입 변환을 가리킨다. 데이터의 손실이 발생하지 않거나, 데이터의 손실이 최소화되는 방향으로 묵시적 타입 변환을 진행한다.

double num1 = 10.0;
double num2 = 3.0f + 3.14;
System.out.println(num1);
System.out.println(num2);
10.0
6.140000000000001

 

명시적 타입 변환(강제 타입 변환, explicit conversion)

사용자가 타입 캐스트 연산자() 를 사용하여 강제적으로 수행하는 타입 변환을 가르킨다.

(변환할타입) 변환할데이터

변환시키고자 하는 데이터의 앞에는 괄호를 넣고, 그 괄호 안에 변환할 타입을 적는다. 이 괄호를 타입 캐스트(type cast) 연산자라고 한다.

int num1 = 2, num2 = 8;
double result1 = num1 / num2;
double result2 = (double) num1 / num2;

System.out.println(result1);
System.out.println(result2);
0.0
0.25

 

3. 연산자(operator)

3-1 산술연산자

사칙연산을 다루는 연산자

3-2 대입연산자

변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽이다.

=, +=, -=, *=, /=,...

3-3 증감연산자

피연산자를 1씩 증감시킬 때 사용하는 연산자이다. 피연산자가 단 하나뿐인 단항 연산자이다.

++a, --a : 먼저 피연산자의 값을 1 증감시킨 후 해당 연산을 진행한다.

a++, a-- : 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 증감시킴

int a = 10;
int b = 10;

System.out.println(++a); //11
System.out.println(a);//11
System.out.println(a++);//11
System.out.println(a);//12
System.out.println(--b); //9
System.out.println(b); //9
System.out.println(b--);//9
System.out.println(b); //8
11
11
11
12
9
9
9
8

 

증감연산자의 연산순위

int a = 10;
int b = a-- + 5 + --a;
System.out.println(a);
System.out.println(b);
8
23

그림 1. 연산순서. 출처:TCPSCHOOL

3-4 비교연산자

피연산자 사이의 상대적인 크기를 판단하는 연산자

3-5 논리연산자

주어진 논리식을 판단하여, 참(true)와 거짓(false)을 결정하는 연산자이다.

 

그림 2. Truth table. 출처:startertutorials

3-6 삼항 연산자

유일하게 피연산자를 세 개를 이용하는 조건 연산자이다.

(조건식)? 반환값1 : 반환값2;

 

조건식이 참이면 반환값 1을 반환하고, 거짓이면 반환값 2를 반환한다.

 

참고 및 출처 : TCPSCHOOL, Startertutorials

728x90