1 / 40

제 2 장 자바 문법 1

제 2 장 자바 문법 1. 2.1 자바 식별자와 키워드. JAVA 의 Token • 특수 형태 - 예약어 (keyword) : abstract, boolean, ..., while          - 연산자 (operator) : +, -, *, /, ..., >>>          - 구분자 (delimiter) : , ; . ( ) { } [ ] • 일반 형태 - 식별자 (identifier) : sum, avr, x, y, a1, ...          - 리터럴 (literal) :

artie
Télécharger la présentation

제 2 장 자바 문법 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제2장 자바 문법 1

  2. 2.1 자바 식별자와 키워드 • JAVA의 Token •특수 형태 - 예약어(keyword) : abstract, boolean, ..., while          - 연산자(operator) : +, -, *, /, ..., >>>          - 구분자(delimiter) : , ; . ( ) { } [ ] •일반 형태 - 식별자(identifier) : sum, avr, x, y, a1, ...          - 리터럴(literal) : 12, 3.14159, 5.23e12, 'c', "string"

  3. 2.1 자바 식별자와 키워드 • 문장(Statement) • 일을 수행(처리)하는 문법상의 최소단위 : Simplest Tasks • 세미콜론(;)으로 문장을 구분 • 예) • int I=0; • System.out.println(“Welcome to Hoseo!”); • Block Statement • 여러 개의 문장이 모인 복합 문장 • Brace로 표시 : { …… }

  4. 2.1 자바 식별자와 키워드 • 표현식(Expression) • 계산을 수행 후, 되돌림(Return)값을 되돌려 주는 일련의 작업 • 수식값이나 논리값 등 • 예 • a++ : a값을 리턴한 후 a값을 하나 증가 시킴 • x * y * Z • x + y / 100 • 치환문(Assign Statement) • = 기호를 이용하여 왼쪽의 값을 오른쪽 변수에 치환 • size = 4; myName = “Hong Gil Dong”;

  5. 2.1 자바 식별자와 키워드 • 변수와 자료 유형 - 변수(Variables) • 값이 저장되는 메모리의 위치 • 이름(name), 값(value), 유형(type)으로 구성 - 변수 선언 • 변수의 자료 유형을 명시 • 모든 변수는 쓰이기 전에 자료 유형이 선언 되어야 함 • int myAge; • String myName;

  6. 2.1 자바 식별자와 키워드 • 변수와 자료 유형 - 다중 선언 • int x, y, z; • int x=0, y=0, z=0; • int x, y, z=0; • 자료 유형의 종류 • 4가지 기본유형에 8가지의 세부 기본형 • Integer형(4), Float-point형(2), Character형(1), Boolean형(1) • Array, Class, Interface

  7. 2.1 자바 식별자와 키워드 • 변수와 자료 유형 - 기본 자료형 8가지 • 정수형 : integer • byte, short, int, long • 실수형(부동소수형) : float-point • float, double • 논리형 : boolean • boolean • 문자형 : character • char • 배열(Array) • 클래스(Class) • 인터페이스(Interface)

  8. 2.1 자바 식별자와 키워드 • 자바 식별자 (identifier) • 클래스 이름, 메소드 이름, 변수 이름 등 • 유니코드를 사용한다 • 작성규칙 • 문자와 숫자의 연속이다 • 문자로 시작한다 • 키워드, true, false, null과 같은 철자를 사용할 수 없다 • ‘_’, ‘$’ 등으로 시작할 수 있다 • 대·소문자를 구별한다 • 길이에 제한이 없다

  9. 2.1 자바 식별자와 키워드 • 올바른 식별자의 예 • id • userName • user_name • _userName • $userName • 틀린 식별자의 예 user name 3d_studio this #arg

  10. 2.1 자바 식별자와 키워드 • 주석(Comments) • 언어의 문법에 관련 없이 프로그래머나 시스템이 프로그램에 기술 • 3가지 방법 • // 이 주석은 한 라인에서 사용할 수 있는 주석문. • /* 이 주석은 시작과 끝에 표시하면 여러 라인에 주석을 사용할 수 있음. */ • /** 이 주석은 시스템에서 자동적으로 발생하여 주는 주석이므로 프로그래머는 가급적 사용금지. */

  11. 2.1 자바 식별자와 키워드 • 자바의 키워드 abstract default if private throw boolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class float native switch const for new synchronized continue goto package this • 주의 1) const와 goto는 예약어로 지정됐지만 현재 자바에서는 사용되지 않는다. 2) "true", "false", "null" 은 boolean/null 상수로서 예약어처럼 사용할 수 있다. 3) 문자가 자바 문자나 숫자인가를 알아보기 위해서는 Character.isJavaLetterOrDigit() 메소드를 이용할 수 있다. 4) 유니코드에 관한 정보는 http://www.unicode.org/에서 얻을 수 있다.

  12. 2.1 자바 식별자와 키워드 • 예제 : id.java 1 class id { 2 public static void main(String args[]) { 3 String 이름= "홍길동"; 4 System.out.println("안녕하세요. " + 이름+" 님!"); 5 } 6 } • 결 과 % javac id.java % java id 안녕하세요. 홍길동 님!

  13. 2.1 자바 식별자와 키워드 • 자바에서는 클래스, 메소드, 멤버필드의 네임(name) 스페이스가 분리 따라서 클래스, 메소드, 멤버필드의 이름이 동일해도 됨 • 예제 : NameTest.java ( ) 1 class SameNamePoint int x, y; 2 3 class NameTest { 4 5 static SameNamePoint SameNamePoint(int x, int y) { 6 SameNamePoint p = new SameNamePoint(); …………. …………. 11 public static void main(String[] args) { 12 int SameNamePoint; 13 SameNamePoint[] pa = new SameNamePoint[2]; 14 for (SameNamePoint = 0; SameNamePoint < 2; SameNamePoint++) { 15 pa[SameNamePoint] = new SameNamePoint(); ………….. ………...

  14. 2.1 자바 식별자와 키워드 • break/continue에서 사용되는 라벨은 변수와 다른 네임 스페이스를 갖는다. 따라서 라벨과 변수의 이름이 동일해도 무방 • 예제 : BreakLabel.java ( ) 1 class BreakLabel { 2 public static void main(String args[ ]) { 3 i: 4 for (int i = 0; i <= 100; i++) { 5 int j = 0; 6 while (j < 10) { 7 j++; …………...

  15. 2.2 자료 타입 • 자바 자료 타입

  16. 2.2.1 기본 자료 타입 • 기본 자료 타입 • 주 의 1) 자바에서는 C언어의 기본 자료 타입에 boolean과 byte라는 타입을 추가 2) 각 자료타입은 클래스의 멤버필드/배열의 컴포넌트는 처음에 생성될 때 디폴트 값으로 초기화된다. 지역 변수인 경우에는 초기화되지 않는다

  17. 2.2.1 기본 자료 타입 1. int 타입 • int 타입은 32비트 정수 타입으로 -231 ~ 231-1 사이의 값을 가진다. int 타입에서 계산은 정수 타입의 값을 리턴한다. • 예제 : Int.java 1 class Int { 2 3 public static void main(String ard[]) { 4 int int1 = 5, int2 = 28; 5 int int3, int4, int5 ; 6 7 int3 = int2 * int1; 8 int4 = int2 / int1; 9 int5 = 25 / int1; 10 11 System.out.println("28 * 5 = "+ int3); 12 System.out.println("28 / 5 = "+ int4); 13 System.out.println("25 / 5 = "+ int5); 14 } 15 }

  18. 2.2.1 기본 자료 타입 2. byte, short 타입 • byte와 short도 int와 마찬가지로 정수 타입이다. • byte는 -27 ~ 27-1 사이의 값 • short은 -215 ~ 215-1 사이의 값 • 예제 : Byte.java 1 class Byte { 2 public static void main(String args[]) { 3 byte byte1; 4 5 byte1 = 256; 6 System.out.println("byte1 = "+byte1); 7 } 8 }

  19. 2.2.1 기본 자료 타입 • 선언 • long인 경우 숫자 뒤에 l이나 L을 추가(권고안) • long long_var = 123456789L; • 표현 진수 : 8진수, 10진수, 16진수 • 8진수 : 0(zero)로 시작 • int a = 02; • 16진수 : 0x(zero, x)로 시작 • int b = 0x33;

  20. 2.2.1 기본 자료 타입 3. 실수형 • 실수를 표현하는 기본자료 • float : 32bit • double : 64bit • double이 기본 • float로 표현할 때는 f, F를 추가(반드시) • 예) • float float_variabe = 3.14f; • double double_variable = 3.14;

  21. 2.2.1 기본 자료 타입 3-1. float, double 타입 • 플로팅포인트 타입은 IEEE 754-1985 표준에 따라 표현된다. 이 표준에 따르면 플로팅 포인트 타입은 -0.0과 +0.0, 2개의 0.0을 가진다. 또한 오버플로우(overflow)와 언더플로우(underflow)가 발생할 수 있다. • 표준에는 유효하지 않은 연산 ( * 0.0, 0.0 / 0.0 등) 결과를 위해 NaN (Not a Number)을 가지고 있다. NaN은 숫자가 아니다. • 두 실수 x, y를 이용해서 연산할 수 있는 예

  22. 2.2.1 기본 자료 타입 • 예제 : FloatingOne.java 1 class FloatingOne { 2 public static void main(String args[]) { 3 float float1; 4 5 float1 = 3.14; 6 } 7 } • 결 과 % javac FloatingOne.java FloatingOne.java:5: Incompatible type for =. Explicit cast needed to convert double to float. float1 = 3.14; ^ 1 error

  23. 2.2.1 기본 자료 타입 • 예제 : FloatingFour.java 1 class FloatingFour { 2 public static void main(String args[]) { 3 int int1; 4 float float1 = 28.0f, float2 = 5; 5 6 int1 = (int)(float1 / float2); 7 System.out.println("(int)(28.0 / 5.0) = "+int1); ………….. • 결 과 % java FloatingFour (int)(28.0 / 5.0) = 5

  24. 2.2.1 기본 자료 타입 4. char 타입 • 문자형 기본자료 • char • 2byte(16비트) • Unicode 이용 (34,168문자) • 전세계적인 언어를 지원하기 위하여 만든 코드 체계 • 논리형 기본자료 • boolean • 1 Bit 크기로 true, false 값으로 구성 • 다른 형으로 변환 불가능 범위 값 문자 세트 \u0030 - \u0039 \u0024 \u0041 - \u005a \u0061 - \u007a 0-9 $ A-Z a-z ISO-LATIN-1 digits Latin Capital Letters Latin Small Letters

  25. 2.2.1 기본 자료 타입 4-1. char 타입 • char 타입은 16 비트의 부호가 없는 유니코드로 정의 • 예제: CharOne.java 1 class CharOne { 2 public static void main(String args[]) { 3 char c = 'a'; 4 int int1 ; 5 6 int1 = c; 7 System.out.println("int1 = "+ int1); 8 9 int1 = int1 + 1; 10 System.out.println("int1 = "+ int1); 11 System.out.println("(char)"+ int1 +" = "+ (char)int1); ……… • 예제: CharTwo.java 1 class CharTwo { 2 public static void main(String args[]) { 3 char han = '\ud55c'; 4 char gul = '\uae00’; ……..

  26. 2.2.1 기본 자료 타입 5. boolean 타입 • boolean 타입은 true나 false 값만을 가질 수 있고, 다른 타입(예, int)이 boolean 타입으로 변환은 불가능하다. 따라서 C 언어에서처럼 .... while( 1 ) { ...... ...... } 형태의 프로그램은 작성할 수 없고, 아래와 같은 형식으로 작성해야 한다 • 예: ..... while(true) { ...... ...… }

  27. 2.2.1 기본 자료 타입 6. 리터럴 (Literal) • 프로그램의 소스에서 직접 값으로 표현된 것 • 기본 자료형과 문자열은 리터럴로 직접 값을 표현할 수 있는 방법을 제공 • 예: a = 2; // 2는 int형 리터럴 x = 0xA; // A는 16진수로 표현된 int형 리터럴 o = 055; // 55는 8진수로 표현된 int형 리터럴 b = 5L; // 5는 long형 리터럴 f = 2.0f; // 2.0f는 float형 리터럴 d = 2.0; // 2.0은 double형 리터럴 e = 2.0E4; // double형 리터럴, 2.0 * 104을 의미한다. t = true; // true는 boolean형 리터럴 c = 'd'; // d는 문자형 리터럴 s = "Hello"; // Hello는 문자열 리터럴 • 주 의 - 자바에서는 지원하지 않는 C 언어 자료 유형 1) 포인터 : 자바에서는 포인터를 지원하지 않는다. 2) struct / union : 자바에서는 struct와 union을 지원하지 않는다. 사용자는 필요한 경우에 클래스를 정의해서 struct처럼 사용할 수 있다.

  28. 2.2.1 기본 자료 타입 7. 상수(Literals) - 이미 정해져 있어, 값만 보면 직관적으로 이해될 수 있는 상수 값 • Number literals • 30, 0x10, 3.14 • Boolean literals • true, false • Character literals • ‘’(single quote)에 의하여 둘러싸인 글자 하나 • ‘a’ • 특수 문자

  29. 2.2.1 기본 자료 타입 • String literals • “ ”(double quote)에 의하여 둘러싸인 문자열 • “This is a \ “ Sample test \” ” • “This string brought to you Java trade mark by Java\u2122”

  30. 2.2.2 레퍼런스 타입 1. 레퍼런스 타입 • C++과 자바에서 객체를 생성하는 방법 1 int a = 100 ; 2 Car mycar, yourcar; 3 mycar = new Car(); 4 yourcar = mycar;

  31. 2.2.2 레퍼런스 타입 2. ==과 equals() • == 연산자와 equals() 메소드의 차이점 • == 연산자는 두 변수의 값이 같은가를 물어본다 • equals() 메소드는 객체의 내용이 같은가를 물어본다. • == 연산자는 기본 자료형이나 레퍼런스에 사용 • equals() 메소드는 레퍼런스 타입에서만 사용 • 두 연산자의 차이점의 예

  32. 2.2.2 레퍼런스 타입 • 예제: Equal.java 1 public class Equal { 2 public static void main(String args[]) { 3 String a = new String("abc"); 4 String b = "abc"; 5 String c = b; 6 String d = a; 7 8 StringBuffer e = new StringBuffer("abc"); 9 StringBuffer g = e; 10 11 if(a = = b) { 12 System.out.println("a= =b"); 13 } 14 // if(a = = e) { // 컴파일 에러 15 // System.out.println("a= =e"); 16 // } …………...

  33. 2.2.2 레퍼런스 타입 20 if(b.equals(a)) { 21 System.out.println("b.equals(a)"); 22 } 23 if(b.equals(e)) { 24 System.out.println("b.equals(e)"); ……………... • 결 과 % java Equal c==b b.equals(a)

  34. 2.2.3 문자열과 배열 • 문자열과 배열은 String 클래스로 제공 • 기본 자료 유형이 아님 1. 문자열: String 클래스 • String은 문자열을 표현하기 위해 자바 언어에서 제공하는 클래스 • String 클래스는 내용을 변경할 수 없다 • Stirng 클래스의 '+' 연산자는 두 개의 문자열을 결합하는 연산자이다. • '+' 연산자를 이용해서 문자열을 결합하는 경우에, String 클래스의 내용이 변경되는 것이 아니라 새로운 객체가 생성 예: String message; //변수 message를 문자열 클래스 유형의 변수로 선언. ..... message = "hello "; // message에 "hello "라는 값을 할당. message += "world !"; // "hello "와 "world !"를 결합해서 message변수에 할당

  35. 2.2.3 문자열과 배열 2. 배열 • 자바에서 배열은 동적으로 생성할 수 있는 클래스 • C 언어에서와 유사하게 사용 예 int k[ ]; // int 배열을 선언. int[ ] k 와 동일 • 배열은 선언한 후에 new 연산자를 사용해서 allocate 하여야 한다. • 위에서처럼 선언만 한 경우에는 사용할 수 없다. 사용하기 전에 반드시 new 연산자를 이용해서 배열 클래스를 생성 • "int k[10];" 형태로는 사용할 수 없다. • 배열의 인덱스는 0 ~ length - 1까지 사용될 수 있고, C 언어와는 달리 배열의 크기를 벗어나는 인덱스는 사용할 수 없다.

  36. 2.2.3 문자열과 배열 • 배열의 초기화 예: int[] k = {1, 2, 3}; • 아래와 동일한 의미 int k[ ]; k = new int[3]; // k[ ] = new int[3]은 사용할 수 없다. k[0] = 1; k[1] = 2; k[2] = 3; • 배열은 기본 자료 유형뿐만 아니라 클래스의 객체도 포함할 수 있다 • 문자열의 배열을 사용하는 경우이다. 예: String[] names = new String[50];

  37. 2.2.3 문자열과 배열 예제: Gauss.java 1 class Gauss { 2 public static void main(String[] args) { 3 int[] ia = new int[101]; 4 for (int i = 0; i < ia.length; i++) 5 ia[i] = i; 6 7 int sum = 0; 8 for (int i = 0; i < ia.length; i++) 9 sum += ia[i]; 10 ………...

  38. 2.2.3 문자열과 배열 3. 다차원 배열 • 자바에서는 다음과 같은 형태로 다차원 배열을 선언할 수 있다. 예: int twoDarray[][]; String threeDarray[][][]; • 다차원 배열을 선언한 뒤에 new 연산자를 이용해서 배열을 생성시켜 준다. • 다차원 배열에서 C 언어와 다른 점 (2차원 배열을 예) • C 언어에서는 배열이 격자 모양으로 가로 세로의 크기가 고정 • 자바에서는 다양한 형태의 배열을 가질 수 있다.

  39. 2.2.3 문자열과 배열 • 예: twoDarray = new int[4][5]; • 이것은 4 x 5의 격자 모양의 배열을 만든 것이다. • 예: twoDarray = new int[4][]; • 이것은 전체 배열의 크기는 4로 만들고, 배열의 각 컴포넌트는 필요한 경우에 동적으로 크기를 결정

  40. 2.2.3 문자열과 배열 • 예제: MultiDarray.java 1 class MultiDarray { 2 public static void main(String args[]) { 3 char stars[][]; 4 5 stars = new char[6][]; 6 for(int i=0; i < stars.length; i++) { 7 stars[i] = new char[i+1]; 8 for(int j=0; j < stars[i].length; j++) { 9 stars[i][j] = '*'; 10 } ………….

More Related