제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
연산자와 표현식 C H A P T E R 3. 소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7.
어서와 Java는 처음이지! 제3장선택과 반복.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
2부 자바 기본 다루기 - 3장 프로그래밍을 위한 자바의 자료형
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
Chap03 자바 기본 구조 3.1 자바 응용 프로그램 분석 3.2 프로그래밍 오류(Error)
4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
Chapter 7. 조건문.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 12 장 부가 특성.
10장 예외 Lab 10-1.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
Lesson 3. 입출력과 제어문.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Chapter 04 C 연산자의 이해.
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
Lesson 9. 예외처리.
Lesson 6. 형변환.
명품 Java Programming.
제3장 스택과 큐.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.
3장 자바의 기본문법(2).
[INA470] Java Programming Youn-Hee Han
Java 기초 (Java 프로그램의 기본 구조)
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
C#.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
기본 입출력과 데이터 형 개요 기본 입출력 스트림 변수, 상수 및 데이터 형 데이터 형 변환.
상수와 기본 자료형.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
연산자 (Operator).
에어 조건문.
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
자바 5.0 프로그래밍.
Chapter 02. 자바 기본 문법.
Chapter 07 비트와 여러 연산자.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
2부 기본 구조 2부에서는 자바 언어의 기본구조인 변수, 자료형, 연산자, 선택 및 반복논리, 배열 등에 관해 설명합니다
제5장 변수, 연산자, 수식.
자바 5.0 프로그래밍.
Chapter08 JavaScript 시작하기
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter08 JavaScript 시작하기
복습.
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
Operator 연산(계산)을 위해 사용되는 부호 및 기호.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
2장 자바의 기본문법(1).
Choi Younghwan CSE HUFS
6장 데이터 타입(5) 순천향대학교 컴퓨터공학부 하 상 호.
3장 자바의 기본문법(2).
Presentation transcript:

제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환

연산자 식의 의미를 결정: 문장에서 값을 계산 언어와 비슷 좋은 시스템을 작성 연산자(operator), 피연자(operand) 산술식,,관계식, 논리식 // 연산자의 종류 언어와 비슷 연산자는 식의 의미를 결정 좋은 시스템을 작성 언어시스템에서 제공하는 연산자들의 의미와 사용법 습득 자바 언어의 연산자는 표준 C언어의 연산자와 비슷 특히, 수학적인 의미와 구별

연산자의 종류 피연산자가 어떻게 계산될지 나타내는 기호(43개) 산술 연산자 : + - * / % 단항+ 단항- 산술 연산자 : + - * / % 단항+ 단항- 관계 연산자 : > >= < <= == != 논리 연산자 : && || ! 증감 연산자 : ++ -- 비트 연산자 : & | ^ ~ << >> >>> 자바 언어의 연산자 조건 연산자 : ?: 배정 연산자 : = += -= *= /= %= &= ^= |= >>= <<= >>>= 캐스트 연산자 : (자료형) 배열 연산자 : [] 메소드 연산자 : () . instanceof 연산자 : instanceof

산술 연산자 수치 연산을 나타내는 연산자 x = -5 ; x = -(-5) ; x % y = x - (x / y) * y 단항 산술 연산자 : +, - 이항 산술 연산자 : +, -, *, /, % % : remainder opreator(나머지 연산자) 정수형만을 피연산자로 가짐 x % y = x - (x / y) * y x = -5 ; x = -(-5) ; x = -(3-5) ;

