4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석 4.3 식별자(identifier)와 예약어 4.4 변수와 자료형 4.5 형 변환(Casting) 4.6 연산자와 수식 4.7 배열 4.8 문자열(String) 2018-11-12
4.1 자바 응용 프로그램 분석 (1) 자바의 주석 /* 주석 */ : /*에서 */까지의 모든 것을 무시한다 // 주석 /* 주석 */ : /*에서 */까지의 모든 것을 무시한다 // 주석 : //에서부터 그 줄의 끝까지를 무시한다 /** 주석 */ : /**에서 */까지의 모든 것을 무시한다. 이 주석은 javadoc에 의해 생성되는 HTML 파일에서 사용된다 2018-11-12
응용 프로그램의 예 - (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 + "입니다"); } 클래스의 정의 2018-11-12
응용 프로그램의 예 (3) main() 메소드 public static void main(String args[]) { …… } main() 메소드는 자바 응용 프로그램에 반드시 있어 야 하는 특수한 메소드 프로그램의 실행시 자동으로 실행되는 메소드 C나 C++ 언어의 main() 함수와 같은 역할 일반적으로 자바 응용 프로그램은 main() 메소드 내에 서 다른 클래스의 객체를 생성한 다음 그 객체에 메시 지를 보내어 원하는 결과를 얻는다. 2018-11-12
응용 프로그램의 예 (3) main() 메소드의 매개변수 args[] x = Integer.parseInt(args[0]); 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] 2018-11-12
응용 프로그램의 예 (5) 객체의 생성과 메시지 전달 Exam examobject = new Exam(); 예제 프로그램에서 main() 메소드는 Exam 클래스로부터 객체 examobject를 생성 명령행 인자로 입력된 x, y 값을 매개변수로 하여 examobject 객 체의 add() 메소드를 수행하라는 메시지를 보낸다 Exam 클래스의 add() 메소드는 매개변수로 받은 두 개의 수를 더 하여 결과를 반환하고, 반환된 값은 sum 변수에 저장된다. Exam examobject = new Exam(); sum = examobject.add(x,y); 2018-11-12
응용 프로그램의 예 (6) 표준 출력의 사용 자바의 입출력은 다양한 종류의 하드웨어 장치들과 무관하게 설계 (14장) 표준 출력을 위해 System 클래스와 out 객체, println() 메소드를 이용 println() 메소드는 문자열을 매개변수로 받아 화면에 출력하는 역 할을 한다. 예제의 매개변수에 사용된 정수형 변수 sum의 값은 문 자열로 자동 변환되어 출력된다 System.out.println("입력한 값의 합은 " + sum + " 입니다"); 클래스 이름 객체의 이름 메소드 이름 메소드의 매개변수 2018-11-12
4.2 자바 애플릿 프로그램 분석 애플릿 프로그램의 특징 main() 메소드가 없다 네트웍 환경에서 WWW 검색기에 의해 실행 가능 JDK에서 제공되는 애플릿-뷰어에서 실행 가능 HTML 코드내에서 애플릿 파일(*.class) 호출 작고 간단한 응용에 적합 2018-11-12
애플릿 프로그램의 예 (1)패키지 포함 프로그램에서 사용한 라이브러리 클래스를 import 문을 사용하여 포함 import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); } 2018-11-12
애플릿 프로그램의 예 (2) 클래스 정의 애플릿 프로그램은 반드시 java.applet.Applet 클래스로부터 상 속 받아야 한다. import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); } 2018-11-12
애플릿 프로그램의 예 (3) paint() 메소드 - 애플릿에 그래픽을 출력하는 메소드 매개변수로 지정된 문자열을 import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); } 매개변수로 지정된 문자열을 애플릿의 100,60(애플릿의 좌상단을 기준) 위치에 출력 2018-11-12
애플릿 프로그램의 예 (4) 애플릿의 실행 - 애플릿은 HTML 코드 내에서 호출된다 <HTML> <HEAD> <TITLE> 자바 프로그램 테스트 02 </TITLE> </HEAD> <BODY> <CENTER> <APPLET CODE= "Example.class" WIDTH=400 HEIGHT=200 > </APPLET> </CENTER> </BODY> </HTML> 애플릿의 크기 2018-11-12
4.3 식별자와 예약어 식별자 변수, 상수, 메소드, 배열, 문자열, 사용자가 정의하는 클래스나 메 소드 등을 구분할 수 있는 이름 첫 문자가 영문자나 특수문자('_','$')로 시작 길이에는 제한을 두지 않는다 예약어는 식별자로 사용할 수 없다. 대, 소문자를 구분하여 사용 식별자의 사용 관례 클래스 이름은 대문자로 시작 메소드, 변수, 배열, 문자열 등의 이름은 소문자로 시작 2018-11-12
식별자와 예약어 자바의 예약어 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 2018-11-12
식별자와 예약어 자바는 16비트 유니코드 사용 유니코드는 세계의 다양한 언어들을 지원하기 위해 설계된 문자코 드 체계 현재 34168개의 글자들을 코드화 하고 있으며 최대 65536개의 글 자들을 코드화 할 수 있다 유니코드는 기존의 ASCII 코드 문자 집합을 포함 www.unicode.org 사이트 참조 2018-11-12
4.4 변수와 자료형 변수(variable) 자료형 값(value)이 저장된 메모리의 위치에 주어진 이름 자바는 변수를 사용하기 전에 반드시 선언하여야 한다 자료형 기본 자료형(primitive type) 정수, 실수, 문자, 논리값 등과 같은 8가지의 기본 자료형 기본 자료형 변수는 값을 가진다 매개변수 전달 : call by value 참조 자료형(reference type) 배열, 문자열, 클래스, 인터페이스 등과 같은 자료형 객체에 대한 참조 즉 주소를 가지고 있다 매개변수 전달 : call by reference 2018-11-12
자바의 기본 자료형 타입 설명 키워드 character boolean byte short integer long float 타입 설명 키워드 character boolean byte short integer long float double 16비트 유니코드(Unicode) 문자 데이터 참/거짓 값 부호를 가진 8비트 정수 부호를 가진 16비트 정수 부호를 가진 32비트 정수 부호를 가진 64비트 정수 부호를 가진 32비트 부동소수점 부호를 가진 64비트 부동소수점 char boolean byte short int long float double 2018-11-12
4.5 형변환(Casting) 형 변환은 치역(traget type)에 정의역(source type)의 값 을 배정할 때 발생 확대(widening)변환 치역(traget type)이 정의역(source type)보다 더 넓어 값의 손실 이 발생되지 않고 저장. 예 : 8비트의 바이트 값을 32비트의 정수형으로 변환하는 경우 축소(narrowing)변환 명시적은 형변환 구문을 사용해야 한다 치역(traget type)이 정의역(source type)보다 좁아 값을 저장할 수 없는 경우. 예 : 32비트의 정수형 값을 8비트의 바이트 형으로 변환하면 정보 의 손실이 발생 2018-11-12
형변환(Casting)의 예 정수값을 바이트 값으로 형변환 (target-type) value int a; byte b; ..... b = (byte) a; 2018-11-12
class ConversionDemo{ public static void main(String args[]){ byte b; int i = 259; double d = 525.428; System.out.println(“축소 형변환 결과”); b = (byte) i; System.out.println(“int 259를 byte로 : ” + b); i = (int) d; System.out.println(“double 525.428을 int로 : ” + i ); b = (byte)d; System.out.println(“double 525.428을 byte로 : ” + b ); } 2018-11-12
4.6 연산자와 수식 연산자의 유형 단항연산자 이항 연산자 삼항 연산자 operator op op operator op1 operator op2 삼항 연산자 expr ? op1 : op2 2018-11-12
(1)산술 연산자 2018-11-12
public static void main(String args[]){ int a=5, b=2; int sum = a + b; class Arithmetic{ public static void main(String args[]){ int a=5, b=2; int sum = a + b; int sub = a – b; int mul = a * b; float div = a / b; int mod = a % b; a++; b--; System.out.println(“a+b=”+sum); System.out.println(“a-b=”+sub); System.out.println(“a*b=”+mul); System.out.println(“a/b=”+div); System.out.println(“a의 단항 증가 연산=”+a); System.out.println(“b의 단항 감소 연산=”+b); } 2018-11-12
(2) 관계 연산자 2018-11-12
(2) 논리 연산자 2018-11-12
(3)비트 연산자(비트 단위의 연산) 2018-11-12
public static void main(String args[]){ int a=2, b=5; int c = a | b; class Bitwise{ public static void main(String args[]){ int a=2, b=5; int c = a | b; int d = a & b; int e = a ^ b; int i; int j; i = a << 2; j = b >> 2; System.out.println(“a=”+a); System.out.println(“b=”+b); System.out.println(“a|b=”+c); System.out.println(“a&b=”+d); System.out.println(“a^b=”+e); System.out.println(“a<<2=”+i); } 2018-11-12
(4) 배정 연산자 2018-11-12
public static void main(String args[]){ int a=10; class BitEquals{ public static void main(String args[]){ int a=10; int b1=5, b2=5, b3=5; a+=4; System.out.println(“a+=”+a); a-=4; System.out.println(“a+=”+a); a*=4; System.out.println(“a+=”+a); a/+=4; System.out.println(“a+=”+a); a%=4; System.out.println(“a+=”+a); a|=4; System.out.println(“a+=”+a); System.out.println(“b1=”+b1+”b2=“+b2+”b3=“+b3); b1 >>= 1; b2 <<= 1; b3 >>>= 1; System.out.println(“ b1 >>= 1”+b1); System.out.println(“ b2 <<= 1”+b2); System.out.println(“ b3 >>>= 1”+b3); } 2018-11-12
(5) 3항 연산자 3항 연산자 "?:” 선택문의 if-then-else문을 축약해서 사용할 수 있는 연산자 수식1 ? 수식2 : 수식3 3항 연산자는 우선 수식1을 평가하여 true인지 false 인지를 판별하여 true이면 수식2가 평가되고, false 이면 수식3이 평가되어 그 결과가 수식1의 결과로 반환 예 : flag = count > 0 ? 0 : 1; 2018-11-12
public static void main(String args[]){ int i=10; class TenaryDemo{ public static void main(String args[]){ int i=10; System.out.println(“정수형 변수 i의 값은 ”+i); String str = ( i % 2 == 0) ? “짝수” : “혹수”; System.out.print(str); } 2018-11-12
연산자의 우선 순위 2018-11-12
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 : 자바의 배열은 한번 생성된 후에는 크기가 변할 수 없다 2018-11-12
배열의 첨자 열 첨자 [0][0] [0][1] [0][2] [0][3] [0][4] [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] 2018-11-12
4.8 문자열(String) 자바는 문자열을 String 클래스의 객체로 구현(12장) 사용 예 String str = "this is a test"; System.out.println(str); // 문자열 인쇄 int count = 4; System.out.println("Counted" + count + " characters"); // 문자열을 결합하여 인쇄 // 정수 4는 자동으로 문자열로 형변환 2018-11-12
배열 class Array{ public static void main(String args[]){ String weekly_days[] = {“월요일”, “화요일”, 수요일”, “목요일”, “금요일”, “토요일”, “일요일”}; /* String weekly_days[] = new String[7]; weekly_days[0] = “월요일”; weekly_days[1] = “화요일”; … */ System.out.println(“내가 제일 좋아하는 요일은 ” +weekly_days[4]+”입니다”); } 2018-11-12
public static void main(String args[]){ class Array{ public static void main(String args[]){ int two_array[][] = new int[4][5]; int i, j, k=0; for (i=0; i<4; i++){ for (j=0; j<5; j++){ two_array[i][j] = k; k++; } for (j=0; j<5; j++) System.out.print(two_array[i][j] + “ “); System.out.println(); 2018-11-12