Download presentation
Presentation is loading. Please wait.
1
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초
2
예제 소스
3
용어 설명 3 3
4
클래스 클래스(class)는 자바와 같은 객체 지향 언어의 기본적인 빌딩 블록
필요한 클래스를 하나씩 만들어감으로써 전체 프로그램이 완성된다.
5
클래스의 정의
6
소스 파일과 클래스 이름 소스 안에 public 클래스가 있다면 반드시 소스 파일의 이름은 public 클래스의 이름과 일치하여야 한다. 하나의 소스 파일 안에 public 클래스가 2개 이상 있으면 컴파일 오류가 발생한다.
7
메소드 메소드(method)는 특정한 작업을 수행하는 코드의 묶음
메소드는 외부로부터 입력을 받아서 특정한 작업을 수행하고 작업의 결과를 반환하는 블랙 박스
8
메소드의 정의
9
자바 프로그램의 구조 하나의 클래스 안에는 여러 개의 메소드가 포함될 수 있다.
하나의 메소드 안에는 여러 개의 문장이 포함될 수 있다.
10
나는 main() 메소드를 제일 먼저 실행합니다.
JVM
11
문장 사용자가 컴퓨터에게 작업을 지시하는 단위
12
System.out.print?? java.lang 패키지 12 Java.io 패키지
13
주석 /* TEXT */ // TEXT /** DOCUMENTATION */ 주석의 시작과 끝을 /*와 */로 표시
//에서 줄의 끝까지가 주석이다. 한 줄짜리 주석만 가능하다. /** DOCUMENTATION */ /**에서 */까지가 주석이 된다
14
주석을 붙인 소스
15
LAB: 순차적인 프로그램 작성하기 다음과 같은 출력을 생성하는 프로그램을 작성한다.
16
SOLUTION
17
변수 변수(variable)는 데이터를 담아두는 상자
18
변수의 필요성
19
변수 선언
20
자료형 변수에 저장되는 데이터의 타입
21
자료형의 종류 x myCar
22
기초 자료형 byte short int long (-263 ~ 263 -1) float double boolean char
-128부터 127(-27~27-1) short -32768부터 32767(-215~215-1) 정수타입 int 약 -21억부터 21억까지 (-231 ~ ) long (-263 ~ ) float (4Bytes -3.4E38 ~ 3.4E38) 실수타입 double (8Bytes, -1.7E308 ~ 1.7E308) 논리타입 boolean true, false char 문자타입 (2Bytes, Unicode)
23
구현에 독립적임! 특징 기본 데이타 타입의 크기가 정해져 있음 기본 데이타 타입의 크기는 CPU나 운영체제에 따라 변하지 않음
24
정수형 리터럴 10진수(decimal): 14, 16, 17 8진수(octal): 016, 018, 019
16진수(hexadecimal): 0xe, 0x10, 0x11 2진수(binary): 0b1100 JDK7 2 F 7
25
long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙인다. 8바이트
모든 정수타입 리터럴은 int형으로 처리 long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙인다. 8바이트 ex) 24L, 3578l
26
예제: 빛이 1년 동안 가는 거리 빛의 속력(speed of light) : 진공에서 299,792,458m/s
27
실수타입 리터럴 부동 소수점을 갖는 수를 표시 소수점을 찍은 실수, 지수(exponent)식으로 표현한 실수
27 부동 소수점을 갖는 수를 표시 소수점을 찍은 실수, 지수(exponent)식으로 표현한 실수 12. 또는 12.0 .1234 또는 또는 1234E-4 숫자 뒤에 f(float)나 d(double)을 명시적으로 붙여서 표현 또는 D 또는 d → double 타입 0.1234f 또는 F → float 타입 1234D 또는 1234d → 과 같으며 double 타입 1234F 또는 1234f → 과 같으며 float 타입 실수타입 리터럴은 디폴트로 double 타입 처리
28
예제: 반지름이 5.0인 원의 면적을 계산하는 프로그램을 작성
29
문자형 특수 기호는 \로 시작 \u다음에 4자리 16진수, 2 바이트의 유니코드(Unicode)
유니코드 규격 중에서 UTF-16 규격(\u0000~\uffff) 사용 단일 인용부호(’ ’)로 문자 하나 표현 'a', 'W', '가', '*', '3', '7‘ \u다음에 4자리 16진수, 2 바이트의 유니코드(Unicode) ‘\u0041’ -> 문자 'A'의 유니코드(0041) ‘\uae00’ -> 한글문자 '글'의 유니코드(ae00) 특수 기호는 \로 시작 char ch1 = '가'; char ch2 = ‘\uac00'; // '가'를 나타낸다.
30
특수문자
31
문자타입 리터럴: 예제
32
논리타입 리터럴 논리값 표시 true 또는 false 뿐 논리타입과 정수타입 사이의 타입 변환 허용 안 됨
32 논리값 표시 true 또는 false 뿐 논리타입과 정수타입 사이의 타입 변환 허용 안 됨 (i==1) 또는 (i!=0)과 같은 논리연산으로 변경해야 함 int i; if ((boolean)i) {} // 컴파일 에러 boolean a = true; boolean b = 10 > 0; // 10>0가 참이므로 b 값은 true boolean c = 1; // 타입 불일치 오류. C/C++와 달리 자바에서 1,0을 참, 거짓으로 사용 불가 while(true) { // 무한 루프 ... }
33
논리형
34
Tip: 기본 데이터 타입 이외 리터럴 null 리터럴 문자열 리터럴 어떠한 레퍼런스 타입의 값으로도 사용 가능
34 null 리터럴 어떠한 레퍼런스 타입의 값으로도 사용 가능 int n = null; // 기본 데이터 타입에는 사용 불가 String str = null; 문자열 리터럴 이중 인용부호로 묶어서 표현 "Good", "Morning", "자바", "3.19", "26", "a" 자바에서 문자열은 객체이므로 기본 타입이 아님 문자열 리터럴은 String 객체로 생성됨
35
문자열 문자열은 기본 타입이 아님 String 클래스로 문자열 표현 문자열 리터럴 – “JDK”, “한글”, “계속하세요”
35 문자열은 기본 타입이 아님 String 클래스로 문자열 표현 문자열 리터럴 – “JDK”, “한글”, “계속하세요” 문자열이 섞인 + 연산 -> 문자열 연결 String toolName="JDK"; toolName > "JDK1.8" "(" "," ")" -> "(3,5)" System.out.println(toolName + "이 출시됨"); // "JDK1.8이 출시됨" 출력
36
변수 초기화 오류
37
변수 이름 짓기 식별자는 유니코드 문자와 숫자의 조합으로 만들어진다.
식별자의 첫 문자는 일반적으로 유니코드 문자이어야 한다. _, $로 시작 가능 두 번째 문자부터는 문자, 숫자, _, $ 등이 가능하다. 대문자와 소문자는 구별된다. 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다.
38
변수의 이름 변수의 이름은 식별자(identifier)의 일종 변수 이름의 규칙
식별자는 유니코드 문자와 숫자의 조합(한글 가능!) 식별자의 첫 문자는 일반적으로 유니코드 문자 두 번째 문자부터는 문자, 숫자, _, $ 등이 가능하다. 대문자와 소문자는 구별된다. 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다.
39
변수 이름의 예
40
변수 이름 관례
41
식별자 이름 자신의 이름을 넣을 수 있는 변수명을 정의해 보자. 변수명에 camel case(낙타표기법??) 사용하기
Answer: String myName = "John Q. Public"; CamelCase (also spelled camel case or camel-case) or medial capitals[1] is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element's initial letter capitalized within the compound, and the first letter is either upper or lower case — as in "LaBelle", BackColor, "McDonald's", or "iPod". The name comes from the uppercase "bumps" in the middle of the compound word, suggestive of the humps of a camel. The practice is known by many other names. An early systematic use of medial capitals is the standard notation for chemical formulas, such as NaCl, that has been widely used since the 19th century. In the 1970s, medial capitals became an alternative (and often standard) identifier naming convention for several programming languages. Since the 1980s, following the popularization of computer technology, it has become fashionable in marketing for names of products and companies.
42
자바 키워드 abstract continue for new switch assert default if package
42 abstract continue for new switch assert default if package synchronized boolean do goto private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
43
상수
44
상수를 만드는 방법
45
LAB: 지구에서 가장 가까운 별까지의 거리 계산하기
47
실습 우주선 voyager 1 : 시속 6만 km 걸리는 시간은? 프록시마 센타우리
48
수식 수식이란 상수나 변수, 함수와 같은 피연산자들과 연산자의 조합
49
대입 연산자 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저장
대입 연산자 == 할당 연산자 == 배정 연산자라고도 한다. x = 100; // 상수 100을 변수 x에 대입한다.
50
산술 연산자 연산자 기호 의미 예 덧셈 + x와 y를 더한다 x+y 뺄셈 - x에서 y를 뺀다. x-y 곱셈 *
나눗셈 / x를 y로 나눈다. x/y 나머지 % x를 y로 나눌 때의 나머지값 x%y
51
예제: 윤년 검사 프로그램
52
중감 연산자
53
예제: 증감 연산자
54
관계 연산자
55
예제: 관계 연산자
56
논리 연산자
57
예제: 논리 연산자
58
형변환 자동적인 형변환 피연산자 중 하나가 double형이면 다른 피연산자도 double형으로 변환된다.
피연산자 중 하나가 float형이면 다른 피연산자도 float형으로 변환된다. 피연산자 중 하나가 long형이면 다른 피연산자도 long형으로 변환된다. 그렇지 않으면 모든 피연산자는 int형으로 변환된다.
59
강제적인 형변환 Type Coercion
60
예제: 형변환 1.0 1.25 2
61
연산자의 우선순위
62
결합 규칙 동일한 우선 순위의 연산이 있는 경우에 무엇을 먼저 수행하느냐에 대한 규칙
63
연산자 우선 순위 높음 같은 우선순위의 연산자 왼쪽에서 오른쪽으로 처리 예외)오른쪽에서 왼쪽으로
63 ++(postfix) -- (postfix) +(양수 부호) -(양수, 음수 부호) ++(prefix) --(prefix) ~ ! 형 변환(type casting) * / % +(덧셈) –(뺄셈) << >> >>> < > <= >= instanceof == != &(비트 AND) ^( 비트 XOR) |(비트 OR) &&(논리 AND) ||(논리 OR) ? : (조건) = += -= *= /= %= &= ^= |= <<= >>= >>>= 높음 낮음 같은 우선순위의 연산자 왼쪽에서 오른쪽으로 처리 예외)오른쪽에서 왼쪽으로 대입 연산자, --, ++, +,-(양수 음수 부호), !, 형 변환은 오른쪽에서 왼쪽으로 처리 괄호는 최우선순위 괄호가 다시 괄호를 포함한 경우는 가장 안쪽의 괄호부터 먼저 처리
64
연산자 우선 순위 (a < b) && (c < d) || (e < f) y = -++ --x;
int x = 5; int y = 3; int s = (x>y)?1:-1; // x가 y보다 크기 때문에 1이 s에 대입된다.
65
LAB: 2차 방정식의 근을 계산 x*x+b*x+c 식의 근을 계산
66
2차방정식 근 계산 x2-3x+2=0
67
실습: 2차방정식 근 계산 ax2+bx+c =0 a와 b, c 값을 주고 근을 계산하시오. 2x2-x-1 =0
68
문자열 자바에서 문자열(string)은 문자들의 모임이다. 예를 들어서 문자열 “Hello”는 H, e, l, l, o 등의 5개의 유니코드 문자로 구성되어 있다. String 클래스가 제공된다. ‘H’ ‘e’ ‘l’ ‘l’ ‘o’
69
예제: 문자열 프로그램 + 연산자로 문자열을 합칠 수 있다.
70
문자열 문자열은 기본 타입이 아님 String 클래스로 문자열 표현 문자열 리터럴 – “JDK”, “한글”, “계속하세요”
70 문자열은 기본 타입이 아님 String 클래스로 문자열 표현 문자열 리터럴 – “JDK”, “한글”, “계속하세요” 문자열이 섞인 + 연산 -> 문자열 연결 String toolName="JDK"; toolName > "JDK1.8" "(" "," ")" -> "(3,5)" System.out.println(toolName + "이 출시됨"); // "JDK1.8이 출시됨" 출력
71
사용자로부터 값을 입력받으려면? Scanner 클래스를 사용한다.
import java.util.*; // Scanner 클래스 포함 Scanner input = new Scanner(System.in); System.out.print("문장을 입력하시오: "); String line = input.nextLine(); // 한 줄을 읽는다. nextLine() next() nextInt() nextDouble()
72
import 문장 import java.util.Scanner; // Scanner 클래스 포함
Scanner는 자바 클래스 라이브러리(Java Class Library)의 일종 Scanner는 입력을 받을 때 사용 (Scanner 객체를 생성 후 사용)
73
Scanner 주요 메소드 73 Scanner a = new Scanner(System.in).useDelimiter("\\s|-"); // 공백 문자나 '-'을 구분자로 사용
74
예제: 사용자로부터 받은 2개의 정수 더하기
76
예제 : Scanner를 이용한 키 입력 연습 Scanner를 이용하여 나이, 체중, 신장 데이터를 키보드에서 입력 받아
76 Scanner를 이용하여 나이, 체중, 신장 데이터를 키보드에서 입력 받아 다시 출력하는 프로그램을 작성해보자. import java.util.Scanner; public class ScannerExam { public static void main (String args[]) { Scanner a = new Scanner(System.in); System.out.println("나이, 체중, 신장을 빈칸으로 분리하여 순서대로 입력하세요"); System.out.println("당신의 나이는 " + a.nextInt() + "살입니다."); System.out.println("당신의 체중은 " + a.nextDouble() +"kg입니다."); System.out.println("당신의 신장은 " + a.nextDouble()+ "cm입니다."); } 나이, 체중, 신장을 빈칸으로 분리하여 순서대로 입력하세요 당신의 나이는 35살입니다. 당신의 체중은 75.0kg입니다. 당신의 신장은 175.0cm입니다. 키 입려부분
77
실수 출력하기 System.out.printf(“%.2f”, value); 소수점 이하 2자리
33.33 교과서 p 참고
78
LAB: 원의 면적 계산하기
79
SOLUTION
80
LAB: 직사각형의 둘레와 면적 계산하기
81
SOLUTION 한 줄로 짜 볼것!!!
82
실습 연도를 입력받아 윤년(leap year)이면 “???년도는 윤년입니다(true)”, 윤년이 아니면 “??? 년도는 윤년입니다(fasle)”를 각각 출력하는 자바 프로그램을 작성하시오.
83
Q & A
Similar presentations