리뷰.
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 블럭을 빠져나온다.
학습 목표와 짧은 확인 예제
앞부분은 링크된 학습 자료를 참고한 기초 정리이며, 아래는 개념을 확인하기 위한 보충 설명입니다. 클래스는 객체의 상태와 동작을 정의하고 변수는 값을 저장하며 메서드는 동작을 표현합니다. 이름 짓기의 관례와 문법상 허용 조건은 구분해서 학습하세요.
class Counter {
private int value;
void increment() { value++; }
int getValue() { return value; }
}
// 메서드 안에서 실행
Counter counter = new Counter();
counter.increment();
System.out.println(counter.getValue()); // 1
직접 확인할 것: 서로 다른 Counter 객체를 두 개 만들면 값이 독립적인지, private 필드를 외부에서 직접 접근할 수 있는지 살펴봅니다. 기존 메모의 switch 지원 타입 목록은 최신 Java 전체 규칙이 아닙니다. 사용하는 JDK의 enum·String·패턴 매칭 지원을 별도로 확인하세요. Java 클래스와 객체 학습 문서.
생성자와 반복문으로 이어지는 학습은 자바(java) 기초 3편.에서 이어집니다.