관리 메뉴

JIHYUN JEONG

[java] 엄마도 이해하는 자바 기본 1일차 본문

Information Technology/Java

[java] 엄마도 이해하는 자바 기본 1일차

StopHyun 2013. 2. 18. 10:52


□ 
Java history (AM 09:00 ~ 10:00)

  ○ JDK 1.0 (jan 23, 1996) ~ Java SE 7.0(July 28, 2011)
  ○ Java SE 7.0 -> JDK 7.0 이라고 호칭함
  ○ JDK 1.1 과 1.2와의 차이가 커짐
  ○ JDK 1.2부터 Java2로 칭함(J2SE)


 

□ Java
 - 다양한 소형 가전기기에서 실행 가능한 호환성 있는 언어를 만들려는 Project로부터 시작

□ Java platform
 ○ SE(Standard Edition), EE(Enterprise Edition - 분산환경,물리적으로 떨어져 있는 환경에서 운영되는 프로그램,ex 브라우저), ME(Micro Edition, ex. 모바일, 셋톱박스, 네비게이션, 초창기에 Sun에서 사용함, 현재는 안드로이드가 대체)
 ○ ME  
 ○ EE - 예,High-End Server
 ○ SE

□ Java의 장점 (10:00 ~ 11:40)
 ○ Simple & easy
  - 타 언어에 비해 쉽다
 ○ Platform independent (플랫폼 독립적) [★ 핵심] 
  - 가장 큰 장점(플랫폼을 따지지 않는다)
  - 플랫폼 이란 가장 기본적으로 운영체제를 생각하면 됨
 ○ Object-oriented programming (객체지향 프로그래밍)
  - 반대개념 : 절차지향 프로그램, 순서를 중요시 여김
  - 객체는 부품들이다. 즉 부품들을 조립해서 만든다.
  - JDK는 부품들의 집합
 ○ Mutil-Thread
 ○ Security
  - 보안성이 강화됨
 ○ GC(Garbage Collection)
  - 메모리 관리를 따로 해줄 필요가 없다

□  Program installation & 환경설정
 1. JDK 7.0 설치 (부품)
  - www.oracle.com → download 
 2. JDK 7.0 API document unzip (설명서)
  - www.oracle.com → download  Java SE Development Kit 7 Documentation
  - API 문서 경로 : jdk-7u11-apidocs\docs\api\index.html (API 문서)
 3. IDE : Eclipse 
  - http://www.eclipse.org  → Eclipse IDE for Java EE Developers
  - EE로 설치하는 이유는 서블릿/JSP 할 때 추가 설치를 하지 않기 위해 함
  - 실행시 workspace 경로를 지정해야함
  - 이클립스에서 경로를 못 찾겠다고 나오는 상황
    (1). eclipse.ini 파일을 에디티 플러스를 통해 열고 
    (2).  -vmargs를  
         -vm
         C:\Program Files\Java\jdk1.7.0_13\bin\javaw.exe로 저장
    (3). 이클립스 재 실행
 4. jdk installation folder : path에 추가 (jdk\bin)
  - 내 컴퓨터 > 속성 > 고급 > 환경변수 > 시스템 변수 > Path 클릭 > 편집 > 변수값 > 맨 앞쪽 > C:\Program Files\Java\jdk1.7.0_13\bin;(세미콜론 ';'을 잊으면 안됨) 
  - 확인법 : cmd > javac  > 여러 옵션 값이 보이면 정상설치가 된것 (path가 한글로 나오면 설정이 잘 못된것)

 5. 작업 폴더 생성 (c:\workspace)

※ 설치순서  
 - 작업폴더 생성(c:\workspace) > JDK 7.0 > Eclipse > Path 설정
※ 개발할때는 설명서를 항상 켜 놓고 작업
※ JDK는 플랫폼(OS)를 따진다. 

 ○  폴더 설명
  - C:\Program Files\Java\jdk1.7.0_13\bin (실행파일 폴더, 가장중요한 폴더)
   * javac : 컴파일러(문법 체크)
   * java : 실행
  - C:\Program Files\Java\jdk1.7.0_13\include (헤더 파일)
  - C:\Program Files\Java\jdk1.7.0_13\lib (라이브러리 파일)
  - C:\Program Files\Java\jdk1.7.0_13\src.zip (부품의 소스)

