2010. 1. 31. 09:36ㆍJava
■ JAVA 개요 및 특징
- 자바의 주요 개념 및 특성(JVM)
자바의 분류
- J2SE : Java2 Standard Edition
- J2EE : Java2 Enterprise Edition
- J2ME : Java2 Micro Edition
■ JVM (Java Virtual Machine) 의 메모리 , 가상머신
- 인터프리트 용도 , 실행용도
- 스택 영역(Runtime stack) 실행시에 사용하는 메모리영역, 초기화가 자동화 되지 않다.퍼스트 인,라스트 아웃
- 힙 영역(Garbage Collection Heap) 동적 메모리 할당 영역
- 상수 영역(Constant & Code Segment) 상수 데이터 및 static 데이터 할당 영역
- 레지스터 영역(PRocess Regdister) 프로세서 실행 관련 메모리 할당 영역
※ 메서드 내부 선언 변수(지역변수)는 스택영역에 메모리 할당 (초기화 선행)
Method 내에서만 사용되고 소멸되는 변수, 메서드 종료 시점에서 JVM에 의해 메모리 제거
,클래스 내부 선언 변수(Member Field)는 힙 영역에 메모리 할당 되기 때문에 자동 초기화
클래스 내부에서 어느 위치든 사용 가능한 변수. 접근 제한자에 따라 다른 클래스 나 상속 관계에서도 사용 가능
Garbage Collection에 의해 메모리 제거
■ 자바에서의 약속
사용자 정의 명칭(Class , Method , Field)
- 첫 글자는 '_' ,'$', 영문 대,소문자 (한글 가능) ... 필드명으로 한글을 사용할수 있겠죠
- 글자수에 제한이 없다.
- 공백문자 및 특수 문자는 사용 불가능하다!!!!!
- 숫자는 첫글자가 아닐때는 사용 가능하다.
- 예약어 사용 불가!!!!
- 기타 단순 약속(대,소문자의 규칙)
Class의 첫번째 문자는 대문자
method, Field의 첫번째 문자는 소문자
Field의 상수는 전체 대문자로 해주는 것이 좋죠 ^^
합성어 중간 단어 앞은 대문자!!!
■ 자바의 주석처리
주석 처리 : 프로그램 실행에 영향을 미치지 않는 설명글
C언어 주석 : /* ~ */ -여러 줄 주석
C++주석 : // -한줄 주석
JAVA DOC 주석 : /** ~ */ - Doc를 위한 주석
■ 상수 와 변수 그리고 자료형 개념
상수 : 고유한 Data의 값으로 항상 동일한 의미를 가지는 개체
변수 : 상수를 저장하거나 보관하는 장소
변수명 : 변수에 대한 특정 이름
자료형 : 변수의 크기를 규정지어 미리 만들어 둔 크기의 약속
■ 자바의 기본 자료형과 String 클래스 (42억 byte에 메모리 할당이 됨.)
bit : 0과 1를 표시하는 최소 단위!!!(저급 언어)
1bit --> 2가지 의 경우의 수
2bit --> 4가지 의 경우의 수
3bit --> 000,001,010,011,100,101,110,111 8가지의 경우수
4bit --> 16가지
5bit --> 32가지
6bit --> 64
7bit --> 128
8bit --> 256 (최소 단위, 2의 7승) ==> 1 byte
(고급 언어)
논리형 자료형 : boolean (true,false) - 형변환 불가!!!!
정수형 자료형 :
- byte : 1byte(-128 ~ 127) 컴파일에러
8bit
0000 0000 -> 1byte
(2진수 -> 10진수 , 0 )
0000 0001
(2진수 -> 10진수 , 1 )
0000 0010
(2진수 -> 10진수 , 2 )
0000 0011
(2진수 -> 10진수 , 3 )
0111 1111
(2진수 -> 10진수 , 127)
1000 0000
(2진수 -> 10진수 , 128 -128)
1111 1110
(2진수 -> 10진수 , 254 -2)
1111 1111
(2진수 -> 10진수 , 255 -1)
위의 맨 앞자리를 음수,양수 로 구분한다.
0000 0000 으로 다시 돌고 돈다!!!
- short : 2byte(-32768 ~ 32767)
2의 15승 ~ 2의 15 -1(왜, 0이 양수쪽에 포함되어 있기 때문이지)
- char : 2byte (0 ~65535) : 문자형 (유니코드 , 1byte는 아스키 코드)
- int : 4byte (-2,147,483,648 ~ 2,147,483,647)
기본 자료형(자동으로 숫자는 integer로 된다)
- long : 8byte ( -922경 ~ 922경)
-2의 63승 ~ 2의 63승 -1
실수형 자료형
- float : 4byte
- double : 8byte (기본 자료형)
클래스 자료형
- String 클래스 : 문자열 저장
ex)
String str = new String("Java");
String str= "Java";
■ 아스키 제어문자 및 문자
0 '\0',null
8 '\b'
9 '\t'
10 '\n'
13 '\r' --아래와 처음으로 돌아가 : 엔터키는 '\r\n'
27 esc
48 ~ 57 '0' ~'9'
65 ~ 90 'A' ~ 'Z'
97 ~ 122 'a' ~ 'z'
■ Promotion 과 Casting
형 변환의 의미
- 상수의 값을 크기가 다른 변수에 담는 작업
Promotion(큰 공간) : 자동 형 변환
- 작은 공간의 변수 값을 큰 공간의 변수로 이동
Casting(작은 공간) : 강제 형 변환
- 큰 공간의 변수 값을 작은 공간의 변수로 이동
- 데이터 손실 고려
* boolean 형은 형 변환이 불가 하다!!!(다시한번 기억하시길 바랍니다.)
■ Wrapper라 불리는 클래스들
- 자료의 효율적인 관리 와 은닉화 와 객체화
- 종류 : Boolean ,Byte , Short , Character , Integer , Long ,Float , Double
- Documentation API 참고 활용
■ 연산자의 개념
- 피 연산자(상수 나 상수를 저장하고 있는 변수)들 사이의 계산방식을 특정한 기호로 표시 (+,-,*,/,%)
- 연산자 우선 순위(필수 암기??)
- 최우선 연산자 .,[],() -> 단항 연산자 -> 산술 연산자 -> 쉬프트 연산자 -> 관계 연산자 -> 비트 연산자
-> 논리 연산자 -> 삼항 연산자 -> 배정 대입 연산자 -> 증감 후위 연산자 -> 순차 연산자
1 . 최우선 연산자 : "." , "[]" , "()"
2. 단항 연산자(항이 하나로 구성되어 있다!!!!)
- 논리 부정 과 비트 부정 : "!" , "~" (!는 논리적인 부정에만 사용된다.)
"~" 비트 부정 : 변수 *(-1) -1
ex) ~4 = -5 이다.
- 부호 연산 : "+/-"
- 증감 전위 연산 : "++/--"
자기 자신의 값을 1씩 증/감
전위형는 상위 순위, 후위형 하위 순위 입니다.
- 형 변환 연산 : "(cast 자료형)"
- Type 비교 : "instanceof"
Exam_07 ex = new Exam_07();
boolean bool = ex instanceof Object;
3. 산술 연산자 : 연산 결과의 자료형
- "*","/","%" : 정수 연산 시 주의 ( 1/2 는 0 이 나올꺼야 ^^;;)
- "+" , "-"
사칙연산 시에 integer보다 작은 자료형의 결과값은 int 형으로 리턴된다.
사칙연산시에 integer보다 큰 자료형의 결과값은 큰 자료형 형태로 리턴된다.
(단 정수 외에 실수에서는 실수를 쫒아 가죠~~)
4. 쉬프트 연산자 : 특정 비트수 만큼 이동시에 사용된다.
한글 입력시 사용되는데, 16bit 속에 5bit씩 나눠서 초성,중성,종성 을 처리하고 , 나머지 1비트는 속성값.
- "<<" : left shift 연산자
1 << 3 = 8 => 1 * 2의3승
0000 0001 (앞의 3개의 0은 버려!!)
0000 1
0000 1000 (뒤의 3개의 0은 채워)
- ">>" : right shift 연산자
8 >> 3 = 1
=> 8 * 1/2의3승
0000 1000 (뒤의 3개의 0은 버려!!)
0 0001
0000 0001 (앞의 3개의 0은 채워)
- ">>>" : unsigned right shift 연산자
: 앞자리를 0으로 체워라~~~0이던 1이던 상관 말고~~~!!!
5. 관계 연산자(boolean 에 결과값이나타는경우)
-비교 관계 : > , < , >= , >=
-항등 관계 : == , !=
비트 연산자 : 논리에 사용 가능 ("&","|")
- "&" -and , "|" - or , "^" - exclusive or 배타적
2진 비트 데이터로 바꿔야 한다.
양쪽 비트가 모두 참이면 true
양쪽 비트가 모두 거짓이면 false
양쪽 비트가 서로 다르면 true
0은 거짓, 1은 참이다.
4 & 7
0000 0100
& 0000 0111
-----------------
0000 0100 = 4
0000 0100
| 0000 0111
-----------------
0000 0111 = 7
0000 0100
^ 0000 0111
-----------------
0000 0011 = 3
6. 논리 연산자 : "&&" - and , "||" -or
양쪽 논리를 가지고 논하고 , 앞에서 확인해서 논리가 통과 하면, 뒤에는 보지 않고 패스 한다.
이런 경우 비트 연산자를 쓴다.
6. 삼한 연산자 (if 문의 전신!!!! 두둥!!!)
- "조건항 ? 항1 : 항2"
배정 대입 연산자
- "=" , "*-", "/=" , "%=" , "+=", "-=" , "<<=" , ">>=" , ">>>=" 등
증감 연산자(후위)
x--;
t++;
7. 순차 연산자 (변수 선언할 때만 사용) : - ","
■ 제어문이란?
- 문장의 흐름은 위->아래, 좌-> 우 의 순이다.
- 문장의 흐름을 제어하여 예약어 - > 제어문
if 제어 : 만약 ~ 라면
1형식 : if(논리 조건문) { 내용부;}
2형식 : if(논리 조건문){...}else{...} 3항 연산자
3형식 : if(...){..}else if(...){...}else{...}
■ switch문은 특정 수나 문자에 대한 위치 이동을 제어 특징 , 수치나 문자에 따른 이동의 처리가 if문에 비해 빠르다. 컴파일 시에 위치가 정해진다.
switch(수치 or 문자){
case 조건수치 or 문자 : 내용부 ; [break;]
default : 만족하는 case가 없을 때 실행
}
cf) 주민 번호의 비밀 두둥!!!
1 2 3 4 5 6 ~ 1 2 3 4 5 6 7
12 년도수 , 34 월 , 56 일 -
1 성별 (9 or 0 - 1800년대생 9 남성 , 0 여성)
(1 or 2 - 1900년대생 1 남성 , 2 여성)
(3 or 4 - 2000년대생 3 남성 , 4 여성)
(5 or 6 - 외국인 5 남성 , 6 여성)
2 출생지 (0 :서울 , 1: 경기인천,2:강원,3:충북,4:충남,5:전북,6:전남,7:경북,8:경남,9 제주도)
4 구
56 읍면동
7 패리티코드
{(A*2)+(B*3)+(C*4)+(D*5)+(E*6)+(F*7)+(G*8)+(H*9)+(I*2)+(J*3)+(K*4)+(L*5)} ≡ M1 (mod 11)
11-M1 ≡ M (mod10)
(a ≡ b (mod m) 는 a - b = mk (k 는 어떤 정수) 가 성립)
■ loop문 ( 단일 for 제어문 )
정의 : 동일하거나 유사한 문장을 수치에 의해 반복 제어하는 문
for(초기화영역;조건부영역;증감부영역){
반복실행이 될 내용부
}
관련 예약어 : continue , break
continue : 가장 가까이 있는 닫힌 } 로 이동
break : 그냥 나가버렷!!!
■ 다중 for 제어문
for(초기화영역;조건부영역;증감부영역){
반복실행이 될 내용부
for(초기화영역;조건부영역;증감부영역){
반복실행이 될 내용부
}
반복실행이 될 내용부
}
관련 예약어 : Label , continue , break
■ while 제어문 : 동일하거나 유사한 문장을 행위에 의해 제어 하는 문
while(논리조건문 or true){
행위에 의한 반족 실행 내용부
}
관련 예약어: Label , continue, break
■ do ~ while 제어문
정의 : 선 실행 후 조건 비교 반복 제어문
do {
반복 실행 내용부;
}while(논리 조건문);
관련 예약어 : Label , continue, break
'Java' 카테고리의 다른 글
JDBC에 대해서 다시한번 보라구.. (0) | 2011.05.11 |
---|---|
[기초]GUI , AWT 와 JFC ,사용하는 Event 그리고 Applet (0) | 2010.01.31 |
[기초]byte,text,file,object 입출력 과 자바 네트워크(TCP,UDP,Muticast,RMI) (0) | 2010.01.31 |
[기초]클래스,예외처리,Collection,Assertion (0) | 2010.01.31 |
[기초]Method , Array , (0) | 2010.01.31 |
놓치기 쉬운, 기본적인 사항들! (1) | 2010.01.11 |
Eclipse에 Log4E Plug-in 설치하자 (0) | 2008.05.20 |
Eclipse와 Struts 사용하기 -2 (364) | 2008.05.13 |
Jakarta Struts Framework 소개-1 (0) | 2008.05.13 |
[apache]Log4J 설치 및 사용법 (0) | 2008.05.10 |