1. 기본 데이터 타입
자바의 기본 데이터 타입
char : 자바 언어가 지원하는 모든 유니코드
byte : -128~127
short : -32768 ~ 32767
int : -2147483648 ~2147483647
long : -922337203854775808~922337203854775807
float : 32비트
double : 32비트
boolen : ture, false
1.1 문자 타입과 값
\ : \\
탭 : \t
new line : \n
carriage return : \r
작은따옴표(‘) : \’
큰따옴표(“) : \”
char ch =-“\'”; 로 사용
1.2 배열
int[] intArray = new int[10];
intArray[8] = 10;
int arry = intArray[1]*3;
1.3 타입 변환
묵시적 형변환 : 같은 형으로 받을 경우 (작은것에서 큰것으로 변환)
들어갈 수 없다. 만약 값을 변수에 넣고자 한다면 int = 1 + 2로 하면된다. int형 = int형 공존 하게 된다.
byte = (byte)(2+2)로 하면 byte = byte형으로 값을 넣을 수 있다.
타입 변환을 할때는 유의해야 할 점이 있는데 그것은 바로 값이 손실될수 있다는 것이다. int 타입의 값을 short타입에 저장하는 경우를 살표보면 short 타입이 저장할수있는 값의 범위는 -32768~32767까지 이다. 반면 int 타입은 더 넓은 범위의 값을 저장할수 있다. 따라서 저장 범위를 벗어나는 int 값을 short 타입에 저장할때는 값이 손실이 발생 할수 있다.
하지만 작은 타입의 범위가 큰 타입에 저장할때에는 자바 언어 차원에서 자동으로 타입을 변환시켜 주며, 이를 자동 타입 변환이라 한다.
1.4 증가/감소 연산자
++operand : operand의 값을 1 증가 시킨후, operand를 사용한다.
operand++ : operand를 사용한후, operand의 값을 1 증가시킨다.
–operand : operand의 값을 1 감소시킨후, operand를 사용한다.
operand– : operand를 사용한후, operand의 값을 1 감소시킨다.
1.5 비교 연산자
a==b : a와 b가 같을 경우, true, 다를경우 false
a!=b : a와 b가 다를경우 , true, 그렇지 않을 경우 false
a>b : a가 b보다 클 경우 , true, 그렇지 않을 경우 false
a>=b : a가 b보다 크거나 같은 경우 , true, 그렇지 않을 경우 false
a<b : a가 b보다 작을 경우 , true, 그렇지 않을 경우 false
a<=b : : a가 b보다 작거나 같은 경우 , true, 그렇지 않을 경우 false
1.6 논리연산자
b1 && b2 : b1과 b2가 모두 true이면 true, 그렇지 않으면 false
b1 || b2 : b1과 b2 중 하나라도 true이면 true, 그렇지 않으면 false
!b1 : b1이 true이면 false, false이면 true
1.7 조건문
if(조건비교1){
…………..실행코드
}
else if(조건비교2){
…………..실행코드
}
else{
…………..실행코드
}
1.8 반복처리(for, while, do)
for(int i = 1; i<=10; i++){
…………..실행코드
}
while(반복조건){
…………..실행코드
}
do{
…………..실행코드
} while(반복조건);
1.8 break를 사용한 반복문 중간 탈출
for(…){
1.9 continue를 사용한 코드 실행 뛰어 넘기
countinue는 반복 블록 내에서 continue 이후 코드를 실행하지 않고 넘어간 후 다음 반봅을 실행한다.
for(int i = 0; i<10; i++){
if(뛰어넘기 조건) continue;
}
———————– i++로 넘어간다.
while(some<= 100){
if(뛰어넘기조건) continue ;
}
———————- some<= 100로 넘어간다.
do{
if(뛰어넘기조건) continue ;
} while(some <=100);
——————— some <=100로 넘어간다.
2. 자바의 String 클래스와 문자열
자바 String의 메서드
– length() : 문자열의 길이를 구한다.
– charAt(int index) : 지정한 인덱스에 위치한 문자를 리턴한다.
– indexOf(String str) : str이 포함되어 있는 첫 번째 인덱스를 구한다.
– IndexOf(String str, int forindex) : fromindex 이후에 str이 포함되어 있는 첫번째 인덱스를 구한다.
– indexOf(char ch) : 문자 ch의 첫번째 인덱스를 구한다.
– indexOfchar ch, int formindex) :fromindex 이후에 문자 ch의 첫번째 인덱스를 구한다.
– substring(int i) : 인덱스 i부터 나머지 문자열을 구한다.
– substring(int i1, int i2) : i1부터 i2-1까지의 문자열을 구한다.
– equals(String str) : 현재 문자열이 str과 같은 경우 true를 리턴한다.
– compareTo(String str) : 현재 문자열이 str과 같은 경우 0을 리턶ㄴ다.
상수풀과 내부 함수
String a = “JAVA”;
1. 문자열 String의 좋거나 나쁜 행동
http://java.sun.com/j2se/1.5.0/docs/api/ 보면 String은 클래스 임을 알 수 있다.
예제 1)
public class StringTest {
public static void main(String args[]){ String strOne = “박지성”; System.out.println(strOne); for(int i=0; i < strArray.length; i++){ |
String 레퍼런스가 사용하는 방법을 정리 한 소스이고 사용 방법은 문서를 찾아 보길 바란다. 중요한 핵심은 String strOne 리터럴 생성자와 String strTwo 인스턴스 생성자의 의미는 완전히 다르다. |
예제 2)
public class StringTest {
public static void main(String args[]){ String reOne = “박지성”; if ( reOne == reTwo ){ if ( insOne == insTwo ){ if ( insOne.equals(insTwo) ){ } |
위 소스를 돌리면 재미있는 현상을 알수 있다. 그것은 문자열 2개를 비교하는 것 뿐인데 2번째 if (){}문은 원하는 답이 나오지 않는다. 이유는 아래와 같다.
String reOne와 String reTwo는 같은 인스턴스 안에서 문자열로 인식 하는 것이고 더 자세한 설명은 아래 링크를 참조 |
3. 주석처리 방법
– jsp주석
<%– 설명이 들어온다 –%>
– 자바 언어 주석
//주석 내용
/*주석 내용*/
/**주석 내용*/ –> 선언부에 정의한 메서드를 설명할때만 사용한다.
– HTML 주석
<!– 주석내용이 위치 –>
* 객체지향 언어
– object : 실세계에서 일어나는 사물 , 행동 : property, behavior
– class : 컴퓨터 세계로 구현된것 :
field(객체의 상태 정보를 저장한다.),
method(시간(event포함)) -메서드는 객체가 제공하는 기능을 정의한다 보통 메서드에서는 필드의 값을 변경하거나 필드의 값을 이용해서 필요한 동작을 수행하게 된다.
property(get, set) : 클래스로 부터 객체를 생성할떄 사용되며, 메서드와 비슷한 형식을 갖는다. 차이점이 있다면 객체를 생성할떄 실행된다는 것과 리턴값을 갖지 않는다는 것이다.
– instance : 생성자, 소멸자
*class
상속 : a와 b의 공통적인 부분을 c에다 가져다 놓은것
은닉 : 접근 허용범위(public, private, default, protected)
다형 : overlriding(상속 받은 클래스 내에서 비슷한 기능을 수행하는 메소드를 만들 경우 사용)
overloding(같은 클래스 내에서 같은 기능으로 사용되는 메소드 들의 이름은 같게 하지만 파라미터의 값을 다르게 해 놓은것
* 패키지
개발할 소프트웨어의 규모가 커지게 되면 수백 내지 천개이상의 클래스가 만들어 질때도 있다. 이때 만약 모든 클래스를 한 디렉터리에 위치시키게 되면 소스 코드와 클래를 분리하기가 힘들어 질것이다. 이경우, 여러 디렉터리에 관련된 클래스들을 분류해서 위치시키면 소스코드와 생성된 클래스 파일을 조금 더 효율적으로 관리 할수 있을것이다.
* import
같은 패키지에 포함된 클래스를 사용할떄에는 소스코드에서 클래스 명을 직접 사용하게 된다.
다른 패키지에 소한 클래스를 사용하는 경우에는 클래스의 오나전한 이름을 사용하여야 한다.
javacan.dao.memberdao dao = new javacan.dao.memberdao();
매번 완전한 클래스 이름을 적어주는것은 귀찮은 일인데 import 키워드를 사용하여 클래스 이름을 사용해서 다른 패키지에 있는 클래스를 사용할수 있다.
import javacan.MemberInfo;
import javacan.dao.MemberDao;