□  Java development environment
 ○ JRE(Java Runtime Environment)
  - JVM + API(Application Programming Interface)
  - API : 부품
  - JVM : 실행시켜주는 주체

 ○ JDK(Java Development Toolkit)
  - Compiler를 비롯한 개발에 필요한 여러 도구 + JRE
  - (API문서작성, 유틸리티)

□ Java Application Execution (PM 1:00 ~ 2:00)
 ○ HelloWorld.java (javac[compile]) → HelloWorld.clss (java[execute]) → JVM (Java Virtual Machine) 
  - JVM 역활 : class 파일을 실행이 되도록 중간에 맞춰주는 역활
  -  

□ Eclipse 단축키
 ○ System.out.println(); : sysout + Ctrl + Space bar 
 ○ 줄 복사 : (커서를 맨 끝에 두고)Ctrl + Alt + ↓

□ Java programming 주의사항
 1. 대소문자 구분
 2. main() 함수가 있는 클래스를 실행해야 함
 - Main 있는 클래스 : 실행
 - Main 없는 클래스 : 부속품 (ex. 나사)
 3. 한 파일에 public 클래스는 한 개만 가능하며 이때 파일 이름은 public클래스 이름으로 함
  - 컴파일 할때는 Public Class를 [compile], 실행할때는 메인 메소드를 가지고 있는 클래스를 [execute]
 4. 클래스 이름은 대문자(명사), 메소드 이름은 소문자(동사)로 시작

□ keywords (2:00 ~ 3:00)
 - 예약어 (예, abstract, assert, boolean, break, this, case, catch, char, class, const, continue, default, do, double....etc)
 - 자주색으로 나오는 Keywords

□ Java Data Types
 ○ Primitive type (기본타입)
  * 논리형 
   - boolean
  * 숫자형 
   - 정수형 → byte, short, int(O), long, char(정수형으로 사용되지만 글자의 코드 값을 위해서 사용됨)
   - 실수형 → float, double(O)
 ○ reference type
  * class
  * interface
  * array 

□ 제어문 (3:00 ~ 4:00)
 ○ If ~ else
   - if (조건식) {
        실행부분
      }
   
    - if (조건식) {
        실행부분
     }else{
         실행부분
     }
     - 예시
       if(b2 >100)
System.out.println("큰수");
else
System.out.println("작은수 ");
○ Switch ~ case
  - 여러 가지 경우 중 하나의 값을 선택해 실행
  - Switch ~ case → if ~ else 케이스로 모두 전환 가능, 역은 모두 전환 가능하지 않음.
  - integer_expr  
     switch (integer_expr  ) {
                          case integer_expr :
System.out.println("Coffee?");
break;
                               }
   * byte, short, int or char (long을 뺀 나머지 정수형이 올수 있다)
  - 예시
   switch (choice) {
case 37:
System.out.println("Coffee?");
break;
case 45:
System.out.println("Tea?");
break;
default:      // 위에 case에 해당되는게 없으면 기본으로 실행, 보통 맨위에 있으나 아래에 있어도 상관없음
System.out.println("???");
break;
}
   - [실습 1]
       public static void main(String[] args) {
int count =13;
char c='y';
switch (count) {
case 1:
System.out.println("first...");
break;
case 2:
System.out.println("second");
break;
case 3:
System.out.println("third");
break;
default:
System.out.println("other");
break; // 없어도 상관없음
}
}
   - [실습 2]
      

public static void main(String[] args) {
int count =13;
char c='y';
switch (c) {
case 'x':
System.out.println("first...");
break;
case 'y':
System.out.println("second");
break;
case 'z':
System.out.println("third");
break;
default:
System.out.println("other");
break; // 없어도 상관없음
}
}

   - 주의사항 : 하나의 case가 끝나면 break로 멈춰줘야 함
   - Switch case 는 동등비교 VS if else case는 동등비교 + 조건비교 가능
   - Switch case 문을 사용할때 가독성이 좋음, 전체적인 구조파악 용이 

