4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형 4. 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형 4.4 형 변환(Casting) 4.5 연산자와 수식 4.6 배열 4.7 문자열(String)
(1) 자바의 주석 4.1 자바 응용 프로그램 분석 /* 주석 */ /*에서 */까지의 모든 것을 무시한다. // 주석 /* 주석 */ /*에서 */까지의 모든 것을 무시한다. // 주석 //에서부터 그 줄의 끝까지를 무시한다. /** 주석 */ /**에서 */까지의 모든 것을 무시한다. 이 주석은 javadoc에 의해 생성되는 HTML 파일에서 사용된다.
(2) 클래스의 정의 클래스의 정의 4.1 자바 응용 프로그램 분석 /** 다음 프로그램(ExamTest.java)은 두 개의 클래스로 구성된다 */ class Exam { // 클래스 Exam의 정의 int c; public int add(int a, int b) { c = a + b; return c; } } class ExamTest { /* Exam 클래스의 객체를 생성하여 사용한다 객체로부터 반환된 결과를 인쇄한다 */ public static void main(String args[]) { int sum; int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); // 명령행 인자로부터 데이터를 받아 정수로 변환하여 저장 Exam examobject = new Exam(); sum = examobject.add(x,y); System.out.println("입력한 값의 합은 " + sum + "입니다"); } 클래스의 정의
(3) main() 메소드 4.1 자바 응용 프로그램 분석 public static void main(String args[]) { …… } main() 메소드는 자바 응용 프로그램에 반드시 있어야 하는 특수한 메소드 프로그램의 실행 시 자동으로 실행되는 메소드 C나 C++ 언어의 main() 함수와 같은 역할 일반적으로 자바 응용 프로그램은 main() 메소드 내에서 다른 클래스의 객체를 생성한 다음 그 객체에 메시지를 보내어 원하는 결과를 얻는다.
(4) main() 메소드의 매개변수 args[] 4.1 자바 응용 프로그램 분석 (4) main() 메소드의 매개변수 args[] main() 메소드는 문자열의 배열을 매개변수(argument)로 받는다. 프로그램 실행 시 필요한 정보를 전달. 이러한 매개변수를 명령행 매개변수(command-line argument)라 한다. 명령행 매개변수들은 입력된 순서에 따라 배열에 저장된다. 예제에서는 args[]에 저장된 데이터를 숫자로 사용하기 위해 Integer 클래스의 parseInt() 메소드를 사용하여 변환 x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); 예제 프로그램을 다음과 같이 실행 >java ExamTest 20 40 입력한 값의 합은 60입니다. args[0] args[1]
Exam examobject = new Exam(); sum = examobject.add(x,y); 4.1 자바 응용 프로그램 분석 (5) 객체의 생성과 메시지 전달 예제 프로그램에서 main() 메소드는 Exam 클래스로부터 객체 examobject를 생성 명령행 인자로 입력된 x, y 값을 매개변수로 하여 examobject 객체의 add() 메소드를 수행하라는 메시지를 보낸다. Exam 클래스의 add() 메소드는 매개변수로 받은 두 개의 수를 더하여 결과를 반환하고, 반환된 값은 sum 변수에 저장된다. Exam examobject = new Exam(); sum = examobject.add(x,y);
System.out.println("입력한 값의 합은 " + sum + " 입니다"); 4.1 자바 응용 프로그램 분석 (6) 표준 출력의 사용 자바의 입출력은 다양한 종류의 하드웨어 장치들과 무관하게 설계(14장) 표준 출력을 위해 System 클래스와 out 객체, println() 메소드를 이용 println() 메소드는 문자열을 매개변수로 받아 화면에 출력하는 역할을 한다. 예제의 매개변수에 사용된 정수형 변수 sum의 값은 문자열로 자동 변환되어 출력된다. System.out.println("입력한 값의 합은 " + sum + " 입니다"); 클래스 이름 메소드 이름 메소드의 매개변수 객체의 이름
4.2 식별자와 예약어 식별자 변수, 상수, 메소드, 배열, 문자열, 사용자가 정의하는 클래스나 메소드 등을 구분할 수 있는 이름 첫 문자가 영문자나 특수문자('_','$')로 시작 길이에는 제한을 두지 않는다. 예약어는 식별자로 사용할 수 없다. 대, 소문자를 구분하여 사용 식별자의 사용 관례 클래스 이름은 대문자로 시작 메소드, 변수, 배열, 문자열 등의 이름은 소문자로 시작
자바의 예약어 4.2 식별자와 예약어 abstract boolean break byte cast catch char class const continue default do double else extends final finally float for goto if implememts import instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try void volatile while
식별자와 예약어 4.2 식별자와 예약어 자바는 16비트 유니코드 사용 유니코드는 세계의 다양한 언어들을 지원하기 위해 설계된 문자코드 체계 현재 34168개의 글자들을 코드화하고 있으며 최대 65536개의 글자들을 코드화할 수 있다. 유니코드는 기존의 ASCII 코드 문자 집합을 포함 www.unicode.org 사이트 참조
4.4 변수와 자료형 변수(variable) 값(value)이 저장된 메모리의 위치에 주어진 이름 자바는 변수를 사용하기 전에 반드시 선언하여야 한다. 자료형 기본 자료형(primitive type) 정수, 실수, 문자, 논리값 등과 같은 8가지의 기본 자료형 기본 자료형 변수는 값을 가진다. 매개변수 전달 : call by value 참조 자료형(reference type) 배열, 문자열, 클래스, 인터페이스 등과 같은 자료형 객체에 대한 참조 즉 주소를 가지고 있다. 매개변수 전달 : call by value
자바의 기본 자료형 4.4 변수와 자료형 타입 설명 키워드 character 16비트 유니코드(Unicode) 문자 데이터 boolean 참/거짓 값 byte 부호를 가진 8비트 정수 short 부호를 가진 16비트 정수 integer 부호를 가진 32비트 정수 int long 부호를 가진 64비트 정수 float 부호를 가진 32비트 부동 소수점 double 부호를 가진 64비트 부동 소수점
4.5 형 변환(Casting) 형 변환은 치역(traget type)에 정의역(source type)의 값을 배정할 때 발생 확대(widening) 변환 치역(traget type)이 정의역(source type)보다 더 넓어 값의 손실이 발생되지 않고 저장 예 : 8비트의 바이트 값을 32비트의 정수형으로 변환하는 경우 축소(narrowing) 변환 명시적은 형 변환 구문을 사용해야 한다. 치역(traget type)이 정의역(source type)보다 좁아 값을 저장할 수 없는 경우 예 : 32비트의 정수형 값을 8비트의 바이트 형으로 변환하면 정보의 손실이 발생
형 변환(Casting)의 예 4.5 형 변환(Casting) 정수 값을 바이트 값으로 형 변환 (target-type) value int a; byte b; ..... b = (byte) a;
4.6 연산자와 수식 연산자의 유형 단항 연산자 operator op op operator 이항 연산자 op1 operator op2 삼항 연산자 expr ? op1 : op2
4.6 연산자와 수식 (1) 산술 연산자 연산자 사용법 설명 비고 + op1+op2 op1과 op2를 더한다. 단항 및 이항 - op1-op2 op1에서 op2를 뺀다. * op1*op2 op1과 op2를 곱한다. 이항 / op1/op2 op1을 op2로 나눈다. % op1%op2 op1을 op2로 나눈 나머지를 구한다. ++ op++ ++op op값 1 증가. op값을 증가시키지 전에 평가 op값 1 증가. op값을 증가시킨 다음 평가 단항 -- op-- --op op값 1 감소. op값을 감소시키지 전에 평가 op값 1 감소. op값을 감소시킨 다음 평가
4.6 연산자와 수식 (2) 관계 연산자 연산자 사용법 설명 > op1>op2 op1이 op2 보다 큰 경우 >= op1>=op2 op1이 op2 보다 크거나 같은 경우 < op1<op2 op1이 op2 보다 작은 경우 <= op1<=op2 op1이 op2 보다 작거나 같은 경우 = op1=op2 op1과 op2가 같은 경우 != op1!=op2 op1과 op2가 같지 않은 경우 instanceof op1 instanceof op2 op1이 op2의 인스턴스(객체)인 경우
4.6 연산자와 수식 (3) 논리 연산자 연산자 사용법 설명 & op1&op2 op1과 op2가 모두 true인 경우 true && Op1&op2 op1이 false이면 op2를 평가하지 않는다. | op1|op2 op1과 op2 둘 중 하나 이상이 true인 경우 true ∥ op1∥op2 op1이 true이면 op2를 평가하지 않는다. ! !op op가 true이면 false, false이면 true
4.6 연산자와 수식 (4)비트 연산자(비트 단위의 연산) 연산자 사용법 설명 >> op1>>op2 op1을 op2 만큼 오른쪽으로 쉬프트(shift) << op1<<op2 op1을 op2 만큼 왼쪽으로 쉬프트(shift) >>> op1>>>op2 op1을 op2 만큼 오른쪽으로 쉬프트하면서 왼쪽에는 항상 부호에 무관하게 0이 채워짐 & op1&op2 비트 단위의 논리곱(AND) | op1|op2 비트 단위의 논리합(OR) ^ op1^op2 비트 단위의 배타적 논리합(XOR) ~ ~op 비트 단위의 보수
4.6 연산자와 수식 (5) 배정 연산자 연산자 사용법 설명 += op1+=op2 op1=op1+op2 -= op1-=op2 *= op1*=op2 op1=op1*op2 /= op1/=op2 op1=op1/op2 %= op1%=op2 op1=op1%op2 &= op1&=op2 op1=op1&op2 |= op1|=op2 op1=op1|op2 ^= op1^=op2 op1=op1^op2 <<= op1<<=op2 op1=op1<<op2 >>= op1>>=op2 op1=op1>>op2 >>>= op1>>>=op2 op1=op1>>>op2
4.6 연산자와 수식 (6) 3항 연산자 3항 연산자 "?:” 선택문의 if-then-else문을 축약해서 사용할 수 있는 연산자 수식1 ? 수식2 : 수식3 3항 연산자는 우선 수식 1을 평가하여 true인지 false 인지를 판별하여 true이면 수식 2가 평가되고, false 이면 수식 3이 평가되어 그 결과가 수식 1의 결과로 반환 예 : flag = count > 0 ? 0 : 1;
>> >>> << > >= < <<= 4.6 연산자와 수식 연산자의 우선 순위 우선 순위 연산자 1 () [] . 2 ++ -- ~ ! 3 * / % 4 + - 5 >> >>> << 6 > >= < <<= 7 = != 8 & 9 ^ 10 | 11 && 12 ∥ 13 ?: 14 = op=
Tip : 자바의 배열은 한번 생성된 후에는 크기가 변할 수 없다. 4.7 배열 같은 종류의 데이터를 저장하기 위한 자료 구조 배열을 객체로 취급 1차원 배열 선언 type array-name[]; 또는 type[] array-name 다차원 배열 선언 type array-name[][]; 또는 type[][] array-name; 배열의 생성 array-name = new type[size]; 예 : int two_dim[][] = new int[4][5]; Tip : 자바의 배열은 한번 생성된 후에는 크기가 변할 수 없다.
[0][0] [0][1] [0][2] [0][3] [0][4] 4.7 배열 배열의 첨자 열 첨자 [0][0] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] [1][3] [1][4] 행 첨자 [2][0] [2][1] [2][2] [2][3] [2][4] [3][0] [3][1] [3][2] [3][3] [3][4]
String str = "this is a test"; System.out.println(str); // 문자열 인쇄 사용 예: String str = "this is a test"; System.out.println(str); // 문자열 인쇄 int count = 4; System.out.println("Counted" + count + " characters"); // 문자열을 결합하여 인쇄 // 정수 4는 자동으로 문자열로 형 변환