[INA470] Java Programming Youn-Hee Han

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr Chapter 3 변수와 자료형.
연산자와 표현식 C H A P T E R 3. 소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
2부 자바 기본 다루기 - 3장 프로그래밍을 위한 자바의 자료형
Chapter 7. 조건문.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Chapter 04 C 연산자의 이해.
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
Lesson 6. 형변환.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
Java 기초 (Java 프로그램의 기본 구조)
공학컴퓨터프로그래밍 Python 염익준 교수.
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
상수와 기본 자료형.
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 02. 자바 기본 문법.
8주차: Strings, Arrays and Pointers
Chapter 07 비트와 여러 연산자.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express Slide 1 (of 31)
2부 기본 구조 2부에서는 자바 언어의 기본구조인 변수, 자료형, 연산자, 선택 및 반복논리, 배열 등에 관해 설명합니다
제5장 변수, 연산자, 수식.
자바 5.0 프로그래밍.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
Chapter 10 데이터 검색1.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
Numerical Analysis Programming using NRs
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
어서와 C언어는 처음이지 제21장.
2장 자바의 기본문법(1).
제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.
13. 포인터와 배열! 함께 이해하기.
Visual Basic .NET 기초문법.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

[INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr 05. 변수, 연산자, 수식 [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr

1. 변수와 자료형 변수(variable): 데이터 값들이 저장되는 메모리 공간 자료형 (Data Type) 자료형의 종류 변수 자체가 어떠한 종류의 데이터를 담을 수 있는 가를 나타냄 변수에 저장되는 자료의 타입 자료형의 종류 기초형 (Primitive Data Type) 실제 값이 변수 자체에 저장 참조형 (Reference Data Type) 실제 값은 Heap이라는 저장 공간에 위치하고 변수에는 그 값이 위치한 주소가 저장

1. 변수와 자료형 변수의 선언과 초기화 선언만 하는 방법 선언과 동시에 초기화

1. 변수와 자료형 식별자 (identifier) 변수의 이름 변수 이름의 규칙 Identifiers are “names” we give to our variables, constants, classes, and methods 변수의 이름 식별자(identifier)의 일종 변수 이름의 규칙 식별자는 유니코드 문자와 숫자의 조합 식별자의 첫 문자는 유니코드 문자이어야 한다. 첫 문자가 _, $ 가 가능하지만 추천하지 않음 두 번째 문자부터는 숫자, _, $, # 등이 가능하다. 대문자와 소문자는 구별된다. 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다. true, false, null은 키워드로 분류되지 않지만 변수 이름 (식별자)로 사용될 수 없다.

1. 변수와 자료형 자바에서의 키워드 (keyword) 예약어(Reserved Word) 라고도 한다.

1. 변수와 자료형 변수 정하는 법의 예

1. 변수와 자료형 식별자 이름 정하는 관례

1. 변수와 자료형 리터럴 (Literals) 리터럴은 Java 소스 코드 내에 표기된 데이터 값 그대로인 상수(Constants)를 지칭한다. 다음과 같은 상수들이 리터럴의 예이다. 이러한 리터럴의 타입은 자바 컴파일러가 소스 코드를 컴파일할 때 자동으로 할당하는데 그 규칙은 다음과 같다. 소수점이 없는 수치 리터럴은 int 타입을 부여한다. 소수점이 있는 수치 리터럴은 double 타입을 부여한다. 큰따옴표(")로 묶여진 텍스트는 String 타입을 부여한다. 작은따옴표(')로 묶여진 문자에는 char 타입을 부여한다. 10 1.765 'A' '/u4422' "JSP 프로그래밍"

1. 변수와 자료형 한글 변수명? [중간 점검 문제] 2. days와 Days는 동일한 변수인가 아닌가? 한글 변수 이름도 가능합니다. [중간 점검 문제] 2. days와 Days는 동일한 변수인가 아닌가? 3. 다음 중에서 올바르지 않은 변수이름은? x, 8items, march09, sales_report, theProfit2009, #ofPlayer

2. 기초형 기초 자료형 (Primitive Data Type) 자바에서 사용되는 자료는 대부분이 객체이지만 기초형은 자주 사용되기 때문에 성능 저하를 막기 위하여 기초형만큼은 객체가 아닌 숫자나 문자 값 그 자체임. int vs. Integer

2. 기초형 정수형 long은 64비트를 이용 int는 32비트를 이용하여 약 -21억에서 21억 정도의 정수를 표현 short는 16비트를 이용하여 -32,768에서 +32767사이의 정수를 표현 byte는 8비트 정수로서 -128에서 +127까지의 정수를 표현 (Q) 만약 다음과 같이 정수형의 변수에 범위를 벗어나는 값을 대입하면 어떻게 될까? byte number = 300;// 오류!! (A) 컴파일 오류가 발생한다.

2. 기초형 정수형 상수 (리터럴) x = 100;에서 100과 같이 소스 코드에 쓰여 있는 값 그 자체 여러 진법 사용 가능 10진수(Decimal): 14, 16, 17 8진수(Octal): 016, 018, 019 16진수(hexadecimal):0xe, 0x10, 0x11 l 또는 L 표기 정수 리터럴은 int 타입으로 인식되기 때문에 정수 리터럴 뒤에 L (또는 l)이 있어야 long타입인 정수 리터럴이 된다. long타입의 제로에 해당하는 리터럴은 0이 아니라 0L (또는 0l) int a1=10, b1=1000, c1=-234; long a2=1234567890L, b2=2345l;

2. 기초형 정수 리터럴 예제 public class IntegerLiterals { public static void main(String args[]) { int i = 26; // 26을 10진수로 표현 int oi = 032; // 26을 8진수로 표현 int xi = 0x1a; // 26을 16진수로 표현 int j1 = 10; // int j2 = 10L; // 잘못된 구문 System.out.println(i); System.out.println(oi); System.out.println(xi); } // end method main } // end class IntegerLiterals

2. 기초형 기호 상수 논리형 상수에 이름을 주어서 변수처럼 사용 숫자보다 이해하기 쉽고, 값의 변경이 용이하다. true 아니면 false라는 값만 가질 수 있다. final double PI = 3.141592; final int MAX_NUMBER = 100; boolean condition = true; boolean flag = false; x = 1; if (x) System.out.println(“Hello!”); 잘못된 코딩

2. 기초형 실수형 실수 리터럴 float는 32비트를 이용하여 실수를 표현 double은 64비트를 이용하여 실수를 표현 float타입은 0.0이 아니라 0.0F임에 주의 실수 리터럴은 double 타입으로 인식되기 때문에 실수 리터럴 뒤에 F (또는 f)가 있어야 float타입인 실수 리터럴이 된다. float a = 123.2F; (O) float a = 123.2f; (O) double a = 123.2; (O) float temperature = 25.6; (X) float temperature = 25.6F; (O)

2. 기초형 실수 리터럴 표기법 특수한 실수값 위 표에서 일반 표기법과 지수 표기법이 가능하다. 일반 표기법의 세 번째 처럼 자리수 구분 기호는 사용 불가 특수한 실수값 Infinity: 양의 무한대(positive infinity) -Infinity: 음의 무한대(negative infinity) 0.0: 너무나 작아서 표현할 수 없는 값 NaN(Not a Number): 유효하지 않은 연산 0.0/0.0 Math.sqrt(-0.9)

2. 기초형 실수 리터럴 예제 1 public class FloatLiterals { public static void main(String args[]) { double r1 = 123.5; float r2 = 123.5F; //float rf = 123.5; // 잘못된 구문 double r3 = 1.235e2; double r4 = 1.235e-2; double r5 = 0.0 / 0.0; double r6 = 1.0 / 0.0; double r7 = -1.0 / 0.0; System.out.println(r1); System.out.println(r2); System.out.println(r3); System.out.println(r4); System.out.println(r5); System.out.println(r6); System.out.println(r7); } // end method main } // end class FloatLiterals 실수 리터럴 예제 1

2. 기초형 실수 리터럴 예제 2 [참고] http://www.concentric.net/~Ttwang/tech/javafloat.htm

2. 기초형 문자형 아스키 (ASCII) 코드가 아니라 16비트 유니 코드(unicode)를 사용 유니코드의 0x0000부터 0x00ff까지의 문자는 일반적으로 많이 쓰이는 ASCII 코드와 호환 ‘A', 'b', '한', ’9‘, ’\ud654'

2. 기초형 문자형 리터럴 (상수) ‘A', 'b', '한', ’9‘, ’\ud654'

2. 기초형 특수 문자 리터럴

2. 기초형 특수 문자 리터럴 예제 public class CharLiterals2 { public static void main(String args[]) { System.out.println("\n줄바꿈 \n\n기능을 테스트합니다."); System.out.println("\t탭기능을 \t테\t스트합니다."); System.out.println("캐리지 리턴을 \r테스트합니다."); System.out.println("\'작은 따옴표를 테스트합니다.\'"); System.out.println("\"큰 따옴표를 테스트합니다.\""); }

2. 기초형 중간 점검 1. 변수가 36에서 5000정도의 값을 저장하여야 하다면 어떤 자료형이 최적인가? 2. 변수가 -3000에서 +3000까지의 값을 저장하여야 하다면 어떤 자료형이 최적인가? 3. 0.025를 지수 표기법으로 표기하여 보라. 4. 어떤 리터럴(상수)이 더 많은 메모리 공간을 차지하는가? 28.9 28.9F 5. booelan 자료형이 가질 수 있는 값을 전부 쓰시오.

3. 연산자 연산자와 피연산자 우선순위 (Precedence) 연산자(operator)는 특정한 연산을 나타내는 기호 피연산자(operand)는 연산의 대상 우선순위 (Precedence) 수식을 계산할 때에는 우선 순위가 높은 연산자가 먼저 실행 우선 순위가 같은 연산자는 대입 연산자를 제외하고 왼쪽에서 오른쪽으로 계산 대입 연산자는 오른쪽에서 왼쪽으로 계산

3. 연산자 연산자의 종류 및 우선순위 int n = 1 - 2 * 3 - 4 + 5;

3. 연산자 수식 (Expression) 상수나 변수, 함수와 같은 피연산자들과 연산자의 조합 =

4. 대입, 산술, 단항 연산자 대입 연산자 (Assignment Operator) 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저장 대입 연산자 == 할당 연산자 == 배정 연산자 산술 연산자 (Arithmetic Operators)

4. 대입, 산술, 단항 연산자 산술 연산자 (Arithmetic Operators)

4. 대입, 산술, 단항 연산자 문자열과 “+” 연산자 + 연산자는 문자열들을 결합할때 사용될 수 있다. + 연산자는 문자열들을 결합할때 사용될 수 있다. 문자열과 다른 타입의 + 연산 결과는 문자열 public class StringOperator { public static void main(String[] args) { String s1 = "Hello"; String s2 = " World"; int i = 10000; double j = 20.12; char c = '\u0041'; boolean flag = false; String s3 = s1 + s2; String s4 = s1 + i + j + c + flag; String s5 = "" + i + j; double result = i + j; System.out.println(s3); System.out.println(s4); System.out.println(s5); System.out.println(result); }

4. 대입, 산술, 단항 연산자 단항 연산자 x = a * -b x = a * (-b)

4. 대입, 산술, 단항 연산자 단항 연산자 예제 위 출력결과에서 마지막 i 값은 왜 4가 아니라 3일까? 이후에 배우는 논리연산자의 short circuit 과 관련 public class UnaryOperator2 { public static void main(String[] args) { int i = 0; int j = 1; if(++i==j && ++i==++j) System.out.println("true 1"); System.out.println(i + ", " + j); if(++i==++j || ++i==j) System.out.println("true 2"); }

4. 대입, 산술, 단항 연산자 복합 대입 연산자 관계 연산자 (Relational Operators) 연산의 결과는 항상 boolean 리터럴인 true 또는 false 가 된다.

4. 대입, 산술, 단항 연산자 논리 연산자

4. 대입, 산술, 단항 연산자 논리 연산자 예제 ( x==3 && y ==7) 위와 같이 작성해도 연산자 우선 순위상 문제 없음

if(++i==++j || ++i==j) 4. 대입, 산술, 단항 연산자 논리 연산자와 Short Circuit (expr1 && expr2) 에서 expr1이 false 이면 expr2는 무시됨 (expr1 || expr2) 에서 expr1이 true 이면 expr2는 무시됨 if ( x != 0 && y == 12/x)  x가 0이면 y==12/x 라는 수식은 계산되지 않는다. if(++i==++j || ++i==j)  ++i 값과 ++j 값이 같으면 ++i ==j 수식은 무시된다.

4. 대입, 산술, 단항 연산자 삼항 연산자 중간 점검 문제 condition이 참이면 exp1이 선택되어 계산되고 그렇지 않으면 exp2가 선택되어 계산된다. (예) max_value = (x > y) x : y; // 최대값 계산 중간 점검 문제 condition ? exp1 : exp2 1. 다음의 각 변수의 값을 적어보라. int x = 1; int y = 1; int a = ++x * 2; // a의 값은 ___________ int b = y++ * 2; // b의 값은 ___________ 2. 다음 수식의 값을 쓰시오. 12/5 - 3 5 + 19%3

5. 연산자의 우선 순위와 결합 규칙 어떤 연산자가 먼저 계산되는가? 괄호 안은 먼저 계산된다.     만약 같은 우선 순위를 가지는 연산자들이 여러 개가 있으면 어떤 것을 먼저 수행하여야 하는가? m = x + y + z / 3    

5. 연산자의 우선 순위와 결합 규칙 중간 점검 다음의 수식에서 연산의 순서를 적으시오. x = y = 3 / 5 * 2 % 6; (2) y = a * x * x + b * x + c;

6. 비트 연산자 비트 연산자 (Bit Operators) 정수 타입에 대한 비트 연산 및 비트 이동 연산 << 오른쪽의 남는 비트는 0으로 채운다. >> 왼쪽의 남는 비트는 부호와 같은 값으로 채운다. 양수는 0으로 음수는 1로 채운다. >>> 왼쪽의 남는 비트는 부호와 무관하게 무조건 0으로 채운다.

6. 비트 연산자 비트 연산자 예제 중간 점검 1. 변수 y, z, a, b의 값은? int x = 0xff0f; int y = x << 4; int z = x >> 4; int a = x & 0xf0ff; int b = x | 0xf0ff;

7. 형변환 형변환 (Type Casting) 묵시적 형변환 (Implicit Type Casting) 자동 형 변환, 확대 변환 (Widening) 타입별 범위의 순서 범위가 작은 타입 값을 범위가 큰 타입 변수에 할당할 때 Java 언어 자체에서 자동으로 타입 변환을 해주는 것을 의미 byte < short < int < long < float < double long value1 = 100; // int 타입 상수를 묵시적으로 long 타입 변수에 할당 가능 double value2 = 100; // int 타입 상수를 묵시적으로 double 타입 변수에 할당 가능 double value2 = (double) 100; // 명시적으로 적어주어도 무방 double value3 = 2 + 3; // int 타입 연산 결과를 double 타입 변수로 할당 가능

7. 형변환 명시적 형변환 (Implicit Type Casting) 범위가 큰 타입의 값을 범위가 작은 타입의 변수로 할당할 때 반드시 필요 축소 변환 (Narrowing Conversion) 형태 y = (double) x long value1 = 100L; //long 타입 상수를 long 타입 변수에 할당 (형변환 없음) int value2 = (int)value1; //long 타입 값을 명시적으로 int 타입 변수에 할당 int i = (int) 12.5 // double 타입 상수를 int 타입에 할당 (주의) 소수점 이하는 사라진다.

7. 형변환 형변환 예제