KH자바수업_1_변수와 자료형, 연산자

2022. 11. 8. 15:38· 교육 | 외부활동/이론_JAVA
반응형

변수

변수란? 

변수란 하나의 값을 저장할 수 있는 메모리 공간이다.

변수의 선언

//자료형 변수명 = 데이터;
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
'교육 | 외부활동/이론_JAVA' 카테고리의 다른 글
  • KH자바수업_5_클래스와 객체 2
  • KH자바수업_4_생성자
  • KH자바수업_3_클래스와 객체
  • KH자바수업_2_제어문, 반복문
wn1331
wn1331
반응형
wn1331
JONGHUN
wn1331
전체
오늘
어제
  • 분류 전체보기 (268)
    • Spring (16)
      • Spring Data JPA (0)
      • Spring Security (11)
      • Spring Batch (5)
    • DEV (40)
      • FrontEnd (2)
      • JAVA (5)
      • Git (1)
      • 기타 (6)
      • Network (1)
      • MSA (12)
      • 개발일기 || 트러블슈팅 (5)
      • 행사 || 후기 (3)
      • GraphQL (3)
      • Kotlin (0)
      • Database (2)
    • 코딩테스트 (164)
      • Programmers_LV0 (100)
      • Programmers_LV1 (54)
      • 백준 (8)
      • Algorithm (1)
    • 교육 | 외부활동 (44)
      • 이론_JAVA (13)
      • ORACLE (12)
      • PUBLISHING (6)
      • JAVASCRIPT (5)
      • JQuery (0)
      • 항해99 플러스 백엔드 (8)
    • 기본지식 (0)
    • 끄적끄적 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 학부생(용인대학교 컴퓨터과학과 1~4학년) 네이버 블로그는⋯

인기 글

태그

  • 스프링 시큐리티
  • 항플 백엔드
  • Step
  • 스프링 부트
  • MSA
  • MySQL
  • JPA
  • SESSION
  • 스프링
  • java
  • Spring Batch
  • 항해플러스
  • 항플
  • 압축
  • spring security
  • 항해99
  • 세션
  • transaction
  • Spring
  • Spring Boot

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
wn1331
KH자바수업_1_변수와 자료형, 연산자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.