40
2 2 제 제제 제제 제 제제 제제 1 1

제 2 장 자바 문법 1

  • Upload
    artie

  • View
    71

  • Download
    5

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 제 2 장 자바 문법  1

제제 22 장 자바 문법 장 자바 문법 11

Page 2: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드 JAVA의 Token

• 특수 형태          - 예약어 (keyword) : abstract, boolean, ..., while 

         - 연산자 (operator) : +, -, *, /, ..., >>> 

         - 구분자 (delimiter) : , ; . ( ) { } [ ]

• 일반 형태          - 식별자 (identifier) : sum, avr, x, y, a1, ... 

         - 리터럴 (literal) : 

          12, 3.14159, 5.23e12, 'c', "string" 

Page 3: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드

문장 (Statement) 일을 수행 (처리 )하는 문법상의 최소단위 : Simplest Tasks

세미콜론 (;)으로 문장을 구분예 )

int I=0; System.out.println(“Welcome to Hoseo!”);

Block Statement 여러 개의 문장이 모인 복합 문장

Brace로 표시 : { …… }

Page 4: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드

표현식 (Expression) 계산을 수행 후 , 되돌림 (Return)값을 되돌려 주는 일련의 작업

수식값이나 논리값 등 예

a++           : a값을 리턴한 후 a값을 하나 증가 시킴 x * y * Z x + y / 100 

치환문 (Assign Statement)= 기호를 이용하여 왼쪽의 값을 오른쪽 변수에 치환

size = 4;    myName = “Hong Gil Dong”;

Page 5: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드

변수와 자료 유형   - 변수 (Variables)

값이 저장되는 메모리의 위치 이름 (name), 값 (value), 유형 (type)으로 구성

   - 변수 선언 변수의 자료 유형을 명시

모든 변수는 쓰이기 전에 자료 유형이 선언 되어야 함 int myAge; String myName;

Page 6: 제 2 장 자바 문법  1

2.1 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

Page 7: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드 변수와 자료 유형   - 기본 자료형 8가지

정수형 : integerbyte, short, int, long

실수형 (부동소수형 ) : float-point float, double

논리형 : booleanboolean

문자형 : characterchar

배열 (Array) 클래스 (Class) 인터페이스 (Interface)

Page 8: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드

자바 식별자 (identifier) 클래스 이름 , 메소드 이름 , 변수 이름 등 유니코드를 사용한다

작성규칙 문자와 숫자의 연속이다 문자로 시작한다 키워드 , true, false, null과 같은 철자를 사용할 수 없다 ‘_’, ‘$’ 등으로 시작할 수 있다 대 ·소문자를 구별한다 길이에 제한이 없다

Page 9: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드 올바른 식별자의 예

id

userName

user_name

_userName

$userName

틀린 식별자의 예

    user name

3d_studio  

this       

#arg       

Page 10: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드

주석 (Comments)

언어의 문법에 관련 없이 프로그래머나 시스템이 프로그램에 기술

3 가지 방법// 이 주석은 한 라인에서 사용할 수 있는 주석문 ./* 이 주석은 시작과 끝에 표시하면 여러 라인에 주석을 사용할 수 있음 . *//** 이 주석은 시스템에서 자동적으로 발생하여 주는 주석이므로 프로그래머는 가급적 사용금지 . */

Page 11: 제 2 장 자바 문법  1

2.1 2.1 자바 식별자와 키워드자바 식별자와 키워드 자바의 키워드

abstract  default      if             private         throwboolean      do             implements  protected  throwsbreak          double      import             public              transientbyte            else           instanceof       return               trycase            extends     int                   short             voidcatch          final           interface        static             volatilechar            finally       long               super             whileclass           float          native             switchconst          for             new                synchronizedcontinue     goto          package          this

주의1) const와 goto는 예약어로 지정됐지만 현재 자바에서는 사용되지 않는다 .

2) "true", "false", "null" 은 boolean/null 상수로서 예약어처럼 사용할 수 있다 .

3) 문자가 자바 문자나 숫자인가를 알아보기 위해서는 Character.isJavaLetterOrDigit() 메소드를 이용할 수 있다 .