예제3-1 DivideOperator.java public class DivideOperator { public static void main(String[] args) { int i; double x; i = 1 / 2; x = 1 / 2; System.out.print("i = " + i); System.out.println(", x = " + x); i = (int) (1 / 2.0); x = 1 / 2.0; }

예제3-2 RemainderOperator.java public class RemainderOperator { public static void main(String[] args) { int n, rem; rem = 10 % 3; n = 10 - (10 / 3 ) * 3; System.out.println("10 % 3 = " + rem); System.out.println("10-(10/3)*3 = " + n); }

산술 연산자 실수형 연산 무한연산(infinite arithmetic) 부동 소수점 표현방법과 연산방법 : IEEE754 표준 underflow, overflow 무한연산(infinite arithmetic) java.lang.Float, java.lang.Double에서 POSITIVE_INFINITY, NEGATIVE_INFINITY 상수 제공 NaN(Not a Number)

관계 연산자 두 개의 값을 비교하는 연산자 연산자 for, while, ...  우선순위  연산결과 : true or false 관계 연산자가 포함된 식 : 관계식 for, while, ... 연산자 , , , , ,   우선순위  산술 연산자보다 낮다. b == x < y ===> b == (x < y) a > b + c ===> a > (b + c)

예제3-4 RelationalOperators .java public class RelationalOperators { public static void main(String[] args) { int x=3, y=5, z=7; boolean f, t; f = x > y; t = x < y && y < z; System.out.println("f = " + f + ", t = " + t); f = x <= y; t = x >= y == y >= x; }

논리 연산자 두 피연산자의 논리 관계를 나타내는 연산자 연산자 [예제 3.6] 테스트 ! , && , || (낮음) (높음) a < b && b < c 1 2 3

예제3-5 LogicalOr.java public class LogicalOr { public static void main(String[] args) { System.out.println("TRUE OR TRUE = " + (true || true)); System.out.println("TRUE OR FALSE = " + (true || false)); System.out.println("FALSE OR TRUE = " + (false || true)); System.out.println("FALSE OR FALSE = " + (false || false)); }

예제3-6 LogicalOperators.java public class LogicalOperators { public static void main(String[] args) { int x=3, y=5, z=7; boolean b; b = x < y && y < z; System.out.println("Result = " + b); b = x == y || x < y && y > z; }

증가 및 감소 연산자 연산자 전위 연산자 후위 연산자 (a + b)++ // error n = 1; ++, -- 변수가 아닌 식에는 사용 못함 실수형 적용 안됨 전위 연산자 후위 연산자 (a + b)++ // error n = 1; x = ++n; // x=2, n=2 n = 1; x = n++; // x=1, n=2

예제3-7 IncDecOperators.java public class IncDecOperators { public static void main(String[] args) { int x=3, y=5; int a, b; ++x; --y; System.out.println("x = " + x + " , y = " + y); a = (++x) + 1; System.out.println("x = " + x + " , a = " + a); b = (y++) + 1; System.out.println("y = " + y + " , b = " + b); }

<< >> >>> 비트 연산자 비트 연산자 비트 단위로 연산 --- 기억장소 절약(자바의 저급언어적 특성) 종류 --- &, |, <<, >>, >>>, ^, ~ 피연산자는 반드시 정수형 우선순위 연산자 우선순위 ~ << >> >>> & ^ | (높음) (낮음)

비트 연산자 [1/2] 비트 논리곱 비트 논리합 배타적 논리합(Exclusive OR) 10012 & 00112 = 00012 변수의 일정 부분을 매스킹(masking)하여 특정 부분만을 추출하기 위해 사용 비트 논리합 10012 | 00112 = 10112 배타적 논리합(Exclusive OR) 10012 ^ 00112 = 10102 1의 보수(One’s Complement) ~ 000010102 = 111101012

예제3-8 BitOperators.java public class BitOperators { public static void main(String[] args) { int x=9, y=3; System.out.println(x + " & " + y + " = " + (x&y)); System.out.println(x + " | " + y + " = " + (x|y)); System.out.println(x + " ^ " + y + " = " + (x^y)); System.out.println("~10 = " + (~10)); }

비트 연산자 [2/2] 비트 이동 연산자(shift operator) x << y = x * 2y 왼쪽 이동(<<) 오른쪽 이동(>>) 부호없는 오른쪽 이동(>>>) 부호없는 정수(unsigned integer)를 지원하지 않기 때문에 제공 (-1) >>> 1 ? x << y = x * 2y x >> y = x / 2y

예제3-9 ShiftOperators.java public class ShiftOperators { public static void main(String[] args) { System.out.println(" 10 << 2 = " + (10<<2)); System.out.println(" 10 >> 2 = " + (10>>2)); System.out.println(" 10 >>> 2 = " + (10>>>2)); System.out.println("-10 >>> 2 = " + (-10>>>2)); }

조건 연산자 조건 연산자 max = x; max = y; x > y 형태 : 식1 ? 식2 : 식3 (3항 연산자) 형태 : 식1 ? 식2 : 식3 (3항 연산자) [예제 3.10] 테스트 --- 교과서 80쪽 max = x > y ? x : y ; if (x > y) max = x; else max = y; 참 거짓 max = x; max = y; x > y

예제3-10 ConditionalOperator.java public class ConditionalOperator { public static void main(String[] args) throws java.io.IOException { int a, b, c; int m=0; System.out.print("Enter three numbers : "); a = System.in.read() - '0'; b = System.in.read() - '0'; c = System.in.read() - '0'; m = (a > b) ? a : b; m = (m > c) ? m : c; System.out.println("The largest number = " + m); }

예제3-11 PrintTenItem.java public class PrintTenItem { public static void main(String[] args) { int i, n=25; for (i=1; i<=n; ++i) System.out.print(i + ((i%10 == 0 || i==n) ? "\n" : " ")); }

배정 연산자 배정 연산자의 형태 결합 연산자 의미 : 식1 = 식1 op 식2 식1 op= 식2 x = x * y + 1; 산술 연산자 : + - * / % 비트 연산자 : & | ^ << >> >>> 의미 : x = x * y + 1; x *= y + 1; sum = sum + i ; sum += i ; x = x * (y+1)

캐스트 연산자 캐스트 연산자 --- 자료형 변환 연산자 (자료형) 식  정수사이의 연산 결과는 정수 형태 : 캐스트 연산자 사용 예 :  정수사이의 연산 결과는 정수 (자료형) 식 (int) 3.75 ===> 3 (float) 3 ===> 3.0 (float) (1 / 2) ===> 0.0 (float) 1/2 ===> 0.5

연산자 우선순위 [1/2] 연산자 결합법칙 우선순위 () [] . 좌측결합 (높음) ! ~ ++ -- 단항+ 단항- (자료형) 연산자 결합법칙 우선순위 () [] . ! ~ ++ -- 단항+ 단항- (자료형) * / % + - << >> >>> < <= > >= instanceof == != & ^ | && || ? : = += -= *= /= %= &= ^= |= <<= >>= >>>= 좌측결합 (높음) 우측결합 좌측결합 우측결합 (낮음)

연산자 우선순위 [2/2] y = x + y - z ; // 좌측 결합 y = -x ; // 우측 결합 y = -x++ ; // x의 값에 단항 – 연산을 적용한 후 y에 배정하고 x를 증가 y = -++x ; // x를 증가한 후 x의 값에 단항 - 연산을 적용한 후 y에 배정 y = -x + z ; // x의 값에 단항 – 연산한 후 z를 더하 고 그 결과를 y에 배정

형 변환 [1/6] 캐스팅을 이용하여 프로그래머가 형 변환을 명시 자료형의 크기 방향 형 변환의 주체 묵시적 형 변환 광역화 형 변환 작은 자료형의 값을 큰 자료형의 값으로 변환 협소화 형 변환 큰 자료형의 값을 작은 자료형의 값으로 변환 형 변환의 주체 묵시적 형 변환 컴파일러에 의해 자동수행 명시적 형 변환 캐스팅을 이용하여 프로그래머가 형 변환을 명시

형 변환 [2/6] 광역화 형 변환 컴파일러에 의해 자동으로 수행되는 묵시적 변환 예 : 정밀도 상실 : int -> float long -> float, long -> double byte -> short, int, long, float, double short -> int, long, float, double char -> int, long, float, double int -> long, float, double long -> float, double float -> double

형 변환 [3/6] 협소화 형 변환 byte -> char short -> byte, char 프로그래머가 반드시 캐스트 연산자를 사용하여 변환될 자료형을 표시하여 변환. 예 : byte -> char short -> byte, char char -> byte, short int -> byte, short, char long -> byte, short, char, int float -> byte, short, char, int, long double -> byte, short, char, int, long, float

형 변환 [4/6] 묵시적 형 변환 char c='A'; short s=1; int i=2; long l=3; 컴파일러에 의해 자동적으로 수행 char c='A'; short s=1; int i=2; long l=3; float f=2.1f; double d=3.2; ① i = ( c + s ); // i = 66 (int) (char) (short) (short) (int) [예제 3.16] 테스트

형 변환 [4/6] l = s + i ; // l = 3 (long) (short) (int) (int) (long) d = f + d; // d = 5.3 (double) (float) (double) (double)

형 변환 [5/6] 명시적 형 변환 char c='A'; short s=1; int i=2; long l=3; 프로그래머가 캐스트 연산자를 사용하여 변환 char c='A'; short s=1; int i=2; long l=3; float f=2.1f; double d=3.2; ① s = (short) ( c + i ); // s = 67 (short) (char) (int) (int) (short)

형 변환 [5/6] f = (float) ( f + d ); // f = 5.3 (float) (float) (double)

public class LosePrecision { [예제3.18-LosePrecision.java] _______________________________________ public class LosePrecision { public static void main(String[] args) throws java.io.IOException { int big = 1234567890; float approx; approx = (float) big; System.out.println("difference = " + (big - (int)approx)); System.in.read(); } ________________________________________________________________ 실행결과 : difference = -46

형 변환 [6/6] 형 변환 금지 [예제 3.19] 테스트 --- 교과서 93쪽 같은 자료형 이외에 다른 자료형으로의 변환이 금지된 자료형 boolean 형 [예제 3.19] 테스트 --- 교과서 93쪽