2013년 8월 5일 월요일

13.08.06

GIT

Repository - 공유되는 프로젝트를 보관하는 폴더.

sub version 과 다른점.
- git 는 Repository 전부를 체크아웃한다.

Git Repositories 사용하기.
































이클립스 Window - Show View 에서 Git - Git Repositories 를 선택.
오른쪽 그림과 같은 창 뜨면 Clone a Git repository 선택


















Next 클릭
























URI 와 Host , Repository path 에 경로는 적도 Next.
Import all existing projects after clone finishes 체크 후 Finish












완료하면 위와 같이 Git Repositories 창에 폴더가 생긴다.

=============================================================================

형변환 (Type Conversion)

연산은 같은 Data 형 끼리만 가능하다. 
즉, int는 int끼리, float은 float 끼리, boolean은 boolean끼리만 가능하다.
 - 연산의 결과는 당연히 연산한 값과 같은 데이터 형이 된다. 즉, int 와 int의 연산 결과값은 int가 된다.
 - 서로 다른 Data 형 끼리의 연산시, 연산이 가능하도록 Data 형을 서로 같게 변환시켜줘야 한다. 이것을 "형변환"이라 한다.


형변환의 종류


1)암시적 형변환(implicit type conversion)
- 연산시 자동으로 형변환이 이루어 지는 것을 말한다.
- 암시적인 형변환의 법칙
byte
short > int > long > float > double
char

2)명시적 형변환(explicit type conversion)
- 프로그래머에 의해서 형변환이 이루어지는 것을 말함
- Cast Operator 를 사용하여 명시적 형변환을 한다.
  (데이터형)식;


Post-fix 연산자, Pre-fix 연산자

Post-fix(전위 연산자)

      int a = 10;
      int s = 0;
      s = a++;

1) s = a++; 에서 ++ 은 후위 연산자 이므로 먼저, a++ 자리에 a의 값이 놓이고,
   그 다음에 a++ 이 수행된다. 즉, s = 10; 인채로 있다. 아직 연산이 완료.
   되지 않았기 때문에 할당문은 수행되지 않음.
2) a = a + 1을 수행. (a = 11)
3) s = 10; 에서 할당문이 수행. 즉, s = 10 할당.

Pre-fix(후위 연산자) 

      int a = 10;
      int s = 0;
      s = ++a;

 1) s = ++a; 에서 ++ 은 전위 연산자 이므로, a = a + 1 수행. (a = 11)
 2) s = a;  수행. 즉, s = 11; 과 같다.

논리 연산자(Logical Operator)

-AND : Operand 둘다 true 일때만 연산 결과가 true 가 됨.
           a && b (만약 a가 false 이면 b는 따져보지도 않고 결과값 false를 내 놓는다)
           a & b (a 가 false 일지라도, b 까지 따져보고 결과를 내 놓는다)
- OR : 두개의 Operand중 하나라도 true이면 결과는 true가 된다)
          a || b (a 가 true이면 b는 따져 보지도 않고 결과값 true를 내 놓는다)
          a | b (a 가 true일지라도 b 까지 따져보고 결과를 내 놓는다)
- NOT : Operand가 true이면 false, false이면 true가 된다.
            !a (a 의 값이  true -> false 바뀌고, false -> true)
         

&&, || 앞부분을 검사하고 결과가 나오면 뒷부분은 검사를 하지 않는다.

&, |   앞부분과 뒷부분을 검사를 둘다 한다.

비트 연산은 이미지 처리 필터에 많이 사용된다.


할당 연산자(Assignment Operator)

배정연산자
 - 값을 변수에 할당할 때 쓰는 연산자
a = 10;
       10 이라는 값을 변수 a에 할당한다.

 - 그밖의 할당 연산자
연산자    예 의미
  +=       a += b       a = a + b;
 *=       a *= b       a = a * b;
>>=     a >>= b     a = a >> b;
 -=, /=, %=, &=, |=, ^=, >>=, >>>=, <<= 가 있다.


흐름 제어문 : 조건문 - if

흐름 제어문 
- 명령어의 실행 순서를 제어하기 위한 용도로 사용된다.
- 종류
  조건문 : if... else, switch 
  반복문 : do... while, while, for
  분기문 : break
 - 조건문 : if 
 1) if (조건식) 
문장;

   '조건식' 이 true인 경우 '문장'을 수행한다.

  2) if (조건식) 
  문장1;
   else
  문장2;
    
   '조건식' 이 true라면 '문장1'을 수행하고, false라면 '문장2'를 수행한다.

ex)
    int a = 5;
         if( a > 4)
        System.out.println("a > 4 입니다.");
System.out.println("종료합니다!"); 

에서는 블록을 묶지 않았으므로, System.out.println("종료합니다!") 문장은 실행됨.


ex)
     int a = 4;
if (a > 0)
System.out.println("a > 0 입니다.");
else 
                if (a < 0)
