Transcript op1 : op2

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