□ 반복문 
○ for Loop
  - for (초기값, 조건, 증감식) {
            문장
     }
   - [예시] 
      for (int i =0; i<10; i++) {
        System.out.println(i);
     }
    - [실습]
      public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("i=" +i);
}
}
    - 무한루프 : for ( ; ; ) { }

○ for While
  - while (상태) {
       문장
    }
  - int i =0; // 초기값 지정해줘야함
    while (i < 10) {
System.out.println("i =" + i);
i++; // 증감식
    }
   - 무한루프 
     boolean flag = true;
     while (flag) { }

○ do while Loop (잘 사용 X)
  - do {
           문장
    }while (조건);
  - int i =0;
    do {
        system.out.printoln();
        i++;
   }while (i <10);

○ break Statement - 조건에 맞으면 빠져나옴

○ Continue Statement - 해당하는 것만 빼고 나머지는 수행

○ 연산자
 - 종류
   * 단항 연산자 : ++ -- ! (형변환)
   * 비교 연산자 : ==  !=
   * 논리 연산자 : &(&&)  - and      | (||)  - or
    > 한개 말고 두개를 사용해야함 (논리 연산자 사용시)
    >  한개짜리는 조건식에서 앞에 조건과 뒤에 조건 둘다 따짐
       but 두개짜리는 앞에 조건만 체크하고 참,거짓이 밝혀지면 뒤에 조건은 실행하지 않음
       그래서 실행속도 한 개 쓴것 보다 빠르다
   * 삼항 연산자 : ? :
    > int a =7, b=5;
       int max = (a > b)  ? a : b;
//  (값 a) ? 값b : 값c; True = 값b, False = 값C
// 즉 max는 7

※ byte b =10 ;
    b = ++b;  //  에러발생(X), type casting은 형변환 없이 발생
    b = b+ 1; //  에러발생(O), 형 변환을 실시해야함

□ Array, 배열 (4:00 ~ 5:00)
 동일한 타입의 데이터 여러 개를 저장하는 자료구조

 ○ 배열의 사용 작업 단계 [1차원 배열]
  1. 배열의 선언
  2. 배열의 생성
  3. 배열의 사용
  
  예) 
   int[] data; // (= int data[])               1. 배열의 선언
   data = new int[3];                            2. 배열의 생성
   data[0] = 100;                                   3. 배열의 사용
 
   int[] data = {100,200,300};
   data.length : 배열의 길이

  [예제 1]
   int[] data1 = {100, 200, 300};
   System.out.println(data1[1]); // 출력값 200
  
  [예제 2]
   char[] a = new char[3];
    // new를 통해 배열을 생성하게 되면 기본값이 들어간다(int 0, double 0.0, boolean false,char 공백, reference type[class, interface, array] Null)
    System.out.println(a[0]);

※ 실무에서는 배열을 거의 안쓰고 ArrayList를 사용한다

 ○ 배열의 사용 작업 단계 [2차원 배열]  

   - 예시

    String[][] msg = new String[2][3];

    msg[0][0] = "hi";

    msg[1][2] = "tommy";

    msg[0][1] = "";

  

  ※ 2차원 배열은 배열안의 배열

  ※ 2차원 배열의 크기는 앞에 나온 숫자, 즉 msg의 lengh는 2

   [예시] msg.lengh : 2, msg[1].length : 3  

  

  ※ NULL : 값이 정해지지 않은 상태

   

□ main 함수에서의 배열처리

  - main(String[] args){}

  - 실행시

     java Hello

     java Hello aa bb cc

  - args ["aa","bb","cc"]

  - 이클립스에서 실행시 

   1. RUN AS > config > argument > Variable > string_prompt > apply

  [예시]

   public class ArgTest {


public static void main(String[] args) {

for(String m : args)

System.out.println(m);


      }


      }


      > 입력 aa, bb, cc 출력 aa bb cc


 

ArgTest.java

ArrayTest.java

DataTypeTest.java

ForTest.java

HelloWorld.java

SwitchTest.java

Comments