리뷰.
1. 객체 추출.
2. 자바특징
3. 클래스
public class 클래스명{
}
4. 클래스의 구성요소 ( 클래스의 멤버)
: {} 안에서 사용가능한 요소
가. 변수 ( 인스턴스 변수)
: 데이터 저장
: 중복되면 안된다. ( 식별이 불가 )
: 문법
데이터형 변수명;
* 데이터의 종류
– PDT
– RDT
: String
* 식별자(identifier )
: 이름 ( 자바코드의 각 단어 )
: 종류
– 시스템 지정 식별자(키워드)
– 사용자 지정 식별자
: 클래스명 ( 첫글자는 대문자, 의미있는 명사형)
:변수명 ( 모두 소문자 , 의미있는 명사형 )
:메소드명 ( 모두 소문자, 의미있는 동사형 )
* 리터럴( Literal )
: 자바코드에서 식별자를 제외한 것 ( 실제 값 )
: 정수값( 10 ), 문자( ‘A’ ) ,
문자열 ( “홍길동”) , 실수값 ( 323.22 )
예>
int num = 20;
String name =”홍길동”;
나. 메소드
: 변수에 데이터를 저장,얻어오기
: 반드시 호출해야 수행된다.
호출해서 작업이 끝나면 반드시 호출한 곳으로 돌아온다.
호출할 때에는 이름과 인자 리스트가 반드시 일치해야 된다.
: 문법
public 리턴타입 메소드명([인자]){
return [값]; ==> 호출한곳으로 돌아간다.
}
==> return; ( 리터타입은 void 라고 명시한다. )
( return 을 생략가능하다. 일반적으로 생략한다.)
return 2; ( 리터타입은 int 라로 명시한다. )
return “홍길동”;
( 리터타입은 String 로 명시한다. )
return “홍길동” + 2;
: 종류1
– setter 메소드
: 데이터를 설정시 사용
: set변수명으로 지정
– getter 메소드
: 데이터를 얻어올때 사용
: get변수명으로 지정
다. 생성자
// 2일차.
1. 메소드
2. 클래스의 종류
가. 클래스의 종류1
– 시스템 정의 클래스 : API
– 사용자 정의 클래스
나. 클래스의 종류2
– 재사용 가능한 클래스
: Employee, Student
: main 메소드가 없다.
이유는 재사용하기 위해서이다.
– 핸들링 클래스( Handling class )
: StudentTest
: main 메소드가 있다.
이유는 재사용 가능한 클래스를 핸들링하는 역할.
: 역할
==> 재사용 클래스를 메모리에 올리고
변수에 값을 저장, 얻기
==> caller 메소드가 위치한다.
3. main 메소드
: 호출하지 않아도 자동으로 수행된다.
: starting point (시작점) 역할.
: 문법
public static void main( String[] args){}
4. 재사용 클래스를 메모리에 올리는 작업
– 동일용어
: ‘객체 생성’ , ‘인스턴스화’ , ‘메모리 로딩’
– 문법
new 클래스명([인자]);
예>
new Student();
=> Student 클래스의 구성요소(인스턴스변수,메소드)
가 메모리에 위치와크기를 가지고 생성된다.
new Employee();
=> Student 클래스의 구성요소(변수,메소드)
가 메모리에 위치와크기를 가지고 생성된다.
=> 나중에 변수와 메소드를 사용하려면
위치값을 이용해서 접근 가능하다.
==> 위치값도 데이터이다.
따라서 변수에 저장가능하다.
클래스명 변수명 = new 클래스명([인자]);
예> Student stu = new Student();
Employee e = new Employee();
5. 클래스의 멤버 접근
: 반드시 객체 생성을 하고 접근 가능하다.
Employee e = new Employee();
: e 변수를 이용해서 접근할 수 있다.
( 변수 , 참조형 변수, Employee 클래스형의 변수 )
: e 변수에는 어떤 값이 저장? ( 위치값 : 주소값 )
* 변수값 종류
가. PDT
int a = 123;
float f = 31.34F;
==> a 변수에는 123 실제값이 저장된다.
==> PDT 형의 변수는 실제값이 저장된다.
나. RDT
Empoloyee a = new Employee();
Student f = new Student();
==> a 변수에는 실제데이터가 저장된 위치값을 저장한다.
==> RDT 형의 변수는 실제값이 저장된 위치값
: 참조변수.멤버;
– 변수 접근
참조변수.변수
– 메소드 접근 ( caller 메소드 )
참조변수.메소드명([인자]);
예>
Employee e = new Employee();
e.ssn = “111”;
e.name = “홍길동”;
e.salary = 2000.0;
e.setName(“홍길동”);
e.setSsn( “11” );
e.setSalaray( 234.22 );
*
new
Employee 클래스 ————> Employee 객체(인스턴스)
new
————> Employee 객체(인스턴스)
new
————> Employee 객체(인스턴스)
6. 변수의 종류 3가지
: 데이터 저장
: 구분은 데이터의 생명주기
가. 로컬변수
: 메소드안에서 선언
: 메소드를 시작시 생성 ~ 메소드가 종료되면 삭제된다.
( 메소드를 호출 생성 ~ 메소드가 return 될때 삭제)
public void a( int x ){
int z = 2;
return;
}
: 로컬변수는 메소드내에서만 사용 가능하다.
: 사용하기전에 반드시 초기값을 지정해야 된다.
: 스택(stack) 메모리에 생성된다.
==> 메소드를 호출할때마다 생성된다.
나. 인스턴스 변수
: 메소드 밖에서 선언
: 객체생성시 생성 ~ 객체소멸시 제거
: 클래스 블럭내에서 사용 가능하다.
: 자동으로 기본값으로 저장된다.
( 정수: 0 , 실수 : 0.0 , boolean:false,
참조형: null )
: 힙(heap) 메모리에 생성된다.
==> 객체 생성할때마다 매번 생성된다.
* 객체소멸시점
==> 코드에서 객체의 위치를 저장하는 코드가 없으면
객체소멸 대상이 된다.
==> Garbage Collector(GC) 스레드가 제거.
예>
new Employee();
Employee e = new Employee();
e = null;
* null 값
==> 참조형 변수에만 저장 가능.
==> 쓰레기값을 의미한다.
==> 참조형 변수에는 원래 주소값이 저장되어야 한다.
null을 가지면 쓰레기값을 지정하게 된다.
다. static 변수(클래스 변수 )
7. 생성자 ( Constructor )
용도: 인스턴스 변수에 값을 처음 넣어주는 역할
( 초기화 작업 )
: setter 메소드 역할은 수정하는 역할을 한다.
문법:
public 클래스명([인자]){}
특징:
– ‘method-like’
– 리턴타입이 없다.
– 반드시 클래스명으로 이름을 지정한다.
– 호출해야 수행된다.
– 자동으로 생성되는 생성자가 있다.
( 기본생성자: default constructor)
//worker 생성자
public 클래스명(){}
//caller 생성자
new 클래스명();
예>
new Employee(); // 생성자를 호출한다.
new Employee( “홍길동” );
new Employee( “홍길동” , 20 );
8. 오버로딩 생성자 ( overloading Constructor)
문법:
같은 이름으로 된 생성자가 여러개 사용 가능하다.
규칙:
인자 리스트가 달라야 된다.
( 인자갯수, 순서, 타입 )
예>
public Employee(){}
public Employee(int x){}
public Employee(String x){}
public Employee(int a , int b){}
public Employee(String x, int x){}
주의사항:
-사용자가 명시적으로 하나라도 생성자를 만들면
기본생성자는 자동 생성되지 않는다.
– 오버로딩 생성자를 사용하는 경우에는
반드시 인자없는 생성자를 명시적으로 구현하자.
( 상속 )
9. 오버로딩 메소드 ( overloading method )
문법:
같은 이름으로 된 메소드가 여러개 사용 가능하다.
규칙:
인자 리스트가 달라야 된다.
( 인자갯수, 순서, 타입 )
예>
public void a(){}
public int a(){} (X)
public void a(int a){}
public void a(String a){}
public void a(int a , String x){}
====> 재사용을 위해서 사용하는 기법이다.
10. 연산자 ( operator )
가. 산술연산자
+ : 덧셈
– : 뺄셈
* : 곱셈
/ : 나눗셈 ( 몫 )
% : 나머지
나. 비교연산자
==> 결과값은 논리값이다. boolean 변수로 저장한다.
== : 같냐? ==>
> : 크냐?
>= : 크거나 같냐?
< : 작냐?
<= : 작거나 같냐?
!= : 같지 않냐?
다. 대입연산자
a = b ==> b을 a에 대입 ( 저장 )
a += b => a와 b을 더해서 a에 대입
=> a = a + b; 동일
a -= b => a와 b을 빼서 a에 대입
=> a = a – b; 동일
a *= b => a와 b을 곱해서 a에 대입
=> a = a * b; 동일
a /= b => a와 b을 나누어서 몫을 a에 대입
=> a = a / b; 동일
a %= b => a와 b을 나누어서 나머지를 a에 대입
=> a = a % b; 동일
라. 증감 연산자
: 증가 연산자
=> ++
=> 1 씩 증가
예> int n = 3;
++n; // n = n + 1;
n++;
: 감소 연산자
==> —
==> 1씩 감소
예> int n = 3;
–n; // n = n – 1;
n–;
마. 논리 연산자
==> 논리값으로 결과가 나온다.
: && ( and )
: || ( or )
: ! ( not )
* &&
true && true == > true
true && false == > false
false && true ==> false
false && false ==> false
==> ( 2 > 4 ) && ( 5 == 3 )
int num = 2;
int y = 4;
( num > y ) && ( 5 == num )
* ||
true && true == > true
true && false == > true
false && true ==> true
false && false ==> false
* !
! true ==> false
! false ==> true
바. 3항 연산자
문법:
(조건식) ? 값1 : 값2 ;
조건식 => 결과가 boolean으로 나오는 연산자
==> true 이면 값1 선택하고
false 이면 값2 을 선택한다.
사. instanceof
: 키워드
: 연산자
: 참조형 변수의 데이터형을 비교할 때 사용한다.
문법
변수명 instanceof 클래스명 ===>논리값으로 결과출력
예> Empoloyee e= new Employee();
..
..
…
e.xxx;
..
if( e instancof Employee ){}
11.문 (Statement )
가. 실행문
– 순차문
– 제어문
– 분기문(조건문)
: if 문 , if~else문, 다중 if문,
switch 문
– 반복문
: for 문 , while 문, do~while 문
: 빠른 for문
나. 비실행문
– 주석문
12. if문
문법:
if(조건식){
문장;
}
조건식이 true 이면 문장을 실행하고
false 이면 문장을 실행하지 않는다.
예> num의 값이 10 이상이면 실행하고 ….
int num = 4;
if( num >= 10 ) System.out.println(“num이 10이상”);
if( 조건식 ){
문장;
문장2;
}
* 블럭
: 변수
: 변수의 생명주기가 가장 가까운 블럭으로 제한된다.
13. if~else 문
문법:
if(조건식){ // if절
문장1;
}else{ // else절
문장2;
}
==> 조건식이 true 이면 문장1을 수행하고
false 이면 문장2을 수행한다.
if(조건식){
문장1;
문장11;
}else{
문장2;
문장22;
}
14. 다중 if 문
문법:
if (조건식){
문장1;
}else if( 조건식2 ){
문장2;
}else if( 조건식3 ){
문장3;
}else{
문장4;
}
문장5;
예> 학점 구하기
90이상 : A 학점
80~89 : B 학점
70~79 : C 학점
나머지 : F 학점
int num =
//다중 if문 작성하기
15. switch 문
문법: 값으로 지정가능한 데이터형은 4가지가 가능하다.
( byte, short ,int , char )
switch(값){
case 값1: 문장1; break;
case 값2: 문장2; break;
case 값3: 문장3; break;
default: 문장4;
}
==> 값과 일치하는 case 의 문장을 실행한다.
==> break 문을 만나면 switch 블럭을 빠져나온다.