| 클래스변수, 인스턴스변수 //속성
cv iv
객체마다 다르게 유지되어야 함 iv
모든 객체공통 cv //static+
Card c = new Card();
c.kind = "HEART"; //iv
c.number = 5;
Card.width = 200; //cv 클래스이름을 앞에, 참조변수도 작동은 함
Card.height = 300;
*flash동영상 MemberVar 따라서 그려보기
| 메서드란? 메서드의 선언부와 구현부
메서드 { } - 작업단위
코드의 중복은 제거필요, 관리쉬움, 재사용, 간결
메서드는 클래스 안에 있어야 하고, 함수는 독립적
한 가지 기능만 수행하도록 작성하는게 좋음
int add (int a, int b) //선언부, 반환타입 int
{ //구현부
int result = a + b;
return result;
}
반환할 것이 없을 때, 반환타입 void
//매개변수 a, b && result → 지역변수 lv
이름이 겹쳐도 상관없음, 매서드 내에서만 적용되므로
| 매서드의 호출, 매서드의 실행흐름
호출: 매서드이름( ); //void print99danAll( ) 호출시
int result = add (3, 5);
class MyMath {
long add (long a, long b) { //(1)
long result = a + b;
return result;
}
long add(long a, long b) { return a + b; } //(2)
//(1)과 (2) 표현이 동일한 값
a > b ? a : b;
//a>b이면, a 반환, 아니면 b
//간단하게 if-else 구문 대신 사용, 삼항연산자
//값을 저장하는 변수(result)없이도 호출가능하나 주소에 저장하지 못함, 호출만 가능
1. 객체생성
2. 메서드 호출
3. 매서드 모든 문장 실행되거나, return문에서 호출 메서드로 돌아가서 이후 문장들을 실행
| return문, 반환값
void printGugudan(int dan) {
if(!(2 <= dan && dan <= 9))
return;
for(int i=1; i<=9; i++) {
System.out.printf( "%d * %d = %d%n", dan, i, dan*i );
return; //반환타입이 void이므로 생략가능. 컴파일러가 자동추가
}
//그 외의 경우, 참/거짓 모두의 return문 작성필요
//반환타입도 일치시켜야 함
| 호출스택 call stack
싱글쓰레드에서는 하나의 메서드만 실행중이고, 다른 것은 대기
//단계별로 그려보기
| 기본형 매개변수
기본형 매개변수 - 변수의 값을 읽기만 할 수 있다
참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다
*flash동영상 PrimitiveParam, ReferenceParam
public static void main(String[] args) {
Date d = new Date();
d.x = 10; //참조변수 d가 가리키는 x값이 10이다
System.out.println("main() : x =" +d.x);
change(d.x);
System.out.println("After change(d.x)");
System.out.println("main() : x =" +d.x);
}
static void change(int x) {
x = 1000;
System.out.println("change() : x =" +x);
}
//change의 x와 Date의 x 값이 다르다
| 참조형 매개변수
public static void main(String[] args) {
Date2 d = new Date2();
d.x = 10;
System.out.println("main() : x =" +d.x);
change(d.x);
System.out.println("After change(d.x)");
System.out.println("main() : x =" +d.x);
}
static void change(Date2 d) { //참조형 매개변수, main메서드의 지역변수 d값을 change에 복사
d.x = 1000;
System.out.println("change() : x =" +d.x);
}
참조형 반환타입
public static void main(String[] args) {
Data3 d = new Data3();
d.x = 10;
Data3 d2 = copy(d); //참조변수 없어도 된다, static메서드이기 때문
System.out.println("d.x ="+d.x);
System.out.println("d2.x"+d2.x);
}
static Data3 copy(Data3 d) {
Data3 tmp = new Data3();
tmp.x = d.x;
return tmp; //참조형 tmp 객체의 주소를 반환
}
//객체의 주소를 주고받음
*그림 그려보기
| static 메서드와 인스턴트 메서드
1. static 메서드 = 클래스 메서드
객체생성 없이 '클래스 이름.메서드이름()'으로 호출
메서드 내 인스턴스 변수(iv) 사용불가
Math.ramdom( ), Math.round( )
2. 인스턴트 메서드
인스턴스 생성 후, '참조변수.메서드이름()'으로 호출
메서드 내 인스턴스 변수 사용가능
iv, im
class MyMath2 {
long a, b; //iv 인스턴스 변수, iv
long add ( ) { //인스턴스 메서드, iv 사용으로 매개변수 없음
return a + b;
}
static long add(long a, long b) { //클래스 메서드(static 메서드), 매개변수, lv
return a + b;
}
}
System.out.println(MyMath2.add(200L, 100L); //클래스 메서드 호출, 객체(iv묶음)가 필요없음
MyMath2 mm = new MyMath2 ( ); //인스턴스 메서드 호출, 객체생성 필요
mm.a = 200;
mm.b = 100;
System.out.println(mm.add( ));
static
1. 공통 속성에 붙인다
2. 인스턴스 멤버를 사용하지 않는 메서드에 붙인다
'Java' 카테고리의 다른 글
13 [인강] 자바의정석 ch07 (0) | 2020.12.21 |
---|---|
12 [인강] 자바의정석 ch06 (0) | 2020.12.21 |
10 [인강] 자바의정석 ch06 (0) | 2020.12.17 |
9 [인강] 자바의정석 ch05 (0) | 2020.12.16 |
8 [인강] 자바의정석 ch05 (0) | 2020.12.16 |
- EC2
- SQLD
- gradle build
- JIRA
- 실용주의프로그래머
- 정보처리기사
- 개발도서
- IT 5분 잡학사전
- 배포
- 북클럽
- jdbc
- 호스팅영역
- 오늘의코딩
- 정보처리기사 필기
- 기술블로그
- LifecycleException
- ubuntu
- 정보처리기사 실기
- AWS
- git연동
- spring
- 독서후기
- putty
- java
- gradle
- 웹페이지만들기
- 노개북
- filezila
- intellij
- 노마드코더
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |