00650c34bd3b4a78fa19f61ff1bf4a71.ppt
- Количество слайдов: 83
어서와 Java는 처음이지! 제 2장 자바 프로그래밍 기초
용어 설명 3
¢ 클래스(class)는 자바와 같은 객체 지향 언어의 기본적인 빌딩 블록 ¢ 필요한 클래스를 하나씩 만들어감으로써 전체 프로그램이 완성된 다.
¢ 소스 안에 public 클래스가 있다면 반드시 소스 파일의 이름은 public 클래스의 이름과 일치하여야 한다. ¢ 하나의 소스 파일 안에 public 클래스가 2개 이상 있으면 컴파일 오류가 발생한다.
¢ 메소드(method)는 특정한 작업을 수행하는 코드의 묶음 ¢ 메소드는 외부로부터 입력을 받아서 특정한 작업을 수행하고 작 업의 결과를 반환하는 블랙 박스
¢ 하나의 클래스 안에는 여러 개의 메소드가 포함될 수 있다. ¢ 하나의 메소드 안에는 여러 개의 문장이 포함될 수 있다.
¢ main() 메소드를 가지고 있는 클래스가 반드시 하나는 있어야 한 다. ¢ main() 메소드에서 자바 프로그램의 실행이 시작된다. 나는 main() 메소드를 제일 먼저 실행합니다. JVM
¢ 사용자가 컴퓨터에게 작업을 지시하는 단위
System. out. print? ? java. lang 패키지 12 Java. io 패키지
¢ /* TEXT */ ¤ 주석의 시작과 끝을 /*와 */로 표시 ¢ // TEXT ¤ //에서 줄의 끝까지가 주석이다. 한 줄짜리 주석만 가능하다. ¢ /** DOCUMENTATION */ ¤ /**에서 */까지가 주석이 된다
¢ 다음과 같은 출력을 생성하는 프로그램을 작성한다.
¢ 변수(variable)는 데이터를 담아두는 상자
¢ 변수에 저장되는 데이터의 타입
x my. Car
byte short 정수타입 -128부터 127(-27~27 -1) -32768부터 32767(-215~215 -1) 약 -21억부터 21억까지 (-231 ~ 231 -1 ) int (-263 ~ 263 -1) long (2 Bytes, Unicode) float 실수타입 논리타입 문자타입 double boolean char true, false (4 Bytes -3. 4 E 38 ~ 3. 4 E 38) (8 Bytes, -1. 7 E 308 ~ 1. 7 E 308)
• 특징 구현에 독립적임! 기본 데이타 타입의 크기가 정해져 있음 기본 데이타 타입의 크기는 CPU나 운영체제에 따라 변하지 않음
¢ 10진수(decimal): 14, 16, 17 016, 018, 019 0 xe, 0 x 10, 0 x 11 0 b 1100 ¢ 8진수(octal): ¢ 16진수(hexadecimal): ¢ 2진수(binary): 2 F 7 JDK 7
¢ 모든 정수타입 리터럴은 int형으로 처리 ¢ long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙인다. 8바이트 ¤ex) 24 L, 3578 l
빛의 속력(speed of light) : 진공에서 299, 792, 458 m/s
실수타입 리터럴 27 ¢ 부동 소수점을 갖는 수를 표시 ¤ 소수점을 찍은 실수, 지수(exponent)식으로 표현한 실수 ¤ 12. 또는 12. 0 ¤. 1234 또는 0. 1234 또는 1234 E-4 ¤ 숫자 뒤에 f(float)나 d(double)을 명시적으로 붙여서 표현 ¤ 0. 1234 또는 0. 1234 D 또는 0. 1234 d → double 타입 ¤ 0. 1234 f 또는 0. 1234 F → float 타입 ¤ 1234 D 또는 1234 d → 1234. 0과 같으며 double 타입 ¤ 1234 F 또는 1234 f → 1234. 0과 같으며 float 타입 ¤ 실수타입 리터럴은 디폴트로 double 타입 처리
¢ 유니코드 규격 중에서 UTF-16 규격(₩u 0000~₩uffff) 사용 단일 인용부호(’ ’)로 문자 하나 표현 'a', 'W', '가', '*', '3', '7‘ char ch 1 = '가'; char ch 2 = ‘uac 00'; // '가'를 나타낸다. u다음에 4자리 16진수, 2 바이트의 유니코드(Unicode) ¤ ‘u 0041’ -> 문자 'A'의 유니코드(0041) ¤ ‘uae 00’ -> 한글문자 '글'의 유니코드(ae 00) ¤ 특수 기호는 로 시작
문자타입 리터럴: 예제
논리타입 리터럴 32 ¢ 논리값 표시 ¤ true 또는 false 뿐 ¢ 논리타입과 정수타입 사이의 타입 변환 허용 안 됨 int i; if ((boolean)i) {} // 컴파일 에러 ¤ (i==1) 또는 (i!=0)과 같은 논리연산으로 변경해야 함 boolean a = true; boolean b = 10 > 0; // 10>0가 참이므로 b 값은 true boolean c = 1; // 타입 불일치 오류. C/C++와 달리 자바에서 1, 0을 참, 거짓으로 사용 불가 while(true) { // 무한 루프. . . }
Tip: 기본 데이터 타입 이외 리터럴 34 null 리터럴 어떠한 레퍼런스 타입의 값으로도 사용 가능 int n = null; String str = null; // 기본 데이터 타입에는 사용 불가 문자열 리터럴 이중 인용부호로 묶어서 표현 "Good", "Morning", "자바", "3. 19", "26", "a" 자바에서 문자열은 객체이므로 기본 타입이 아님 문자열 리터럴은 String 객체로 생성됨
문자열 35 ¢ 문자열은 기본 타입이 아님 ¢ String 클래스로 문자열 표현 ¤ 문자열 리터럴 – “JDK”, “한글”, “계속하세요” String tool. Name="JDK"; ¤ 문자열이 섞인 + 연산 -> 문자열 연결 tool. Name + 1. 8 -> "JDK 1. 8" "(" + 3 + ", " + 5 + ")" -> "(3, 5)" System. out. println(tool. Name + "이 출시됨"); // "JDK 1. 8이 출시됨" 출력
¢ 식별자는 유니코드 문자와 숫자의 조합으로 만들어진다. ¢ 식별자의 첫 문자는 일반적으로 유니코드 문자이어야 한다. _, $ 로 시작 가능 ¢ 두 번째 문자부터는 문자, 숫자, _, $ 등이 가능하다. ¢ 대문자와 소문자는 구별된다. ¢ 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다.
¢ 변수의 이름은 식별자(identifier)의 일종 ¢ 변수 이름의 규칙 ¤ 식별자는 유니코드 문자와 숫자의 조합(한글 가능!) ¤ 식별자의 첫 문자는 일반적으로 유니코드 문자 ¤ 두 번째 문자부터는 문자, 숫자, _, $ 등이 가능하다. ¤ 대문자와 소문자는 구별된다. ¤ 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다.
식별자 이름 ¢ 자신의 이름을 넣을 수 있는 변수명을 정의해 보자. ¢ 변수명에 camel case(낙타표기법? ? ) 사용하기 ¢ Answer: String my. Name = "John Q. Public"; http: //en. wikipedia. org/wiki/Camelcase Camel. Case (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 "La. Belle", Back. Color, "Mc. Donald's", or "i. Pod". 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 Na. Cl, that has been widely used since the 19 th century. In the 1970 s, medial capitals became an alternative (and often standard) identifier naming convention for several programming languages. Since the 1980 s, following the popularization of computer technology, it has become fashionable in marketing for names of products and companies.
자바 키워드 42 abstract continue for new switch synchronize assert default if package 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 d
실습 ¢ 우주선 voyager 1 : 시속 6만 km 걸리는 시간은? 프록시마 센타우리
¢ 수식이란 상수나 변수, 함수와 같은 피연산자들과 연산자의 조합
¢ 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저 장 ¢ 대입 연산자 == 할당 연산자 == 배정 연산자라고도 한다. x = 100; // 상수 100을 변수 x에 대입한다.
연산자 기호 의미 예 덧셈 + x와 y를 더한다 x+y 뺄셈 - x에서 y를 뺀다. x-y 곱셈 * x와 y를 곱한다. x*y 나눗셈 / x를 y로 나눈다. x/y 나머지 % x를 y로 나눌 때의 나머지값 x%y
¢ 자동적인 형변환 ¤ 피연산자 중 하나가 double형이면 다른 피연산자도 double형으로 변 환된다. ¤ 피연산자 중 하나가 float형이면 다른 피연산자도 float형으로 변환 된다. ¤ 피연산자 중 하나가 long형이면 다른 피연산자도 long형으로 변환된 다. ¤ 그렇지 않으면 모든 피연산자는 int형으로 변환된다.
Type Coercion
1. 0 1. 25 2
¢ 동일한 우선 순위의 연산이 있는 경우에 무엇을 먼저 수행하느냐 에 대한 규칙
연산자 우선 순위 63 ++(postfix) -- (postfix) 높음 +(양수 부호) -(양수, 음수 부호) ++(prefix) -(prefix) ~ ! ¢ 같은 우선순위의 연산자 형 변환(type casting) ¤ 왼쪽에서 오른쪽으로 처리 * / % ¤ 예외)오른쪽에서 왼쪽으로 +(덧셈) –(뺄셈) << >> >>> < > <= >= instanceof == != &(비트 AND) ^( 비트 XOR) |(비트 OR) &&(논리 AND) ||(논리 OR) 낮음: (조건) ? = += -= *= /= %= &= ^= |= <<= >>>= ¤ 대입 연산자, --, ++, +, -( 양수 음수 부호), !, 형 변 환은 오른쪽에서 왼쪽으로 처리 ¢ 괄호는 최우선순위 ¤ 괄호가 다시 괄호를 포함한 경우는 가장 안쪽의 괄호부 터 먼저 처리
연산자 우선 순위 ¢ (a < b) && (c < d) || (e < f) ¢ y = -++ --x; int x = 5; int y = 3; int s = (x>y)? 1: -1; // x가 y보다 크기 때문에 1이 s 에 대입된다.
¢ x*x+b*x+c 식의 근을 계산
2차방정식 근 계산 x 2 -3 x+2=0
실습: 2차방정식 근 계산 ¢ ax 2+bx+c =0 a와 b, c 값을 주고 근을 계산하시오. 2 x 2 -x-1 =0
¢ 자바에서 문자열(string)은 문자들의 모임이다. 예를 들어서 문 자열 “Hello”는 H, e, l, l, o 등의 5개의 유니코드 문자로 구 성되어 있다. ¢ String 클래스가 제공된다. ‘H’ ‘e’ ‘l’ ‘o’
+ 연산자로 문자열을 합칠 수 있다.
문자열 70 ¢ 문자열은 기본 타입이 아님 ¢ String 클래스로 문자열 표현 ¤ 문자열 리터럴 – “JDK”, “한글”, “계속하세요” String tool. Name="JDK"; ¤ 문자열이 섞인 + 연산 -> 문자열 연결 tool. Name + 1. 8 -> "JDK 1. 8" "(" + 3 + ", " + 5 + ")" -> "(3, 5)" System. out. println(tool. Name + "이 출시됨"); // "JDK 1. 8이 출시됨" 출력
¢ Scanner 클래스를 사용한다. import java. util. *; // Scanner 클래스 포함 Scanner input = new Scanner(System. in); System. out. print("문장을 입력하시오: "); String line = input. next. Line(); // 한 줄을 읽는다. next. Line() next. Int() next. Double()
¢ import java. util. Scanner; // Scanner 클래스 포함 ¢ Scanner 클래스를 포함시키는 문장 ¢ Scanner는 자바 클래스 라이브러리(Java Class Library)의 일종 ¢ Scanner는 입력을 받을 때 사용 (Scanner 객체를 생성 후 사용)
Scanner 주요 메소드 73 Scanner a = new Scanner(System. in). use. Delimiter("\s|-"); // 공백 문자나 '-'을 구분자로 사용
76 예제 : Scanner를 이용한 키 입력 연 습 Scanner를 이용하여 나이, 체중, 신장 데이터를 키보드에서 입력 받아 다시 출력하는 프로그램을 작성해보자. import java. util. Scanner; public class Scanner. Exam { public static void main (String args[]) { Scanner a = new Scanner(System. in); System. out. println("나이, 체중, 신장을 빈칸으로 분리하여 순서 대로 입력하세요"); System. out. println("당신의 나이는 " + a. next. Int() + "살입니다. "); System. out. println("당신의 체중은 " + a. next. Double() +"kg입니 다. "); System. out. println("당신의 신장은 " + a. next. Double()+ "cm입니 다. "); } 나이, 체중, 신장을 빈칸으로 분리하여 순 키입 } 서대로 입력하세요 려부분 35 75 175 당신의 나이는 35살입니다. 당신의 체중은 75. 0 kg입니다. 당신의 신장은 175. 0 cm입니다.
실수 출력하기 ¢ System. out. printf(“%. 2 f”, value); 소수점 이하 2자리 33. 3333 33. 33 교과서 p. 94 -95 참고
한 줄로 짜 볼것!!!
실습 ¢ 연도를 입력받아 윤년(leap year)이면 “? ? ? 년도는 윤년입니다(true)”, 윤년이 아니면 “? ? ? 년도는 윤년입니다(fasle)”를 각각 출 력하는 자바 프로그램을 작성하시오.
00650c34bd3b4a78fa19f61ff1bf4a71.ppt