티스토리 뷰
두 점 거리계산하기를 예로 들어 인스턴스 메서드와 static 메서드 비교하기
*staic 메서드
1
2
3
4
5
6
7
8
9
10 |
public class Main {
// (x,y) (x1,y1) . 두 점 와 간의 거리를 구한다
static double getDistance(int x, int y, int x1, int y1) {
return Math.sqrt((x-x1)*(x-x1) + (y-y1)*(y-y1)); // x, y는 지역변수
}
public static void main(String args[]) {
System.out.println(getDistance(1,1,2,2));
}
}
|
cs |
- static 메서드는 메서드 내에서 인스턴트 변수를 사용하지 않는다.
- 인스턴스와 관계가 없으므로 static으로 선언 가능하다.
- 객체를 생성하지 않고 호출이 가능하다.
- 메서드 내에서 인스턴트 변수를 사용하지 않는다면 static을 붙이는게 좋다.
- 모든 인스턴스에서 공통적인 값을 가져야하는 경우, static 변수를 선언하는 것이 좋다.
ex) 마린의 hp와 위치(x,y)는 인스턴스마다 다르므로 인스턴스 변수로, 공격력(weapon)과 방어력(amor)는 인스턴스마다 동일해야하므로 static으로 선언.
ex)
class marine{
int x = 0; int y =0;
int hp = 50;
static int weapon = 6;
static int armor = 0;
}
*인스턴트 메서드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
class MyPoint{
int x;
int y;
MyPoint(int x, int y){
this.x=x;
this.y=y;
}
double getDistance(int xl, int yl){ //인스턴스 메서드
/*인스턴스 변수 x,y를 사용하기 때문에 xl,yl만 받으면 된다.*/
return Math.sqrt((x-xl)*(x-xl) + (y-yl)*(y-yl));
}
}
public class Prac {
public static void main(String[] args) {
MyPoint p = new MyPoint(1,1)
System.out.println(p.getDistance(2,2));
}
} |
cs |
- 위 getDistance는 인스턴트 메서드로, 인스턴스 변수를 사용해서 xl과 yl만 받아오면 된다.
- 인스턴스 메서드는 객체를 생성한 뒤 사용 할 수 있다. (사용법 : 참조.메서드(매개변수))
- 인스턴스와 관련이 있으면 static을 사용 할 수 없다.
static메서드의 사용
System.out.println(Exercise6_6.getDistance(1,1,2,2));
인스턴스 메서드의 사용
MyPoint p = new MyPoint(1,1);
System.out.println(p.getDistance(2,2));
변수 구분하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
class PlayingCard {
int kind;
int num;
static int width;
static int height;
PlayingCard(int k, int n) {
kind = k;
num = n;
}
public static void main(String args[]) {
PlayingCard card = new PlayingCard(1,1);
}
}
|
cs |
클래스 변수(static 변수) : width, height
인스턴스 변수 : kind, num
지역 변수 : k, n, card, args
변수가 선언된 위치를 보면 변수의 종류를 알 수 있다. 클래스 블럭{ } 내에 선언된 변수는 인스턴스 변수이고, static이 붙은 것은 staic 변수(클래스 변수)이다 그리고 나머지는 모두 지역변수이다.
참고 url : http://codechobo.tistory.com/1
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
※
'JAVA' 카테고리의 다른 글
[JAVA]상황별 알아두면 좋은 JAVA 코드 작성법(계속 수정) (0) | 2018.02.07 |
---|---|
[JAVA]배열 섞기, this 활용 (0) | 2018.02.07 |
- Total
- Today
- Yesterday
- 파이썬 if문
- 버츄어박스
- 명품 c++ 실습
- 백준
- 자바 에센셜 실습문제
- 자료구조
- css
- 파이썬 클래스
- 파이썬
- 백준 11501
- 자바스크립트 자료구조
- 백준 1874
- 웹
- 백준 10451
- 파이썬 while
- 파이썬 객체
- 파이썬 함수
- css 그리드
- 파이썬 연산자
- 파이썬 단계적 개선
- 파이썬 문자열
- css 박스
- 파이썬 예제
- 파이썬 for
- 파이썬 터틀
- 자바스크립트 그래프
- 자바
- 파이썬 리스트
- 파이썬 선택문
- 파이썬 진수 변환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |