변수
변수란?
변수란 하나의 값을 저장할 수 있는 메모리 공간이다.
변수의 선언
//자료형 변수명 = 데이터;
int num = 20;
변수의 사용
변수값 저장
- 변수에 값을 저장할 때에는 대입 연산자( = ) 를 사용한다.
- 변수에 직접 입력된 값을 리터럴이라고 부른다.
1. 정수 리터럴 : 10진수, 8진수, 16진수
2. 실수 리터럴 : 소수점이 있는 리터럴
3. 문자 리터럴 : 작은 따옴표( ' )로 묶은 텍스트
4. 문자열 리터럴 : 큰 따옴표( " )로 묶은 텍스트
5. 논리 리터럴 : true와 false
변수값 읽기
변수는 초기화가 되어야 읽을 수 있다.
int value; // 변수 value 선언 (초기화 안 됨)
int result = value + 10; // 컴파일 에러가 발생한다.
변수의 사용 범위
- 변수는 선언된 블록 내에서만 사용이 가능하다.
public static void main(String[] args) {
int var1;
if(...) {
int var2; //var1과 var2 사용 가능
}
for(...) {
int var3; //var1과 var3 사용 가능, var2는 사용 못함
}
//var1 사용 가능, var2와 var3는 사용 못함
}
자료형
1. 기본형
- 메모리의 stack 영역에 변수명과 데이터가 저장한다. "call by value" 형태로 사용한다.
"call by value" 와 "call by reference"의 차이
메소드 호출 방법은 크게 두 가지 있는데, 값에 의한 호출과 참조에 의한 호출이라고도 한다.
Call by Value
장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존이 된다.
단점 : 복사를 하기 때문에 메모리가 사용량이 늘어난다.
Call by Reference
장점 : 복사하지 않고 직접 참조를 하기에 빠르다.
단점 : 직접 참조를 하기에 원래 값이 영향을 받는다. 이에 따른 리스크가 존재한다.
타입별 분류
1. byte 타입
- byte 타입의 메모리 사용 크기 : 1byte
- 최상위 비트는 정수값의 부호를 결정한다. 0이면 양수, 1이면 음수
2. char 타입
- 자바는 모든 문자를 유니코드로 처리한다.
- 유니코드는 음수가 없기 때문에 char 타입의 변수에는 음수 값을 저장할 수 없다.
- 작은 따옴표(' ')로 감싼 문자를 대입하면 해당 문자의 유니코드가 저장된다.
char c = 'A'; //문자 A
char c = 65; //10진수로 65
char c = '\u0041'; //16진수로 0x41, 유니코드로'\u+16진수값'표기
int uniCode = c; //유니코드를 알고 싶다면 int형으로 변환
char c = ''; //컴파일 에러
char c = ' '; //공백(유니코드32) 하나를 포함해서 초기화해야 한다.
3. short 타입
- C언어와 호환을 위해 사용하나 비교적 자바에서는 잘 사용되지 않는다.
4. int 타입
- 정수 연산을 위한 기본 타입이다.
- 정수값을 직접 코드에서 입력할 경우 8진수, 10진수, 16진수로 표현할 수 있다.
int number = 10 //10진수
int octNumber = 012; //8진수, '0'을 붙임
int hexNumber = 0xA; //16진수, '0x'를 붙임
5. Long타입
- 정수값 뒤에 소문자 ' l '이나 대문자 ' L '을 붙인다.
long var3 = 1000000000000; // 컴파일 에러
long var3 = 1000000000000L;
6. float 타입
- 부호 + 지수 + 가수 = 4byte
- 리터럴 뒤에 소문자 ' f ' 나 대문자 ' F '를 붙여야 한다.
7. double 타입
- 8byte
- 실수 리터럴의 기본 타입이다.
8. boolean 타입
- 논리값을 저장한다. (true, false)
참조형
- 객체참조형, 메모리의 힙 영역에 데이터가 저장되고, 스택 영역에 변수명과 주소값이 저장한다. "Call by Reference" 형태로 사용한다.
- 종류 : 클래스, 배열, 열거, 인터페이스
타입 변환
- 데이터 타입을 다른 타입으로 변환하는 것.
- 종류
1. 자동 타입 변환 -> 업캐스팅
2. 강제 타입 변환 -> 다운 캐스팅
자동 타입 변환
큰 크기 타입 = 작은 크기 타입;
강제 타입 변환
작은 크기 타입 = (작은 크기 타입)큰 크기 타입;
연산자
연산이란?
- 데이터를 처리하여 결과를 산출하는 것
- 연산자란 연산에 사용되는 표시나 기호 (+, -, .....)
- 피연산자 : 연산 대상이 되는 데이터(리터럴, 변수)
- 연산식
- 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
- 반드시 하나의 값을 산출한다. 두 개 이상의 값을 산출할 수 없다.
단항 연산자: ++y;
이항 연산자: x + y;
삼항 연산자: (sum>90) ? "A" : "B";
int result = x + y;
boolean result = (x+y) < 5;
연산의 방향과 우선순위
- 연산자의 우선 순위에 따라 연산된다.
- 동일한 우선 순위의 연산자는 연산의 방향이 존재한다.
단항 연산자
- 피연산자가 단 하나뿐인 연산자를 말한다.
부호 연산자
- boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능.
- 부호 연산자의 산출 타입은 int
증감 연산자
- 변수의 값을 1 증가 시키거나 1 감소 시키는 연산자.
- 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리
논리 부정 연산자( ! )
- Boolean 타입에서만 사용 가능.
비트 반전 연산자( ~ )
- 정수 타입만 피연산자가 될 수 있다.
- 비트값을 반전시킨다.
- 산출 타입은 int 타입이 된다.
이항 연산자
피연산자가 두 개인 연산자를 말한다.
산술 연산자
- boolean 타입을 제외한 모든 기본 타입에 사용 가능
산술 연산자의 특징
1. 오버플로우 탐지
- 산출 타입으로 표현할 수 없는 값이 산출되었을 경우, 오버플로우가 발생하고 쓰레기값(엉뚱한 값) 을 얻을 수 있다.
2. 정확한 계산은 정수 사용
- 부동소수점 타입은 0.1을 정확히 표현할 수 없어 근사치로 처리한다.
3. NaN과 Infinity 연산
- 0으로 나누면 컴파일은 정상적으로 되지만, 실행 시 ArithemeticExeption이 발생한다.
- 실수 타입인 0.0 또는 0.0f 로 나누면 예외가 발생하지 않고, / 연산의 결과는 Infinity(무한대) 값을 가지며, % 연산의 결과는 NaN을 가진다.
- / 와 % 연산의 결과가 무한대 또는 NaN인지 확인하려면 Double.isInfinite()와 Double.isNaN() 메소드를 이용하면 된다.
4. 입력값의 NaN 검사
문자열 연결 연산자( + )
- 피연산자 중 문자열이 있으면 문자열로 결합.
- 문자열과 숫자가 혼합된 + 연산식은 왼쪽에서부터 오른쪽으로 연산이 진행된다.
비교 관계 연산자
- 대소 또는 동등 비교해 boolean 타입인 true/false 산출
- 동등 비교 연산자는 모든 타입에 사용한다. 크기 비교 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용한다.,
- 흐름 제어문인 조건문(if), 반복문(for, while) 에서 주로 이용 -> 실행 흐름을 제어할 때 사용한다.
- String 타입인 문자열의 값을 비교할 때에는 ==연산자 대신에 equals 메소드를 사용해야 한다.
논리 연산자(&&, ||, &, |, ^, !)
- 논리곱, 논리합, 배타적 논리합, 논리부정 연산 수행
- 피연산자는 boolean 타입만 사용 가능
비트 연산자(&, |, ^, ~, <<, >>, >>>)
- 비트 단위로 연산하므로 0과 1이 피연산자
-- 0과 1로 표현이 가능한 정수 타입만 비트 연산 가능
--실수 타입인 float과 double은 비트 연산 불가
- 종류
--비트 논리 연산자(&, |, ^, ~)
--비트 이동 연산자(<<,>>,>>>)
1. 비트 논리 연산자
- 피 연산자가 boolean 타입일 경우 일반 논리 연산자.
- 피연산자가 정수 타입일 경우 비트 논리 연산자로 사용
- 비트 연산자는 피연산자를 int 타입으로 자동 타입 변환 후 연산을 수행한다.
2. 비트 이동 연산자
- 정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산을 수행한다.
대입 연산자
- 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장한다.
- 모든 연산자들 중 가장 낮은 연산 순위 -> 제일 마지막에 수행
- 종류 : 단순 대입 연산자, 복합 대입 연산자( 정해진 연산을 수행한 후 결과를 변수에 저장 )
삼항(조건) 연산자
- 세 개의 피연산자를 필요로 하는 연산자
- 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식

'교육 | 외부활동 > 이론_JAVA' 카테고리의 다른 글
KH자바수업_6_배열 (0) | 2022.11.10 |
---|---|
KH자바수업_5_클래스와 객체 2 (0) | 2022.11.09 |
KH자바수업_4_생성자 (0) | 2022.11.09 |
KH자바수업_3_클래스와 객체 (0) | 2022.11.08 |
KH자바수업_2_제어문, 반복문 (0) | 2022.11.08 |
변수
변수란?
변수란 하나의 값을 저장할 수 있는 메모리 공간이다.
변수의 선언
//자료형 변수명 = 데이터;
int num = 20;
변수의 사용
변수값 저장
- 변수에 값을 저장할 때에는 대입 연산자( = ) 를 사용한다.
- 변수에 직접 입력된 값을 리터럴이라고 부른다.
1. 정수 리터럴 : 10진수, 8진수, 16진수
2. 실수 리터럴 : 소수점이 있는 리터럴
3. 문자 리터럴 : 작은 따옴표( ' )로 묶은 텍스트
4. 문자열 리터럴 : 큰 따옴표( " )로 묶은 텍스트
5. 논리 리터럴 : true와 false
변수값 읽기
변수는 초기화가 되어야 읽을 수 있다.
int value; // 변수 value 선언 (초기화 안 됨)
int result = value + 10; // 컴파일 에러가 발생한다.
변수의 사용 범위
- 변수는 선언된 블록 내에서만 사용이 가능하다.
public static void main(String[] args) {
int var1;
if(...) {
int var2; //var1과 var2 사용 가능
}
for(...) {
int var3; //var1과 var3 사용 가능, var2는 사용 못함
}
//var1 사용 가능, var2와 var3는 사용 못함
}
자료형
1. 기본형
- 메모리의 stack 영역에 변수명과 데이터가 저장한다. "call by value" 형태로 사용한다.
"call by value" 와 "call by reference"의 차이
메소드 호출 방법은 크게 두 가지 있는데, 값에 의한 호출과 참조에 의한 호출이라고도 한다.
Call by Value
장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존이 된다.
단점 : 복사를 하기 때문에 메모리가 사용량이 늘어난다.
Call by Reference
장점 : 복사하지 않고 직접 참조를 하기에 빠르다.
단점 : 직접 참조를 하기에 원래 값이 영향을 받는다. 이에 따른 리스크가 존재한다.
타입별 분류
1. byte 타입
- byte 타입의 메모리 사용 크기 : 1byte
- 최상위 비트는 정수값의 부호를 결정한다. 0이면 양수, 1이면 음수
2. char 타입
- 자바는 모든 문자를 유니코드로 처리한다.
- 유니코드는 음수가 없기 때문에 char 타입의 변수에는 음수 값을 저장할 수 없다.
- 작은 따옴표(' ')로 감싼 문자를 대입하면 해당 문자의 유니코드가 저장된다.
char c = 'A'; //문자 A
char c = 65; //10진수로 65
char c = '\u0041'; //16진수로 0x41, 유니코드로'\u+16진수값'표기
int uniCode = c; //유니코드를 알고 싶다면 int형으로 변환
char c = ''; //컴파일 에러
char c = ' '; //공백(유니코드32) 하나를 포함해서 초기화해야 한다.
3. short 타입
- C언어와 호환을 위해 사용하나 비교적 자바에서는 잘 사용되지 않는다.
4. int 타입
- 정수 연산을 위한 기본 타입이다.
- 정수값을 직접 코드에서 입력할 경우 8진수, 10진수, 16진수로 표현할 수 있다.
int number = 10 //10진수
int octNumber = 012; //8진수, '0'을 붙임
int hexNumber = 0xA; //16진수, '0x'를 붙임
5. Long타입
- 정수값 뒤에 소문자 ' l '이나 대문자 ' L '을 붙인다.
long var3 = 1000000000000; // 컴파일 에러
long var3 = 1000000000000L;
6. float 타입
- 부호 + 지수 + 가수 = 4byte
- 리터럴 뒤에 소문자 ' f ' 나 대문자 ' F '를 붙여야 한다.
7. double 타입
- 8byte
- 실수 리터럴의 기본 타입이다.
8. boolean 타입
- 논리값을 저장한다. (true, false)
참조형
- 객체참조형, 메모리의 힙 영역에 데이터가 저장되고, 스택 영역에 변수명과 주소값이 저장한다. "Call by Reference" 형태로 사용한다.
- 종류 : 클래스, 배열, 열거, 인터페이스
타입 변환
- 데이터 타입을 다른 타입으로 변환하는 것.
- 종류
1. 자동 타입 변환 -> 업캐스팅
2. 강제 타입 변환 -> 다운 캐스팅
자동 타입 변환
큰 크기 타입 = 작은 크기 타입;
강제 타입 변환
작은 크기 타입 = (작은 크기 타입)큰 크기 타입;
연산자
연산이란?
- 데이터를 처리하여 결과를 산출하는 것
- 연산자란 연산에 사용되는 표시나 기호 (+, -, .....)
- 피연산자 : 연산 대상이 되는 데이터(리터럴, 변수)
- 연산식
- 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
- 반드시 하나의 값을 산출한다. 두 개 이상의 값을 산출할 수 없다.
단항 연산자: ++y;
이항 연산자: x + y;
삼항 연산자: (sum>90) ? "A" : "B";
int result = x + y;
boolean result = (x+y) < 5;
연산의 방향과 우선순위
- 연산자의 우선 순위에 따라 연산된다.
- 동일한 우선 순위의 연산자는 연산의 방향이 존재한다.
단항 연산자
- 피연산자가 단 하나뿐인 연산자를 말한다.
부호 연산자
- boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능.
- 부호 연산자의 산출 타입은 int
증감 연산자
- 변수의 값을 1 증가 시키거나 1 감소 시키는 연산자.
- 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리
논리 부정 연산자( ! )
- Boolean 타입에서만 사용 가능.
비트 반전 연산자( ~ )
- 정수 타입만 피연산자가 될 수 있다.
- 비트값을 반전시킨다.
- 산출 타입은 int 타입이 된다.
이항 연산자
피연산자가 두 개인 연산자를 말한다.
산술 연산자
- boolean 타입을 제외한 모든 기본 타입에 사용 가능
산술 연산자의 특징
1. 오버플로우 탐지
- 산출 타입으로 표현할 수 없는 값이 산출되었을 경우, 오버플로우가 발생하고 쓰레기값(엉뚱한 값) 을 얻을 수 있다.
2. 정확한 계산은 정수 사용
- 부동소수점 타입은 0.1을 정확히 표현할 수 없어 근사치로 처리한다.
3. NaN과 Infinity 연산
- 0으로 나누면 컴파일은 정상적으로 되지만, 실행 시 ArithemeticExeption이 발생한다.
- 실수 타입인 0.0 또는 0.0f 로 나누면 예외가 발생하지 않고, / 연산의 결과는 Infinity(무한대) 값을 가지며, % 연산의 결과는 NaN을 가진다.
- / 와 % 연산의 결과가 무한대 또는 NaN인지 확인하려면 Double.isInfinite()와 Double.isNaN() 메소드를 이용하면 된다.
4. 입력값의 NaN 검사
문자열 연결 연산자( + )
- 피연산자 중 문자열이 있으면 문자열로 결합.
- 문자열과 숫자가 혼합된 + 연산식은 왼쪽에서부터 오른쪽으로 연산이 진행된다.
비교 관계 연산자
- 대소 또는 동등 비교해 boolean 타입인 true/false 산출
- 동등 비교 연산자는 모든 타입에 사용한다. 크기 비교 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용한다.,
- 흐름 제어문인 조건문(if), 반복문(for, while) 에서 주로 이용 -> 실행 흐름을 제어할 때 사용한다.
- String 타입인 문자열의 값을 비교할 때에는 ==연산자 대신에 equals 메소드를 사용해야 한다.
논리 연산자(&&, ||, &, |, ^, !)
- 논리곱, 논리합, 배타적 논리합, 논리부정 연산 수행
- 피연산자는 boolean 타입만 사용 가능
비트 연산자(&, |, ^, ~, <<, >>, >>>)
- 비트 단위로 연산하므로 0과 1이 피연산자
-- 0과 1로 표현이 가능한 정수 타입만 비트 연산 가능
--실수 타입인 float과 double은 비트 연산 불가
- 종류
--비트 논리 연산자(&, |, ^, ~)
--비트 이동 연산자(<<,>>,>>>)
1. 비트 논리 연산자
- 피 연산자가 boolean 타입일 경우 일반 논리 연산자.
- 피연산자가 정수 타입일 경우 비트 논리 연산자로 사용
- 비트 연산자는 피연산자를 int 타입으로 자동 타입 변환 후 연산을 수행한다.
2. 비트 이동 연산자
- 정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산을 수행한다.
대입 연산자
- 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장한다.
- 모든 연산자들 중 가장 낮은 연산 순위 -> 제일 마지막에 수행
- 종류 : 단순 대입 연산자, 복합 대입 연산자( 정해진 연산을 수행한 후 결과를 변수에 저장 )
삼항(조건) 연산자
- 세 개의 피연산자를 필요로 하는 연산자
- 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식

'교육 | 외부활동 > 이론_JAVA' 카테고리의 다른 글
KH자바수업_6_배열 (0) | 2022.11.10 |
---|---|
KH자바수업_5_클래스와 객체 2 (0) | 2022.11.09 |
KH자바수업_4_생성자 (0) | 2022.11.09 |
KH자바수업_3_클래스와 객체 (0) | 2022.11.08 |
KH자바수업_2_제어문, 반복문 (0) | 2022.11.08 |