Archive for December, 2009

Java-3강

12월 24일 3강

preview

- identifier

$ 는 가능하면 사용하지 말 것

- Zero is positive

- 10장에서 autoboxing & unboxing 배움

- String은 class다. 메모리 heap에 저장한다.

- String은 주소(reference)를 쓰지 값(value)을 쓰는 것이 아니다.


Reference Types

- Are used to store addresses of objects.

- 저장은 heap에 불러올 땐 주소로 불러옴.

- 참조변수(reference valuable)를 통해서 접근

- heap은 주소로만 접근 그 주소는 참조변수에 저장되어 있다. 참조변수 크기는 4바이트

- reference types –> Interface, Enumeration, Class, Array, Annotation

- 복사의 대상이 primitive type 이면 무조건 value 복사

- 복사의 대상이 reference type 이면 address 복사

Constants

- final 을 쓰면 상수


Naming Conventions – Class names

nouns

- 이름규칙

1. Pascal casing    (단어 첫 글자 대문자, 클래스, 인터페이스..)

2. Camel casing    (첫 글자 소문자, 변수, 메서드..)


Naming Conventions – Interface names

adjectives

- 5개의 이름 규칙

Variable

모든 코드는 class 안에 작성해야 함.

- local

사용 전에 초기화

메소드, 블록 속에서 사용

메소드, 블록이 열리면 생성, 닫히면 소멸

- class

static 이 붙으면,

class variable, static variable(해석은 공유변수, 정적변수 아님)

new 하기 전에 메모리에 올라옴

static이 메모리에 가장 먼저 올라옴, 소멸시기는 알수없음.

라이프사이클이 가장 김. 가급적이면 사용하지 않음.

- instance

member, instance variable

gabage collector가 돌기 시작하면


Operator

- 연산자 우선순위가 가장 중요

prime > 단항 > 이항 > 삼항 > 할당

그 중에서 이항연산자 5개!! 이 중에서 시험..

bit operator

부호의 변화 주의

10000000(-128) >> 2 –> 11100000

10000000(-128) >>> 2 –> 00100000

instanceof (9장에서)


4장

Simple Programming constructs

- Conditions, Loops, Branches

자바의 배열은 절대 숫자를 쓰지 않는다.

.length 를 이용해서 배열의 크기 계산

switch 문

switch(variable)

variable types – char, int, short, byte, enum

method

- equals – 값을 비교 true, false return

- compareTo – 비교의 대상이 0이냐 아니냐

“A”.compareTo(“B”)  —> A – B –> -1

“C”.compareTo(“B”)  —> C – B –> 1

“C”.compareTo(“A”)  —> A – A –> 0


Math

random()을 이용하기

0.0 <= Math.random() < 1.0

- max 값 곱하고 min갑 더하고

ex) 주사위

0.0 <= Math.random() < 1.0

0.0 <= Math.random() x 6 < 6.0

1.0 <= Math.random() x 6 + 1 < 7.0

강제 형변환

1 <= (int)(Math.random() x 6 +1) < 7


용어 정리

- class

모델링해서 코드화하면 클래스

- object ★

모델링이 가능한 모든 객체

- instance

메모리에 있는 객체, 코드화되어 있는 클래스를 메모리에 올려서 메모리에 존재하는 객체


Java-2강

- 코딩 필수 주석
Author
Date
Objective
Environment

-character set

ASCII 7bits 128개
a,A,z,Z,0,9의 ascii code 값 알고 있어야함.

Extend-ascii 8bits 256개 표현
Unicode 16bits http://ko.wikipedia.org/wiki/유니코드
UTF-8
UTF-16
EUC-KR(extend unix code-korea), ks_c_5601-1987(KSC5601)(korea standard code)
ISO8859_1 (서유럽)

-JavaDoc(유틸리티)을 이용한 문서화 작업
/** documenting comment */

-JavaDoc을 이용한 Java API 문서 생성하기. – http://javaexpert.co.kr/entry/19

ex)
/**
* 프로그램의 시작점 메소드입니다.
* @param String Array
* @return void
*/

-command
>javadoc -author -version -d ./docs

-Java keywords

all 소문자

enum – Java 1.5 이후부터 keywords

keywords 이지만 쓰지 않는 keywords
const, goto

extends, implements, throws 주의

-Java Data Types
primitive types, reference types

1. 진법변환 (2, 8 ,16 진수)
2. complement (1, 2 보수)
3. singed, unsigned

-2^비트수-1 ~ 2^비트수-1 – 1

Java technology uses data types with predefined
-storage sizes
-kinds of data they can store

-data types
-내장형
(built-in)
(primitive type)(Java)
-수치형
-정수형
-문자형 char(1)(C) / char(2)(Java), byte(1)(Java)
-정수형 short(2)(C), int(2~4)(C), long(4)(C) / int(4)(Java), long(8)(Java)
-boolean 1bit (true, false)
-실수형 float(4), double(8)
-나열형
-무치형
-void

-외장형
-(추상형)
-C/C++ (user-defined) struct, union, class(C++), pointer
-Java는 (reference) class, interface, enum

