리뷰
1. 객체 생성 ( new 이용 )
Employee e = new Employee();
멤버접근
e.멤버
2. public static void main( String [] args ){}
==> 객체생성없이 실행가능한 특별한 메소드.
3. 생성자 ( Constructor )
– 변수 : 데이터 저장
– 메소드 : 데이터 수정, 얻기
==> 객체생성하고 참조변수.메소드 호출가능.
– 생성자 : 데이터 초기화
==> new 클래스명([인자]);
==> 모든 클래스에는 자동으로 기본생성자(default 생성자)
가 생성된다. ( public 클래스명(){} )
==> 개발자가 명시적으로 생성자를 만들면 기본생성자는
자동 생성 안된다.
4. 오버로딩 생성자, 오버로딩 메소드
: 같은 이름의 생성자, 메소드가 여러개 지정가능하다.
단, 인자 리스트는 반드시 달라야 된다.
( 인자 갯수, 순서 , 데이터형 )
: 재사용성을 증가.
5. 연산자
– 산술연산자
– 비교연산자 (논리값)
– 대입연산자
– 논리연산자 (논리값)
– 3항연산자
– instanceof (논리값)
==> 논리값으로 결과가 나오는 연산자는 제어문과 같이
사용된다.
6. 제어문
– 단일if문, if~else문, 다중 if문, switch
3일차.
1. 반복문
: 한번 실행한 문장을 반복해서 실행가능한 문.
: 중첩이 가능하다.
:종류
가. for
: 배열과 같이 주로 사용한다.
for(초기값 ; 조건식 ; 증감연산자){
문장;
}
순서는 다음과 같다.
초기값 -> 조건식 -> 문장실행 -> 증감->조건식->문장->…
예> for( int i = 0 ; i < 10 ; i++ ){
System.out.println(“Hello”);
}
for( int i = 0 ; i < 10 && k==3 ; i++ ){
for( int k = 0 ; k < 5 ; k++ ){
System.out.println(“Hello”);
}//end for
}//end for
실습>
*
**
***
****
*****
무한루프
==> for( ; ; ){
}
나. while
문법:
while(조건식){
문장;
}
예>
int i = 0;
while( i < 10 ){
문장;
i++;
}
무한루프
while(true){
}
다. do~while
==> 최소한 한번은 문장을 실행할 수 있다.
문법
do{
문장
}while(조건식);
예>
int y = 0;
do{
System.out.println(“hello”);
y++;
}while( y < 10 );
: 공통점
==> 반복횟수가 지정된다. ( 10번 )
==> 시작값(초기값)이 필요 ( int i = 10;
==> 증가 연산자 필요 ( i++ )
==> 조건 검사 ( i < 10 )
2. 패키지 ( package )
용도: 윈도우 폴더 역할.
많은 클래스들을 관련된 것끼리 묶어주는 역할을 한다.
특징 : 패키지명은 유일한 값으로 지정한다.
( 도메인 형식으로 )
: 패키지가 틀리면 클래스를 사용할 수 없다.
문법: 클래스를 정의전에 다음과 같이 package을 명시한다.
package 패키지명;
package 패키지명.패키지명2;
예> package com.test;
public class 클래스명{}
==> javac 로 명시적으로 컴파일은 다음과 같다.
– 일반적인 컴파일
javac Student.java
– 일반적인 실행
java Student
– 패키지 컴파일
javac -d 클래스위치경로 Student.java
– 패키지 실행
java com.test.Student
3. import
용도: 패키지가 달라도 클래스를 접근가능하게 해주는 방법.
특징: 여러번 사용 가능.
문법
import 패키지명.패키지명1.클래스명;
예>
import com.test.Student;
import com.xx.AAAA;
public class TestStudent{}
==> 패키지가 다르면 반드시 import 해야 된다.
==> API ( 시스템이 만들어준 클래스파일들 :rt.jar ) 가
패키지로 제공된다.
==> API 중에서 java.lang 패키지는 자동 import 된다.
따라서 java.lang 이외의 패키지에 저장된 클래스를 사용할때에는 반드시 import 해야 된다.
==> ctrl + shitf + o (영문자)
4. 문자열 생성하는 방법
: 리터럴 ( “” 표현 )
가. String 클래스
==> 한번 생성된 문자열을 변경안됨. 가공하면 새로운 문자열이 생성된다.
– new 이용
: String yyy = new String(“Hello”);
: 동일한 문자열도 매번 생성
– 리터럴이용
: String xxx = “Hello”;
: 동일한 문자열은 재사용.
==> 문자열은 문자의 배열이다.
“Hello” –> H e l l o
0 1 2 3 4 ==> 인덱스(첨자)
나. StringBuffer 클래스
– new 이용
– 한번 생성된 문자열 수정이 가능
– 문자열의 수정이 많은 경우에 사용한다.
– append 메소드를 주로 사용한다.
다. + ( 연결연산자)
==> 문자열과 + 다른데이터형 : 문자열로 변경
예> int num = 123; // num 정수를 문자열로 변경
String xxx = num+””;
// “”:빈문자열(empty string)-권장안함
라. toString 메소드 이용.
==> 문자열로 만드는 메소드
==> 기본형데이터를 문자열로 변경시 주로 사용
( Wrapper 클래스이용)
5. Wrapper 클래스 ( 랩퍼 클래스 )
==> 기본형 데이터에 해당되는 8개의 클래스를 의미.
==> 기본형 데이터 작업시 효율적으로 작업하자.
( Wrapper 클래스의 메소드, 변수를 이용하자 )
기본형 참조형(클래스)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
예> “123” ——-> 123
123 ———–> “123”
String x = “123”;
int y = Integer.parsetInt(x);
int y2 = y + 1; //124
“123.4F” ——–> 123.4F
String x2 = “123.4F”;
float z = Float.parseFloat( x2 );
==> 변수, 메소드 static 지정된것은 클래스명.멤버 ,
객체생성불필요.
6. 데이터 형변환
-정의: 데이터형이 변경됨을 의미한다.
– 반드시 같은 계열끼리만 변경가능하다.
* 데이터형 ( 기본형:수치형끼리 , 참조형:상속관계 )
종류
가. 자동 형변환 ( promotion )
예> int x = 3;
long y = x; ( 8byte = 4byte )
( int 형 x가 long 형으로 자동형변환)
float f = 2.3F;
double d = f; ( float 형 f가 double 형으로 자동형변환)
int x = ‘A’ + 1; // 66
float xx = 2.13F;
int xx2 = 10;
xx + xx2 ==> 실수값
나. 강제 형변환 ( type casting )
: 형변환 연산자( 캐스트연산자:cast 연산자)를 사용한다.
: (데이터형)
long x = 3;
int y = x; ( 4byte = 8byte )
int z = (int)x;
char c = (char)66; //B
7. 지정자 ( modifier )
용도: 클래스, 변수, 메소드 정의시 특별한 의미를 부여하는
키워드
종류
가. 접근 지정자 ( access modifier ) 4가지
==> 클래스,변수,메소드등의 접근을 제한하는 방법
==> 패키지 고려해야 된다.
public
: 모든 곳에 접근가능
( 같은패키지, 다른 패키지 상관없이 )
protected
: 같은 패키지내에의 클래스간 접근 가능.
+ 다른패키지 접근 가능(단, 상속관계)
(friendly)
: 같은 패키지내에의 클래스간 접근 가능.
( 다른 패키지 접근 불가)
private
: 같은 클래스에서만 접근 가능하다.
* 클래스 : public(권장) , (friendly)
메소드 : public (권장)
변수(인스턴스변수만 지정가능): 로컬변수 사용못함.
: private( 권장 )==> 직접접근못함(데이터무결성)
==> 은닉화( encapsulation )
나. 일반 지정자( standard modifier )
: static
: final
: abstract
==> 지정자끼리 조합해서 사용한다.
8. final 키워드
의미: 금지 (불가)
사용:
클래스
: public final class 클래스명{}
: 상속불가
변수:
: final int num =3;
…
num = 10; // 에러 발생
: 값 변경 불가 ( ==> 상수 )
* 상수( constant )
: 값 변경
: 이름은 대문자 지정한다.
: 문법
일반적으로 public static final 지정자를 사용한다.
public static final int NUM = 3;
클래스명.NUM 으로 사용한다.
메소드
: public final void a(){}
: 오버라이딩 메소드 불가
*오버라이딩 메소드
==> 부모의 메소드를 상속받아서 나름대로
수정한 메소드.
9. static 키워드
특징: 객체생성과 무관
( 객체생성전에 자동생성된다. == > 객체생성이 필요없다.)
: 한번만 생성된다.
: 클래스이름.멤버 로 접근한다.
: 저장메모리
– 스택 ( 로컬변수) ==> 메소드호출할때마다 생성
– 힙 ( 인스턴스 변수) ==> new 할때마다 생성
new 객체생성======>
– 클래스area ( static 변수, static 메소드)
(static area) ==> 단 한번 생성
=> 프로그램실행 ~ 프로그램 종료
( main 시작 ~ main 종료 )
*변수
: static 변수 , class 변수
: 단 한번 생성
: 공유 목적으로 사용한다. ( 예 > 값 누적 )
프로그램종료전까지 데이터를 유지해야 되는 경우에 주로
사용한다.
* 메소드
: static 메소드
: 객체생성없이 사용목적.
예> Integer.parseInt() , Integer.toString()
* 클래스
: static 클래스
: 중첩 클래스에서 사용한다.
class A{ // Outer 클래스
static class B{ // Inner, nested , 중첩클래스
}
}//end A
예> 객체 생성 횟수 ?
* static 블럭
예> static{
System.out.println(“hello”);
}
10. 싱글톤 디자인 패턴 ( singleton design pattern ) ?
*디자인 패턴 ( design pattern ) ?
==> 프로그램 개발의 방법중에서 검증되고 효율적인
코드를 일관된 방법으로 사용하는 것.
정의: 인스턴스를 하나만 생성할 수 있는 패턴.
==> 현실세계의 객체가 하나만 있으니까.
구현:
==> new 를 한번만 해야 된다.
11. 상속