java #8 #9 변수/메소드, 접근지정자
* 변수 (variable)
static 변수 (class 변수) | - 클래스의 필드에 선언하는 변수 - 메모리에 가장 먼저 올라감 - 자동초기화 : 실행시 jvm이 초기 값을 자동으로 넣어줌. * 부여되는 초기값
* 접근지정자
※ 파란글자(1,2,3,4) = 클래스 외부 사용여부 지정, 4개 중 1개만 사용 가능 5,6,7 = 여러개 사용 가능. - 클래스가 실행되면 가장 처음 메모리에 올라간다. - 하나의 변수를 객체들이 공유하여 사용 - 메모리를 절약할 수 있고 참조하는 속도가 빠르다. - 사용하지 않아도 메모리에 올라가기 때문에 메모리의 낭비로 이어질 수 있다. - 특정 instance(객체)에 속해있는 변수가 아니다.
| ||||||||||||||||||||||||||||||||||||||||||
instance 변수 (member 변수) | - class field에 정의하는 변수 - class를 객체로 만들어야(객체화, instance화) 메모리 올라가는 변수 - 생성하는 객체마다 메모리에 올라간다. - 자동초기화가 된다. - 객체명.변수명으로 사용한다. - static 영역에서 인스턴스변수를 직접 사용할 수 없고 객체화를 하여 사용한다.
일때,
|
* 메소드
- 자주 사용될 코드를 미리 정의해두고 필요한 곳에서 호출하여 그 기능을 사용하기 위해서 존재
- instance method와 static method가 존재
instance method | static method | |
객체화 | 객체화 후 사용 | 필요 없음 |
실행법 | 객체명.메서드명() | 클래스명.메서드명() |
* 메소드 정의 방법 : 접근지정자 반환형 메서드명(매개변수...) {
- 접근지정자 종류
public 클래스 외부에 호출가능 protected 동일 패키지의 다른 클래스에서 사용 가능. 패키지가 다르면 자식클래스만 사용 가능 private 정의된 클래스 안에서만 호출 가능 default 동일 패키지의 다른 클래스에서 호출 가능 static static method synchronized 동기화 처리(multi thread에서 동시 호출 막기)
- 반환형 : 메서드를 호출했을때 반환할 값을 내보내기 위해 정의(아래 셋 중 하나만 사용 가능)
void 반환값 없음 기본형 byte, short, int, long, char, float, double, boolean 참조형 string, class, array
- 매개변수 : 메서드 밖의 값을 메서드 안에 넣기 위해서(복수 지정 가능)
* 메소드의 형태
반환형 | 매개변수 | 기능 | 호출 | ||||||
x | x | - 항상 같은 일을 한다. 인스턴스 메소드.
| 메소드명(); - ex> test(); | ||||||
x | o | - 가변적, 동적인 일을 한다.
| 메소드명(값,...); - 메소드의 파라메터와 일치하는 값을 넣어야 함 - ex> test(10,'A'); | ||||||
o | x | - 메소드를 고정된 값으로 사용할 때
| 메소드명(); - ex> int i = test(); | ||||||
o | o | - 메소드를 동적인 값으로 사용 - 가장 마지막줄에 반드시 return 값; 을 기술해야함 - parameter와 return이 같을 필요는 없음
| 메소드명(값); - 매개변수의 형에 주의하며 호출 - ex> int i = test('A'); | ||||||
? | o (인자 의 갯 수 에 상 관없음) | Variable Arguments
| - 동일형으로만 넣어주면 몇개든 입력 가능 - ex> 아래 모두 가능. test(); test(10); test(1,2,3,4,5...); |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package day0213; /** * 정의할 수 있는 메소드의 형태와 호출법 * * @author SiSt */ public class MethodType { public void typeA() { // 반환형 없고 매개변수 없는 형 : 호출하면 항상 같은일을 하게 된다. System.out.println("안녕"); }// typeA // 반환형 없고 매개변수 있는 형 // 호출시 입력되는 인자값에 따라 다른 일을 한다. (가변적인 일) public void typeB(int cnt) { for (int i = 0; i < cnt; i++) { System.out.print("★"); }// end for }// typeB // ------------------값으로 사용하는 메서드-------------------- // 가장 마지막줄에 반드시 // return값(반환형과 동일한 데이터형); 을 기술해야 함 // 반환형 있고 매개변수 없는 형 : 고정값으로 사용 public int typeC() { int i = 100; return 10; // 가장 마지막줄에 반드시 return이 있어야 함. return 타입이 int 이므로 반드시 정수형의 값을 // 반 }// typeC // 가변값으로 사용되는 메소드 // 입력되는 값에 따라서 다른 값을 반환한다. public int typeD(double d) { return (int) d; }// type D public static void main(String[] args) { // typeA(); //메모리에 먼저 올라가는 static에서는 instance메소드를 직접 사용할 수 없다. 객체화 필요. MethodType mt = new MethodType(); mt.typeA();// 호출하면 항상 같은일을 한다. for (int i = 0; i < 5; i++) { mt.typeB(i);// 가변적인 일 System.out.println(); }// end for // 값으로 사용하는 메소드 int i = mt.typeC(); System.out.println("고정값 " + i + " / " + (10 + mt.typeC())); // 가변값으로 사용하는 메소드 int j = mt.typeD(9.5); System.out.println("가변값 " + j + " / " + (10 + mt.typeD(3.1))); }// main }// class |
'컴퓨터 관련 > JAVA 강의' 카테고리의 다른 글
java #11 객체지향프로그래밍 (0) | 2016.12.18 |
---|---|
java #10 특수문자, variable arguments, printf (0) | 2016.12.18 |
java #7 문자열 비교(equals), Arguments (0) | 2016.12.18 |
java #6 패키지 (0) | 2016.12.18 |
java #5 BinaryString/Arguments/parseInt/제어문 (0) | 2016.12.18 |