정수의 기본형은 4byte (int)

Literals for primitive types

변수에 할당된 값 value
변수에 할당되지 않은 값은 literal
변하지 않는 값 constant(상수)

parameter – 매개변수
argument – 인수, 인자

성질이 변하지 않는 것이 cast
성질이 변하는 것이 convert

-char literals – Escape Sequence

\ddd Octal number \000 ~ \377
\udddd Unicode character \u000 ~ \uFFFF

-Integral Type & Literals

Default is a int.
양의 문제

ex) static 공유변수로 해석
public static final int MAX_VALUE

번지로 찾아가면 멤버변수 – 권한필요
주소가 필요하지 않음. 공유변수(클래스변수) – 공유,
ex) 클래스이름.변수명

integer 2147483648 출력하면
변수에 저장해서 변수 값을 찍으면 쓰레기값 출력됨
리터럴을 찍으면 컴파일 에러

-Floating Point Type & Literals

Default is double.
정확도의 문제

123.56789
0.123457 X 1000 –> 0.123457E + 003 (e, E 지수형)
1.235679 X 100 –> 1.235679E + 002

double 이상의 정확도는 Java로 불가능.

short, float 쓰는 일은 거의 없음.

-String Type & Literals

Is not a primitive data type, it is a class.

reference type
문자열을 저장하는 방법, 주소로 접근.

stack(primitive) – 데이터에 이름(변수명)으로 접근
heap(reference) – 실제 데이터에 접근 heap , heap 주소는 stack에 저장

name ——> “Dancan”

name = reference value = 4byte(정해진 값), 주소만 저장, memory heap의 시작주소만 참조
heap에 올릴려면 enum, interface, class 셋 중 하나. new 필요, String은 컴파일러가 알아서 new 를 써줌

name은 Dancan을 가리키고 있음
주소가 끊어지면 garbage로 들어감

garbage collector – 주소가 끊어진 gabage를 수집, 소멸
g.c 가동시기 – cpu idle time (garbage collector는 우선순위 낮음)
C#은 cpu가 부족하다고 느끼면..

garbage collector 문제로 실제 필드에서 오버플로우

Java는 문자열의 끝에 null 이 없다.

유일한 연산자 오버로딩은 string 에 “+”

Java-1강

-J2SE (standard edition)
OOP, JavaAPI -> JAVA 문법 끝

-J2EE (enterprise edition)
Servlet/JSP
Struts 1, 2
Ajax
Spring Framework

-J2ME (micro editioin)

-Flex (UI)
adobe
flash player에서..

1. Java 문법
2. 알고리즘, 자료구조
3. Design Pattern (검증된 개발방법론을 이용..) + UML -> 설계 (Risk가 줄어듬)
4. English!!!

강의에서 제외
Java graphic 제외 (AWT, Swing…)
- AWT Event Model 은 간단하게 설명
RMI & CORBA 제외

Java5와 6의 차이scripting 되냐 안되냐 차이

-강의 내용
1-4 기본
5장 부터 OOP 시작
7,8,9,10장 (매우 중요)

-SCJP
1-16장 I/O
Graphic, Network 제외

JAVA 개발 환경 설정

1. Java JDK Download
JDK6 update17 & Java Documentation Downloads

2. JDK Install

3. 환경변수 설정

1) JAVA_HOME
시스템변수 -> 추가
변수 이름 : JAVA_HOME
변수 값 : C:\Program Files\Java\jdk1.6.0_17

2) PATH
시스템 변수 -> Path 편집
변수 값에 추가 : C:\Program Files\Java\jdk1.6.0_17\bin; 또는 %JAVA_HOME%\bin;

-확인
cmd 에서
홈 path 설정
>set JAVA_HOME
path 설정
>set Path
>java
>javac
Java 버전 확인
>java -version

테스트
class 명과 파일명 일치해야함

>javac HelloWorld.java
>java HelloWorld

C/C++ -> include -> a.c, a.cpp -> a.obj, a.o -> a.exe
Java -> import -> a.java -> j.class
C# -> a.cs -> a.exe, a.dll

-JVM (Java Virtual Machine)

structed – oop – cbd – soa

I/O, graphic 느림.

-Editplus 세팅

Download

http://www.brothersoft.com/download-editplus-16751.html

1 java, 1 class
java 파일에 오직 하나의 class만이 public
public만이 main을 갖는다.

기본설정 -> 문서 템플릿 -> Java -> 파일변경 -> C:\Program Files\EditPlus 3\template.java

-컴파일 자동화
도구 -> 사용자 도구 구성 -> 그룹이름 -> 변경
메뉴 추가 2개
메뉴이름 : Java complie
명령 : C:\Program Files\Java\jdk1.6.0_17\bin\javac.exe
인수 : $(FileName)
디렉토릭 : 지정폴더
출력 내용 캡쳐 : 체크

-단축키
ctrl +1
ctrl +2

-도구모음 추가
기본설정 -> 도구 -> 도구모음
사용자 도구 1
사용자 도구 2

-Java Manual 세팅
docs\api\index.html