System.out.println("a < 0 입니다.");
else if (a == 0)
System.out.println("a == 0 입니다.");
else
System.out.println("허~~~ 0도, 음수도, 양수도 아닌수가 있나요?");

먼저 if 문장을 실행하고, 해당사항이 없으면 아래 else 문을 실행한다. 계속 반복.
(else if 는 묶여 있는것이 아니다.)


흐름 제어문 : 조건문 - switch

 - 조건문 : switch 
switch(식) {
case 상수식1: 문장1
break;
case 상수식2: 문장2
  break;
case 상수식3: 문장3
  break;
default: 문장0
}

 '식'의 결과값이 '상수식1' 이면 '문장1'을 수행하고 'break'문은 switch문을 빠져나간다.
 '식'의 결과값이 '상수식2' 이면 '문장2'을 수행하고 'break'문은 switch문을 빠져나간다.
 '식'의 결과값이 '상수식3' 이면 '문장3'을 수행하고 'break'문은 switch문을 빠져나간다.
 만약, '식'의 결과값에 해당하는 경우가 없다면 'default:' 의 '문장0' 를 실행한다.

  - '식' 과 '상수식' 에는 int 형 값만 올 수 있다.

만약, break; 가 없다면, break; 를 만날 때 까지 아랫문장까지 실행한다. 


반복문 - do... while, while


1) do ... while
do {
        문장1
        }while(조건식);

일단 '문장1'을 수행후 '조건식'의 값이 true이면 계속 do { } 문을 반복하여 수행한다.


 2) while
while(조건식) {
  문장1
  }

'조건식'의 값이 참일때만 while문의 { } 문을 수행한다.
즉, do... while 문은 1 이상을 반복하고, while 문은 0 이상을 반복한다.


흐름 제어문 : 반복문 - for


for
- 보통 어떤 인덱스 값을 사용하여 반복처리를 할 때 유용.

for(초기화 문장; 조건식; 증가문)
문장1
초기화 문장 - 보통 인덱스 값을 초기화 시키는 문장이 온다.
조건식 - true 이면 for문의 { } 문장을 수행하고, false 이면 for 문을 빠져나간다.
증가문 - 보통 인덱스 값을 증가시키는 문장이 온다.




































Garbage Collector
- 메모리 부족시 동작
- idle time
  메모리 해제 전에 해당 인스턴스에 대해 finalize() 호출.


문자열 표현

String s1 = new String("홍길동");

홍길동 char[], heap에 만들어짐. s1이라는 변수에 시작주소를 할당.


상수 문자열 표현

- '가' -> 내부적으로 가 라는 문자의 유니코드 값을 리턴.
- 상수 문자열은 Heap이 아닌 Constant Pool 영역에 인스턴스를 만든다.
- "홍길동" -> 내부적으로 홍길동 문자열을 가진 인스턴스를 생성.
- 상수 풀은 같은 값을 갖는 인스턴스를 만들지 않는다. -> 메모리 낭비 방지!

String s1 = "홍길동";
상수풀에 새로운 인스턴스를 만든다.

String s2 = "홍길동";
상수풀에 기존의 만들어져 있던 인스턴스의 주소를 리턴한다.


Heap에 만든 스트링을 상수풀에도 만드는 방법: intern()

String s5 = new String("홍길동");
String s6 = s5.intern();


equals() 사용

- Object에서 상속받은 메서드이다.
- 원래는 인스턴스 주소를 비교하는 메서드다.
- 하지만, String 클래스에서 값을 비교하도록 재정의(Overriding) 하였다.

Overriding - 상속받은 메서드를 해당 클래스의 역할에 맞춰서 재정의 하는것






13.08.05

하드 디스크.
























File system - file이 어떤 섹터에 저장되있는 관리하는 것이다.
format - File system을 만드는 것이다.
할당단위 크기는 보통 4096byte 로 한다.

===========================================================


CalcTest.class 실행 과정.

java.exe -classpath 경로 CalcTest.class 실행

1. method area 에서 CalcTest.class 가 로딩된다.
 - 클래스 유무 확인.
 - 클래스 변수 준비.
 - static 블록 수행.

2. stack area 에서 main(){...} 메소드 가 호출되면서. 로컬변수(args, c1, c2) 가 준비된다.

3. Calculator.class 가 method area에 로딩된다.

4. heap area 에 instance 변수 생성 (result 변수)

5. heap area, result 변수에 c1의 시작주소값 할당되면서, stack area 에 v1 변수 생성.

6. heap area 에 있는 c1의 시작 주소값이 v1에 할당 되면서 10이 저장됨.

이런식으로 반복..



============================================================

자료형 표현
























값의 범위에서
float 의 범위는 유효자리수 6자리.
double 의 범위는 유효자리수 15자리라 표현한다.
============================================================================


ASCII(7bit) -> ISO-8859-1(8bit) -> EUC-KR(2byte) -> MS949 -> Unicode -> UTF-8

JVM(Java Virtual Machine) 은  Unicode(2)=UTF-16을 사용한다.

============================================================================