4) 유니코드에 관한 정보는 http://www.unicode.org/에서 얻을 수 있다 .

Page 12: 제 2 장 자바 문법  1

2.1 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안녕하세요 . 홍길동 님 !

Page 13: 제 2 장 자바 문법  1

2.1 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();    …………..    ………...

Page 14: 제 2 장 자바 문법  1

2.1 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++;      …………...

Page 15: 제 2 장 자바 문법  1

2.2 2.2 자료 타입자료 타입

자바 자료 타입

기 본 자 료 타 입

레 퍼 런 스 타 입

boolean

(numeric )숫 자 (integral)정 수 형 byte

short

char

int

long

float

double

(floating)실 수 형

, , 클 래 스 인 테 페 이 스 배 열

Page 16: 제 2 장 자바 문법  1

2.2.1 2.2.1 기본 자료 타입기본 자료 타입 기본 자료 타입

주 의

1) 자바에서는 C언어의 기본 자료 타입에 boolean과 byte라는 타입을 추가

2) 각 자료타입은 클래스의 멤버필드 /배열의 컴포넌트는 처음에 생성될 때 디폴트 값으로 초기화된다 .           지역 변수인 경우에는 초기화되지 않는다

Page 17: 제 2 장 자바 문법  1

2.2.1 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 }

Page 18: 제 2 장 자바 문법  1

2.2.1 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 }

Page 19: 제 2 장 자바 문법  1

2.2.1 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;

Page 20: 제 2 장 자바 문법  1

2.2.1 2.2.1 기본 자료 타입기본 자료 타입

3. 실수형 실수를 표현하는 기본자료

float : 32bitdouble : 64bit

double이 기본 float로 표현할 때는 f, F를 추가 (반드시 )

예 ) float float_variabe = 3.14f;double double_variable = 3.14;

Page 21: 제 2 장 자바 문법  1

2.2.1 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 등 ) 결과를 위해 Na

N (Not a Number)을 가지고 있다 . NaN은 숫자가 아니다 .

두 실수 x, y를 이용해서 연산할 수 있는 예

Page 22: 제 2 장 자바 문법  1

2.2.1 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.javaFloatingOne.java:5: Incompatible type for =. Explicit cast needed to convert double to float. float1 = 3.14; ^1 error

Page 23: 제 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

2.2.1 2.2.1 기본 자료 타입기본 자료 타입

Page 24: 제 2 장 자바 문법  1

2.2.1 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-Za-z

ISO-LATIN-1 digits

Latin Capital LettersLatin Small Letters

Page 25: 제 2 장 자바 문법  1

2.2.1 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’;     ……..

Page 26: 제 2 장 자바 문법  1

2.2.1 2.2.1 기본 자료 타입기본 자료 타입5. boolean 타입

boolean 타입은 true나 false 값만을 가질 수 있고 , 다른 타입 (예 , int)이 boolean 타입으로 변환은 불가능하다 . 따라서 C 언어에서처럼....while( 1 ) {   ......   ......

     }

형태의 프로그램은 작성할 수 없고 ,  아래와 같은 형식으로 작성해야 한다

예 :.....

  while(true) {   ......   ...…

     }

Page 27: 제 2 장 자바 문법  1

2.2.1 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처럼 사용할 수 있다 .

Page 28: 제 2 장 자바 문법  1

2.2.1 2.2.1 기본 자료 타입기본 자료 타입

7. 상수 (Literals)

- 이미 정해져 있어 , 값만 보면 직관적으로 이해될 수 있는 상수 값 Number literals

30, 0x10, 3.14

Boolean literals

true, false

Character literals

‘’(single quote) 에 의하여 둘러싸인 글자 하나 ‘a’

특수 문자

Page 29: 제 2 장 자바 문법  1

2.2.1 2.2.1 기본 자료 타입기본 자료 타입

String literals

“ ”(double quote) 에 의하여 둘러싸인 문자열

“This is a \ “ Sample test \” ”

“This string brought to you Java trade mark by Java\u2122”

Page 30: 제 2 장 자바 문법  1

1. 레퍼런스 타입 C++과 자바에서 객체를 생성하는 방법

1 int  a = 100 ;2 Car  mycar, yourcar;3 mycar = new Car();4 yourcar = mycar;

2.2.2 2.2.2  레퍼런스 타입레퍼런스 타입

Page 31: 제 2 장 자바 문법  1

2.2.2 2.2.2  레퍼런스 타입레퍼런스 타입2. ==과 equals()

== 연산자와 equals() 메소드의 차이점== 연산자는 두 변수의 값이 같은가를 물어본다equals() 메소드는 객체의 내용이 같은가를 물어본다 .

 == 연산자는 기본 자료형이나 레퍼런스에 사용equals() 메소드는 레퍼런스 타입에서만 사용

두 연산자의 차이점의 예

Page 32: 제 2 장 자바 문법  1

2.2.2 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  //      }    …………...    

Page 33: 제 2 장 자바 문법  1

2.2.2 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 Equalc==bb.equals(a)

Page 34: 제 2 장 자바 문법  1

2.2.3 2.2.3 문자열과 배열문자열과 배열

문자열과 배열은 String 클래스로 제공 기본 자료 유형이 아님

1. 문자열 : String 클래스

String은 문자열을 표현하기 위해 자바 언어에서 제공하는 클래스 String 클래스는 내용을 변경할 수 없다 Stirng 클래스의 '+' 연산자는 두 개의 문자열을 결합하는 연산자이다 .

'+'  연산자를 이용해서 문자열을 결합하는 경우에 ,  String 클래스의 내용이 변경되는 것이 아니라 새로운 객체가 생성

예 :String  message;        // 변수 message 를 문자열 클래스 유형의 변수로

선언 .      .....

message = "hello  ";    // message에 "hello  "라는 값을 할당 .message +=  "world !"; // "hello  "와 "world !"를 결합해서 message 변수에

할당

Page 35: 제 2 장 자바 문법  1

2.2.3 2.2.3 문자열과 배열문자열과 배열

2. 배열

자바에서 배열은 동적으로 생성할 수 있는 클래스 C 언어에서와 유사하게 사용

예int k[ ];    // int 배열을 선언 .  int[ ] k 와 동일

배열은 선언한 후에 new 연산자를 사용해서 allocate 하여야 한다 .

위에서처럼 선언만 한 경우에는 사용할 수 없다 .   사용하기 전에 반드시 new 연산자를 이용해서 배열 클래스를 생성

"int k[10];" 형태로는 사용할 수 없다 .

배열의 인덱스는 0 ~ length - 1까지 사용될 수 있고 ,    C 언어와는 달리 배열의 크기를 벗어나는 인덱스는 사용할 수

없다 .

Page 36: 제 2 장 자바 문법  1

2.2.3 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];

Page 37: 제 2 장 자바 문법  1

예제 : 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………...

2.2.3 2.2.3 문자열과 배열문자열과 배열

Page 38: 제 2 장 자바 문법  1

2.2.3 2.2.3 문자열과 배열문자열과 배열

3. 다차원 배열

자바에서는 다음과 같은 형태로 다차원 배열을 선언할 수 있다 .

예 :int twoDarray[][];

String threeDarray[][][];

다차원 배열을 선언한 뒤에 new  연산자를 이용해서 배열을 생성시켜 준다 .

다차원 배열에서 C 언어와 다른 점 (2차원 배열을 예 ) 

C 언어에서는 배열이 격자 모양으로 가로 세로의 크기가 고정

자바에서는 다양한 형태의 배열을 가질 수 있다 .

Page 39: 제 2 장 자바 문법  1

2.2.3 2.2.3 문자열과 배열문자열과 배열

예 :twoDarray = new int[4][5];

이것은 4 x 5의 격자 모양의 배열을 만든 것이다 . 

예 :twoDarray = new int[4][];

이것은 전체 배열의 크기는 4로 만들고 , 배열의 각 컴포넌트는 필요한 경우에 동적으로 크기를 결정

Page 40: 제 2 장 자바 문법  1

2.2.3 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             } ………….